From f0d218ab7d41dce529e7db221e5ddf64ebaf2f44 Mon Sep 17 00:00:00 2001 From: Jimmy Fan Date: Mon, 27 Feb 2017 20:46:03 +0800 Subject: [PATCH 01/11] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=BA=86Level1=201~6?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + .../p01_runningLetter/p01_runningLetter.c | 38 +++++++++++ practices/c/level1/p02_isPrime/p02_isPrime.c | 18 ++++++ .../c/level1/p03_Diophantus/p03_Diophantus.c | 15 +++++ .../c/level1/p04_ narcissus/p04_narcissus.c | 21 ++++++ .../c/level1/p05_allPrimes/p05_allPrimes.c | 24 +++++++ .../c/level1/p06_Goldbach/p06_Goldbach.c | 64 +++++++++++++++++++ 7 files changed, 181 insertions(+) create mode 100644 practices/c/level1/p01_runningLetter/p01_runningLetter.c create mode 100644 practices/c/level1/p02_isPrime/p02_isPrime.c create mode 100644 practices/c/level1/p03_Diophantus/p03_Diophantus.c create mode 100644 practices/c/level1/p04_ narcissus/p04_narcissus.c create mode 100644 practices/c/level1/p05_allPrimes/p05_allPrimes.c create mode 100644 practices/c/level1/p06_Goldbach/p06_Goldbach.c diff --git a/.gitignore b/.gitignore index 6f1c26fe..9cf7efa2 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ slides/.idea +*.DS_Store diff --git a/practices/c/level1/p01_runningLetter/p01_runningLetter.c b/practices/c/level1/p01_runningLetter/p01_runningLetter.c new file mode 100644 index 00000000..7126073a --- /dev/null +++ b/practices/c/level1/p01_runningLetter/p01_runningLetter.c @@ -0,0 +1,38 @@ +#include +#include +#include +#include +#define N 20 + +char ch[N]; + +void runLetter(int n) { + system("clear"); + for (int i = 0; i < n; i++) { + printf(" "); + } + puts(ch); + usleep(50000); +} + +int checkRight(int t) { + return t <= 80 - strlen(ch); +} + +int checkLeft(int t) { + return t >= 0; +} + +int main() { + printf("Input the word or letter:\n"); + gets(ch); + while (1) { + int t = 0; + while (checkRight(t)) { + runLetter(t++); + } + while (checkLeft(--t)) { + runLetter(t); + } + } +} diff --git a/practices/c/level1/p02_isPrime/p02_isPrime.c b/practices/c/level1/p02_isPrime/p02_isPrime.c new file mode 100644 index 00000000..c002390c --- /dev/null +++ b/practices/c/level1/p02_isPrime/p02_isPrime.c @@ -0,0 +1,18 @@ +#include +#include + +int isPrime(int n) { + if (n == 1) return 0; + for (int i = 2; i <= sqrt(n); i++) { + if (n % i == 0) return 0; + } + return 1; +} + +int main () { + int n; + scanf("%d",&n); + if (isPrime(n)) printf("Yes!"); + else printf("No!"); + return 0; +} diff --git a/practices/c/level1/p03_Diophantus/p03_Diophantus.c b/practices/c/level1/p03_Diophantus/p03_Diophantus.c new file mode 100644 index 00000000..1b563b3f --- /dev/null +++ b/practices/c/level1/p03_Diophantus/p03_Diophantus.c @@ -0,0 +1,15 @@ +#include + +int check(int n) { + if (n%6 != 0 || n%12 != 0 || n%7 !=0) return 0; + int x = n/6 + n/12 + n/7 + 5; + int ageSon = n - x - 4; + return n == ageSon * 2; +} + +int main() { + for (int i = 1; i <= 1000; i++) { + if (check(i)) printf("%d ",i - 4); + } + return 0; +} diff --git a/practices/c/level1/p04_ narcissus/p04_narcissus.c b/practices/c/level1/p04_ narcissus/p04_narcissus.c new file mode 100644 index 00000000..716e5b09 --- /dev/null +++ b/practices/c/level1/p04_ narcissus/p04_narcissus.c @@ -0,0 +1,21 @@ +#include + +int Power(int x) { + return x*x*x; +} + +int narcissusChange(int n) { + int ans = 0; + while (n) { + ans += Power(n%10); + n = n/10; + } + return ans; +} + +int main() { + for (int i = 100; i < 1000; i++) { + if (i == narcissusChange(i)) printf("%d\t",i); + } + return 0; +} diff --git a/practices/c/level1/p05_allPrimes/p05_allPrimes.c b/practices/c/level1/p05_allPrimes/p05_allPrimes.c new file mode 100644 index 00000000..5da99c36 --- /dev/null +++ b/practices/c/level1/p05_allPrimes/p05_allPrimes.c @@ -0,0 +1,24 @@ +#include +#include +#define N 1001 + +int isPrime[N]; + +void init() { + memset(isPrime,1,sizeof(isPrime)); + for (int i = 2; i < N; i++) { + if (isPrime[i]) { + for (int j = 2; i*j < N; j++) { + isPrime[i*j] = 0; + } + } + } +} + +int main() { + init(); + for (int i = 2; i < N; i++) { + if (isPrime[i]) printf("%d\t",i); + } + return 0; +} diff --git a/practices/c/level1/p06_Goldbach/p06_Goldbach.c b/practices/c/level1/p06_Goldbach/p06_Goldbach.c new file mode 100644 index 00000000..5206debe --- /dev/null +++ b/practices/c/level1/p06_Goldbach/p06_Goldbach.c @@ -0,0 +1,64 @@ +#include +#include +#define N 101 + +int primes[20]; +int numberOfPrimes; +struct data { + int a,b,c; +}a[N]; + +int isPrime(int x) { + for (int i = 2; i <= sqrt(x); i++) { + if (x%i == 0) return 0; + } + return 1; +} + +void init() { + numberOfPrimes = 0; + for (int i = 3; i < 100; i++) { + if (isPrime(i)) { + primes[numberOfPrimes++] = i; + } + } +} + +int main() { + init(); + for (int i = 0; i < numberOfPrimes; i++) { + for (int j = i; j < numberOfPrimes; j++) { + int k = primes[i] + primes[j]; + if (k > 100) { + break; + } + a[k].a = primes[i]; + a[k].b = primes[j]; + } + } + + for (int i = 0; i < numberOfPrimes; i++) { + for (int j = i; j < numberOfPrimes; j++) { + for (int k = j; k < numberOfPrimes; k++) { + int x = primes[i] + primes[j] + primes[k]; + if (x > 100) { + break; + } + a[x].a = primes[i]; + a[x].b = primes[j]; + a[x].c = primes[k]; + } + } + } + + printf("不小于6的偶数都是两个素数之和:\n"); + for (int i = 6; i <= 100; i+=2) { + printf("%d = %d + %d\n",i,a[i].a,a[i].b); + } + printf("不小于9的偶数都是三个素数之和:\n"); + for (int i = 9; i < 100; i+=2) { + printf("%d = %d + %d + %d\n",i,a[i].a,a[i].b,a[i].c); + } + return 0; +} + From 58dd98a30d7391de23554c75ced48751b0ecf5a0 Mon Sep 17 00:00:00 2001 From: Jimmy Fan Date: Thu, 16 Mar 2017 10:55:43 +0800 Subject: [PATCH 02/11] =?UTF-8?q?=E5=AE=8C=E6=88=90Level01=E6=89=80?= =?UTF-8?q?=E6=9C=89=E7=BB=83=E4=B9=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../p07_encrypt_decrypt/p07_encrypt_decrypt.c | 101 ++++++++ practices/c/level1/p08_hanoi/p08_hanoi.c | 25 ++ practices/c/level1/p09_maze/p09_maze.c | 129 ++++++++++ .../c/level1/p10_pushBoxes/p10_pushBoxes.c | 226 ++++++++++++++++++ .../c/level1/p11_linkedList/p11_linkedList.c | 119 +++++++++ .../c/level1/p12_warehouse/p12_warehouse.c | 165 +++++++++++++ 6 files changed, 765 insertions(+) create mode 100644 practices/c/level1/p07_encrypt_decrypt/p07_encrypt_decrypt.c create mode 100644 practices/c/level1/p08_hanoi/p08_hanoi.c create mode 100644 practices/c/level1/p09_maze/p09_maze.c create mode 100644 practices/c/level1/p10_pushBoxes/p10_pushBoxes.c create mode 100644 practices/c/level1/p11_linkedList/p11_linkedList.c create mode 100644 practices/c/level1/p12_warehouse/p12_warehouse.c diff --git a/practices/c/level1/p07_encrypt_decrypt/p07_encrypt_decrypt.c b/practices/c/level1/p07_encrypt_decrypt/p07_encrypt_decrypt.c new file mode 100644 index 00000000..cd3daac9 --- /dev/null +++ b/practices/c/level1/p07_encrypt_decrypt/p07_encrypt_decrypt.c @@ -0,0 +1,101 @@ +//丑陋的加密算法 +//只考虑了大小写字母与数字 +//加密只能通过改变Hash值改变 +//总之这个算法特别蠢就是了 + +#include +#include +#define Hash 10007 +#define N 100 + +int enIntoDe[62]; +int deIntoEn[62]; +char ch[N]; + +char numToChar(int x) { + if (x < 10) return (char)(48+x); + if (x < 36) return (char)(55+x); + return (char)(61+x); +} + +char enToDe(char c) { + if ((int)(c) > 47 && (int)(c) < 58) { + return numToChar(enIntoDe[(int)(c) - 48]); + } + if ((int)(c) > 64 && (int)(c) < 91) { + return numToChar(enIntoDe[(int)(c) - 55]); + } + return numToChar(enIntoDe[(int)(c) - 61]); +} + +char deToEn(char c) { + if ((int)(c) > 47 && (int)(c) < 58) { + return numToChar(deIntoEn[(int)(c) - 48]); + } + if ((int)(c) > 64 && (int)(c) < 91) { + return numToChar(deIntoEn[(int)(c) - 55]); + } + return numToChar(deIntoEn[(int)(c) - 61]); +} + +void encrypt() { + printf("输入需要加密的字符串:\n"); + scanf("%s",&ch); + for (int i = 0; i < strlen(ch); i++) { + ch[i] = enToDe(ch[i]); + } + printf("加密后的字符串为:%s\n",ch); +} + +void decrypt() { + printf("输入需要解密的字符串:\n"); + scanf("%s",&ch); + for (int i = 0; i < strlen(ch); i++) { + ch[i] = deToEn(ch[i]); + } + printf("解密后的字符串为:%s\n",ch); +} + +void init() { + memset(enIntoDe,-1,sizeof(enIntoDe)); + memset(deIntoEn,-1,sizeof(deIntoEn)); + for (int i = 0; i < 62; i++) { + int x = (i * Hash) % 62; + if (deIntoEn[x] == -1) { + enIntoDe[i] = x; + deIntoEn[x] = i; + } + } + for (int i = 0; i < 62; i++) { + if (enIntoDe[i] == -1) { + for (int j = 0; j < 62; j++) { + if (deIntoEn[j] == -1) { + enIntoDe[i] = j; + deIntoEn[j] = i; + break; + } + } + } + } +} + +int main() { + init(); + while (1) { + int k; + printf("输入要进行的操作序号,1:加密,2:解密,3:退出 : "); + scanf("%d",&k); + if (k == 1) { + encrypt(); + continue; + } + if (k == 2) { + decrypt(); + continue; + } + if (k == 3) { + break; + } + } + return 0; +} diff --git a/practices/c/level1/p08_hanoi/p08_hanoi.c b/practices/c/level1/p08_hanoi/p08_hanoi.c new file mode 100644 index 00000000..0347a39b --- /dev/null +++ b/practices/c/level1/p08_hanoi/p08_hanoi.c @@ -0,0 +1,25 @@ +#include + +int tot = 0; + +void printMove(int x, char A, char B) { + printf("%d: %d %c -> %c\n",++tot, x, A, B); +} + +void hanoi(int x,char A, char B, char C) { + if (x == 1) { + printMove(x, A, C); + } + else { + hanoi(x - 1, A, C, B); + printMove(x, A, C); + hanoi(x - 1, B, A, C); + } +} + +int main() { + int n; + scanf("%d",&n); + hanoi(n, 'A', 'B', 'C'); + return 0; +} diff --git a/practices/c/level1/p09_maze/p09_maze.c b/practices/c/level1/p09_maze/p09_maze.c new file mode 100644 index 00000000..d4d838db --- /dev/null +++ b/practices/c/level1/p09_maze/p09_maze.c @@ -0,0 +1,129 @@ +#include +#include +#include +#define N 8 + +// *表示迷宫边框 +// &表示出口 +// Y表示人物 + +int check(int x,int y); +void mapPut(); +void getDestination(); +void mazeMove(int k); +void init(); + +char mazeMap[N][N]; +int dx[4] = {1,-1,0,0}; +int dy[4] = {0,0,-1,1}; +int x,y; +int destinationX,destinationY; +int isGet = 0; + +int main() { + init(); + +// down 258 +// up 259 +// left 260 +// right 261 + + while (!isGet) { + int k = getch() - 258; + mazeMove(k); + } + + getch(); + endwin(); + return 0; +} + +int check(int x,int y) { + if (x < 0 || x >= N || y < 0 || y >= N) return 0; + if (x == destinationX && y == destinationY) return 2; + if (mazeMap[x][y] == '*') return 0; + return 1; +} + +void mapPut() { + clear(); + for (int i = 0; i < N; i++) { + for (int j = 0; j < N; j++) { + move(i,j); + addch(mazeMap[i][j]); + } + } + refresh(); +} + +void getDestination() { + clear(); + char ch[] = {"Congratulations!!!"}; + addstr(ch); + refresh(); + isGet = 1; +} + +void mazeMove(int k) { + int xx = x + dx[k]; + int yy = y + dy[k]; + int flag = check(xx,yy); + if (flag == 2) { + getDestination(); + return; + } + if (flag == 0) return; + mazeMap[x][y] = ' '; + x += dx[k]; + y += dy[k]; + mazeMap[x][y] = 'Y'; + mapPut(); +} + +void init() { + FILE *file; + initscr(); + file = fopen("mazeMap","r"); + for (int i = 0; i < N; i++) { + int end = 0; + for (int j = 0; j < N; j++) { + mazeMap[i][j] = getc(file); + if (mazeMap[i][j] == '\n') { + end = 1; + break; + } + } + if (end) { + int x = N - strlen(mazeMap[i]) + 1; + for (int j = N - x - 1; j >= 0; j--) { + mazeMap[i][j + x] = mazeMap[i][j]; + } + for (int j = 0; j < x; j++) { + mazeMap[i][j] = ' '; + } + } + else { + fscanf(file,"\n"); + } + } + + for (int i = 0; i < N; i++) { + for (int j = 0; j < N; j++) { + if (mazeMap[i][j] == 'Y') { + x = i; + y = j; + } + if (mazeMap[i][j] == '&') { + destinationX = i; + destinationY = j; + } + } + } + + + fclose(file); + keypad(stdscr,true); + noecho(); + + mapPut(); +} diff --git a/practices/c/level1/p10_pushBoxes/p10_pushBoxes.c b/practices/c/level1/p10_pushBoxes/p10_pushBoxes.c new file mode 100644 index 00000000..9bf5b01b --- /dev/null +++ b/practices/c/level1/p10_pushBoxes/p10_pushBoxes.c @@ -0,0 +1,226 @@ +#include +#include +#include +#define N 8 +#define M 20 + +// *表示地图边框 +// Y表示人物 +// #表示箱子 +// O表示目标位置 +// @表示箱子到达目标位置 + +void mapPut(); +void init(); +int check(int x,int y); +void xyMove(int xx,int yy); +int checkBox(int l,int k); +void boxMove(int k); +void restart(); + +struct box { + int x,y; + int getDestination; +}boxes[M]; +struct destination { + int x,y; + int covered; +}des[M]; + +char boxMap[N][N]; +int dx[4] = {1,-1,0,0}; +int dy[4] = {0,0,-1,1}; +int x,y; +int numBox = 0; +int numDes = 0; +int step = 0; +int isFinish = 0; + +int main() { + init(); + + while (!isFinish) { + int k = getch() - 258; + if (k == -231) { + restart(); + } + boxMove(k); + } + clear(); + printw("Congratulation! You use %d steps!",step); + refresh(); + getch(); + endwin(); + return 0; +} + +void mapPut() { + clear(); + for (int i = 0; i < N; i++) { + for (int j = 0; j < N; j++) { + move(i,j); + addch(boxMap[i][j]); + } + } + move(x,y); + addch('Y'); + for (int i = 0; i < numBox; i++) { + move(boxes[i].x,boxes[i].y); + addch(boxes[i].getDestination?'@':'#'); + } + isFinish = 1; + for (int i = 0; i < numDes; i++) { + move(des[i].x,des[i].y); + if (!des[i].covered) { + addch('O'); + isFinish = 0; + } + } + move(N,0); + printw("Step = %d",step); + refresh(); +} + +void init() { + initscr(); + FILE *file; + file = fopen("boxMap","r"); + for (int i = 0; i < N; i++) { + int end = 0; + for (int j = 0; j < N; j++) { + boxMap[i][j] = getc(file); + if (boxMap[i][j] == '\n') { + end = 1; + break; + } + } + if (end) { + int x = N - strlen(boxMap[i]) + 1; + for (int j = N - x - 1; j >= 0; j--) { + boxMap[i][j + x] = boxMap[i][j]; + } + for (int j = 0; j < x; j++) { + boxMap[i][j] = ' '; + } + } + else { + fscanf(file,"\n"); + } + } + + for (int i = 0; i < N; i++) { + for (int j = 0; j < N; j++) { + if (boxMap[i][j] == 'Y') { + x = i; + y = j; + boxMap[i][j] = ' '; + } + if (boxMap[i][j] == '#') { + boxes[numBox].x = i; + boxes[numBox].y = j; + boxes[numBox++].getDestination = 0; + boxMap[i][j] = ' '; + } + if (boxMap[i][j] == 'O') { + des[numDes].x = i; + des[numDes].y = j; + des[numDes++].covered = 0; + boxMap[i][j] = ' '; + } + } + } + + fclose(file); + keypad(stdscr,true); + noecho(); + mapPut(); +} + +int check(int x,int y) { + if (x < 0 || x >= N || y < 0 || y >= N) return 0; + if (boxMap[x][y] == '*') return 0; + return 1; +} + +void xyMove(int xx,int yy) { + for (int i = 0; i < numDes; i++) { + if (des[i].x == xx && des[i].y == yy) { + des[i].covered = 1; + } + if (des[i].x == x && des[i].y == y) { + des[i].covered = 0; + } + } + x = xx; y = yy; + step++; +} + +int checkBox(int l,int k) { + int xx = boxes[l].x + dx[k]; + int yy = boxes[l].y + dy[k]; + if (xx < 0 || xx >= N || yy < 0 || yy >= N) return 0; + if (boxMap[xx][yy] == '*') return 0; + for (int i = 0; i < numBox; i++) { + if (xx == boxes[i].x && yy == boxes[i].y) { + return 0; + } + } + for (int i = 0; i < numDes; i++) { + if (xx == des[i].x && yy == des[i].y && !des[i].covered) { + return 2; + } + } + return 1; +} + +void boxMove(int k) { + int xx = x + dx[k]; + int yy = y + dy[k]; + + int isBox = 0; + int boxIndex; + for (int i = 0; i < numBox; i++) { + if (boxes[i].x == xx && boxes[i].y == yy) { + isBox = 1; + boxIndex = i; + break; + } + } + + if (isBox) { + int checkBoxResult = checkBox(boxIndex,k); + if (checkBoxResult == 1) { + if (boxes[boxIndex].getDestination) { + boxes[boxIndex].getDestination = 0; + } + boxes[boxIndex].x += dx[k]; + boxes[boxIndex].y += dy[k]; + xyMove(xx,yy); + } + if (checkBoxResult == 2) { + boxes[boxIndex].x += dx[k]; + boxes[boxIndex].y += dy[k]; + boxes[boxIndex].getDestination = 1; + for (int i = 0; i < numDes; i++) { + if (des[i].x == boxes[boxIndex].x && des[i].y == boxes[boxIndex].y) { + des[i].covered = 1; + } + } + xyMove(xx,yy); + } + } + else { + if (check(xx,yy)) { + xyMove(xx,yy); + } + } + mapPut(); +} + +void restart() { + step = 0; + numBox = 0; numDes = 0; + isFinish = 0; + memset(boxMap,0,sizeof(boxMap)); + init(); +} diff --git a/practices/c/level1/p11_linkedList/p11_linkedList.c b/practices/c/level1/p11_linkedList/p11_linkedList.c new file mode 100644 index 00000000..53006648 --- /dev/null +++ b/practices/c/level1/p11_linkedList/p11_linkedList.c @@ -0,0 +1,119 @@ +#include +#include + +void initList(); +void pushList(int x); +void findList(int x); +void inputValue(); +void reverseList(); +void displayList(); + +struct node { + int value; + struct node *next; +}*pHead,*pNow; + +int main() { + initList(); + inputValue(); + + while (1) { + printf("请输入需要进行的操作编号: \n"); + printf(" 1:遍历该链表\n 2:将链表节点反序\n 3:查找链表元素\n 0:退出\n"); + int k; + scanf("%d",&k); + if (k == 0) break; + if (k == 1) { + displayList(); + continue; + } + if (k == 2) { + reverseList(); + continue; + } + if (k == 3) { + printf("输入要查找的元素:"); + int x; + scanf("%d",&x); + findList(x); + continue; + } + } + return 0; +} + +void initList() { + pHead = (struct node *)malloc(sizeof(struct node)); + pHead -> next = NULL; + pNow = (struct node *)malloc(sizeof(struct node)); + pNow -> next = NULL; +} + +void pushList(int x) { + struct node *p; + p = (struct node *)malloc(sizeof(struct node)); + p -> value = x; + p -> next = NULL; + if (pHead -> next == NULL) { + pHead -> next = p; + pNow = p; + return; + } + pNow -> next = p; + pNow = p; +} + +void findList(int x) { + int k = 1; + int find = 0; + struct node *p; + p = pHead -> next; + while (p != NULL) { + if (p -> value == x) { + find = 1; + printf("%d ",k); + } + p = p -> next; + k++; + } + if (!find) { + printf("-1"); + } + printf("\n"); +} + +void displayList() { + struct node *p; + p = pHead -> next; + while (p != NULL) { + printf("%d ",p -> value); + p = p -> next; + } + printf("\n"); +} + +void inputValue() { + printf("输入链表元素个数:\n"); + int n; + scanf("%d",&n); + printf("请输入元素:\n"); + int x; + for (int i = 0; i < n; i++) { + scanf("%d",&x); + pushList(x); + } +} + +void reverseList() { + struct node *pPrev, *pNext, *p; + p = pHead -> next; + pNow = p; + pPrev = NULL; + while (p != NULL) { + pNext = p -> next; + p -> next = pPrev; + pPrev = p; + p = pNext; + } + pHead -> next = pPrev; +} diff --git a/practices/c/level1/p12_warehouse/p12_warehouse.c b/practices/c/level1/p12_warehouse/p12_warehouse.c new file mode 100644 index 00000000..26d29256 --- /dev/null +++ b/practices/c/level1/p12_warehouse/p12_warehouse.c @@ -0,0 +1,165 @@ +#include +#include +#include +#define N 10 + +void init(); +void pushList(); +void popList(); +void displayList(); +void quiteProgram(); + +struct node { + char name[N]; + int num; + struct node *next; +}*pHead; + +char name[N]; +int num; +int n = 0; + +int main() { + init(); + while (1) { + printf("\n选择所需功能:\n"); + printf(" 1:显示存货列表\n 2:入库\n 3:出库\n 0:退出程序\n"); + int k; + scanf("%d",&k); + if (k == 0) { + quiteProgram(); + break; + } + if (k == 1) { + displayList(); + continue; + } + if (k == 2) { + printf("输入入库货物名:\n"); + scanf("%s",name); + printf("输入入库货物数量:\n"); + scanf("%d",&num); + pushList(); + continue; + } + if (k == 3) { + printf("输入出库货物名:\n"); + scanf("%s",name); + printf("输入出库货物数量:\n"); + scanf("%d",&num); + popList(); + continue; + } + } + + return 0; +} + +void init() { + pHead = (struct node *)malloc(sizeof(struct node)); + pHead -> next = NULL; + FILE *file; + file = fopen("warehouseDate","r"); + int n; + if (fscanf(file,"%d",&n) != EOF) { + for (int i = 0; i < n; i++) { + fscanf(file,"%s",name); + fscanf(file,"%d",&num); + pushList(); + } + fclose(file); + } +} + +void pushList() { + int find = 0; + struct node *p; + p = pHead -> next; + while (p != NULL) { + if (strcmp(p -> name,name) == 0) { + find = 1; + p -> num += num; + break; + } + p = p -> next; + } + if (!find) { + struct node *q; + q = (struct node *)malloc(sizeof(struct node)); + strcpy(q -> name,name); + q -> num = num; + q -> next = pHead -> next; + pHead -> next = q; + n ++; + } +} + +void popList() { + int find = 0; + int enough = 0; + struct node *p, *pPre; + p = pHead -> next; + pPre = pHead; + while (p != NULL) { + if (strcmp(p -> name,name) == 0) { + find = 1; + if (p -> num < num) { + break; + } + p -> num -= num; + if (p -> num == 0) { + enough = 2; + } + if (p -> num > 0) { + enough = 1; + } + break; + } + pPre = p; + p = p -> next; + } + if (!find) { + printf("未找到名为%s的货物\n",name); + return; + } + if (enough == 0) { + printf("货物数量不足,取出失败\n"); + return; + } + if (enough == 2) { + pPre -> next = p -> next; + free(p); + n --; + } +} + +void displayList() { + struct node *p; + p = pHead -> next; + if (p == NULL) { + printf("当前库存为空\n"); + return; + } + while (p != NULL) { + printf("名称:%s 数量:%d\n",p -> name, p -> num); + p = p -> next; + } +} + +void quiteProgram() { + FILE *file; + file = fopen("warehouseDate","w"); + fprintf(file,"%d\n",n); + struct node *p, *q; + p = pHead -> next; + q = pHead; + free(q); + while (p != NULL) { + fprintf(file,"%s\n",p -> name); + fprintf(file,"%d\n",p -> num); + q = p; + p = p -> next; + free(q); + } +} + From 3e8df180165964884d73eed18685bf8671d8c75f Mon Sep 17 00:00:00 2001 From: Jimmy Fan Date: Thu, 16 Mar 2017 11:03:53 +0800 Subject: [PATCH 03/11] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E4=B8=80?= =?UTF-8?q?=E7=82=B9Bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../p01_runningLetter/p01_runningLetter.c | 35 +++-- practices/c/level1/p02_isPrime/p02_isPrime.c | 16 +- .../c/level1/p03_Diophantus/p03_Diophantus.c | 14 +- .../c/level1/p04_ narcissus/p04_narcissus.c | 27 ++-- .../c/level1/p05_allPrimes/p05_allPrimes.c | 24 +-- .../c/level1/p06_Goldbach/p06_Goldbach.c | 39 ++--- .../p07_encrypt_decrypt/p07_encrypt_decrypt.c | 141 +++++++++--------- practices/c/level1/p08_hanoi/p08_hanoi.c | 33 ++-- 8 files changed, 178 insertions(+), 151 deletions(-) diff --git a/practices/c/level1/p01_runningLetter/p01_runningLetter.c b/practices/c/level1/p01_runningLetter/p01_runningLetter.c index 7126073a..169e4c70 100644 --- a/practices/c/level1/p01_runningLetter/p01_runningLetter.c +++ b/practices/c/level1/p01_runningLetter/p01_runningLetter.c @@ -4,15 +4,34 @@ #include #define N 20 +void runLetter(int n); +int checkRight(int t); +int checkLeft(int t); + char ch[N]; +int main() { + printf("Input the word or letter:\n"); + gets(ch); + while (1) { + int t = 0; + while (checkRight(t)) { + runLetter(t++); + } + while (checkLeft(--t)) { + runLetter(t); + } + } + return 0; +} + void runLetter(int n) { system("clear"); for (int i = 0; i < n; i++) { printf(" "); } puts(ch); - usleep(50000); + usleep(50000); } int checkRight(int t) { @@ -22,17 +41,3 @@ int checkRight(int t) { int checkLeft(int t) { return t >= 0; } - -int main() { - printf("Input the word or letter:\n"); - gets(ch); - while (1) { - int t = 0; - while (checkRight(t)) { - runLetter(t++); - } - while (checkLeft(--t)) { - runLetter(t); - } - } -} diff --git a/practices/c/level1/p02_isPrime/p02_isPrime.c b/practices/c/level1/p02_isPrime/p02_isPrime.c index c002390c..a17c20ab 100644 --- a/practices/c/level1/p02_isPrime/p02_isPrime.c +++ b/practices/c/level1/p02_isPrime/p02_isPrime.c @@ -1,13 +1,7 @@ #include #include -int isPrime(int n) { - if (n == 1) return 0; - for (int i = 2; i <= sqrt(n); i++) { - if (n % i == 0) return 0; - } - return 1; -} +int isPrime(int n); int main () { int n; @@ -16,3 +10,11 @@ int main () { else printf("No!"); return 0; } + +int isPrime(int n) { + if (n == 1) return 0; + for (int i = 2; i <= sqrt(n); i++) { + if (n % i == 0) return 0; + } + return 1; +} diff --git a/practices/c/level1/p03_Diophantus/p03_Diophantus.c b/practices/c/level1/p03_Diophantus/p03_Diophantus.c index 1b563b3f..f24b909c 100644 --- a/practices/c/level1/p03_Diophantus/p03_Diophantus.c +++ b/practices/c/level1/p03_Diophantus/p03_Diophantus.c @@ -1,11 +1,6 @@ #include -int check(int n) { - if (n%6 != 0 || n%12 != 0 || n%7 !=0) return 0; - int x = n/6 + n/12 + n/7 + 5; - int ageSon = n - x - 4; - return n == ageSon * 2; -} +int check(int n); int main() { for (int i = 1; i <= 1000; i++) { @@ -13,3 +8,10 @@ int main() { } return 0; } + +int check(int n) { + if (n%6 != 0 || n%12 != 0 || n%7 !=0) return 0; + int x = n/6 + n/12 + n/7 + 5; + int ageSon = n - x - 4; + return n == ageSon * 2; +} diff --git a/practices/c/level1/p04_ narcissus/p04_narcissus.c b/practices/c/level1/p04_ narcissus/p04_narcissus.c index 716e5b09..1e76e877 100644 --- a/practices/c/level1/p04_ narcissus/p04_narcissus.c +++ b/practices/c/level1/p04_ narcissus/p04_narcissus.c @@ -1,17 +1,7 @@ #include -int Power(int x) { - return x*x*x; -} - -int narcissusChange(int n) { - int ans = 0; - while (n) { - ans += Power(n%10); - n = n/10; - } - return ans; -} +int Power(int x); +int narcissusChange(int n); int main() { for (int i = 100; i < 1000; i++) { @@ -19,3 +9,16 @@ int main() { } return 0; } + +int Power(int x) { + return x*x*x; +} + +int narcissusChange(int n) { + int ans = 0; + while (n) { + ans += Power(n%10); + n = n/10; + } + return ans; +} diff --git a/practices/c/level1/p05_allPrimes/p05_allPrimes.c b/practices/c/level1/p05_allPrimes/p05_allPrimes.c index 5da99c36..e9cc3a1f 100644 --- a/practices/c/level1/p05_allPrimes/p05_allPrimes.c +++ b/practices/c/level1/p05_allPrimes/p05_allPrimes.c @@ -2,18 +2,9 @@ #include #define N 1001 -int isPrime[N]; +void init(); -void init() { - memset(isPrime,1,sizeof(isPrime)); - for (int i = 2; i < N; i++) { - if (isPrime[i]) { - for (int j = 2; i*j < N; j++) { - isPrime[i*j] = 0; - } - } - } -} +int isPrime[N]; int main() { init(); @@ -22,3 +13,14 @@ int main() { } return 0; } + +void init() { + memset(isPrime,1,sizeof(isPrime)); + for (int i = 2; i < N; i++) { + if (isPrime[i]) { + for (int j = 2; i*j < N; j++) { + isPrime[i*j] = 0; + } + } + } +} diff --git a/practices/c/level1/p06_Goldbach/p06_Goldbach.c b/practices/c/level1/p06_Goldbach/p06_Goldbach.c index 5206debe..09cc2185 100644 --- a/practices/c/level1/p06_Goldbach/p06_Goldbach.c +++ b/practices/c/level1/p06_Goldbach/p06_Goldbach.c @@ -2,27 +2,15 @@ #include #define N 101 -int primes[20]; -int numberOfPrimes; +int isPrime(int x); +void init(); + struct data { - int a,b,c; + int a,b,c; }a[N]; -int isPrime(int x) { - for (int i = 2; i <= sqrt(x); i++) { - if (x%i == 0) return 0; - } - return 1; -} - -void init() { - numberOfPrimes = 0; - for (int i = 3; i < 100; i++) { - if (isPrime(i)) { - primes[numberOfPrimes++] = i; - } - } -} +int primes[20]; +int numberOfPrimes; int main() { init(); @@ -62,3 +50,18 @@ int main() { return 0; } +int isPrime(int x) { + for (int i = 2; i <= sqrt(x); i++) { + if (x%i == 0) return 0; + } + return 1; +} + +void init() { + numberOfPrimes = 0; + for (int i = 3; i < 100; i++) { + if (isPrime(i)) { + primes[numberOfPrimes++] = i; + } + } +} diff --git a/practices/c/level1/p07_encrypt_decrypt/p07_encrypt_decrypt.c b/practices/c/level1/p07_encrypt_decrypt/p07_encrypt_decrypt.c index cd3daac9..2fd6979b 100644 --- a/practices/c/level1/p07_encrypt_decrypt/p07_encrypt_decrypt.c +++ b/practices/c/level1/p07_encrypt_decrypt/p07_encrypt_decrypt.c @@ -8,77 +8,17 @@ #define Hash 10007 #define N 100 +char numToChar(int x); +char enToDe(char c); +char deToEn(char c); +void encrypt(); +void decrypt(); +void init(); + int enIntoDe[62]; int deIntoEn[62]; char ch[N]; -char numToChar(int x) { - if (x < 10) return (char)(48+x); - if (x < 36) return (char)(55+x); - return (char)(61+x); -} - -char enToDe(char c) { - if ((int)(c) > 47 && (int)(c) < 58) { - return numToChar(enIntoDe[(int)(c) - 48]); - } - if ((int)(c) > 64 && (int)(c) < 91) { - return numToChar(enIntoDe[(int)(c) - 55]); - } - return numToChar(enIntoDe[(int)(c) - 61]); -} - -char deToEn(char c) { - if ((int)(c) > 47 && (int)(c) < 58) { - return numToChar(deIntoEn[(int)(c) - 48]); - } - if ((int)(c) > 64 && (int)(c) < 91) { - return numToChar(deIntoEn[(int)(c) - 55]); - } - return numToChar(deIntoEn[(int)(c) - 61]); -} - -void encrypt() { - printf("输入需要加密的字符串:\n"); - scanf("%s",&ch); - for (int i = 0; i < strlen(ch); i++) { - ch[i] = enToDe(ch[i]); - } - printf("加密后的字符串为:%s\n",ch); -} - -void decrypt() { - printf("输入需要解密的字符串:\n"); - scanf("%s",&ch); - for (int i = 0; i < strlen(ch); i++) { - ch[i] = deToEn(ch[i]); - } - printf("解密后的字符串为:%s\n",ch); -} - -void init() { - memset(enIntoDe,-1,sizeof(enIntoDe)); - memset(deIntoEn,-1,sizeof(deIntoEn)); - for (int i = 0; i < 62; i++) { - int x = (i * Hash) % 62; - if (deIntoEn[x] == -1) { - enIntoDe[i] = x; - deIntoEn[x] = i; - } - } - for (int i = 0; i < 62; i++) { - if (enIntoDe[i] == -1) { - for (int j = 0; j < 62; j++) { - if (deIntoEn[j] == -1) { - enIntoDe[i] = j; - deIntoEn[j] = i; - break; - } - } - } - } -} - int main() { init(); while (1) { @@ -99,3 +39,70 @@ int main() { } return 0; } + +char numToChar(int x) { + if (x < 10) return (char)(48+x); + if (x < 36) return (char)(55+x); + return (char)(61+x); +} + +char enToDe(char c) { + if ((int)(c) > 47 && (int)(c) < 58) { + return numToChar(enIntoDe[(int)(c) - 48]); + } + if ((int)(c) > 64 && (int)(c) < 91) { + return numToChar(enIntoDe[(int)(c) - 55]); + } + return numToChar(enIntoDe[(int)(c) - 61]); +} + +char deToEn(char c) { + if ((int)(c) > 47 && (int)(c) < 58) { + return numToChar(deIntoEn[(int)(c) - 48]); + } + if ((int)(c) > 64 && (int)(c) < 91) { + return numToChar(deIntoEn[(int)(c) - 55]); + } + return numToChar(deIntoEn[(int)(c) - 61]); +} + +void encrypt() { + printf("输入需要加密的字符串:\n"); + scanf("%s",&ch); + for (int i = 0; i < strlen(ch); i++) { + ch[i] = enToDe(ch[i]); + } + printf("加密后的字符串为:%s\n",ch); +} + +void decrypt() { + printf("输入需要解密的字符串:\n"); + scanf("%s",&ch); + for (int i = 0; i < strlen(ch); i++) { + ch[i] = deToEn(ch[i]); + } + printf("解密后的字符串为:%s\n",ch); +} + +void init() { + memset(enIntoDe,-1,sizeof(enIntoDe)); + memset(deIntoEn,-1,sizeof(deIntoEn)); + for (int i = 0; i < 62; i++) { + int x = (i * Hash) % 62; + if (deIntoEn[x] == -1) { + enIntoDe[i] = x; + deIntoEn[x] = i; + } + } + for (int i = 0; i < 62; i++) { + if (enIntoDe[i] == -1) { + for (int j = 0; j < 62; j++) { + if (deIntoEn[j] == -1) { + enIntoDe[i] = j; + deIntoEn[j] = i; + break; + } + } + } + } +} diff --git a/practices/c/level1/p08_hanoi/p08_hanoi.c b/practices/c/level1/p08_hanoi/p08_hanoi.c index 0347a39b..ec019bb8 100644 --- a/practices/c/level1/p08_hanoi/p08_hanoi.c +++ b/practices/c/level1/p08_hanoi/p08_hanoi.c @@ -1,21 +1,9 @@ #include -int tot = 0; - -void printMove(int x, char A, char B) { - printf("%d: %d %c -> %c\n",++tot, x, A, B); -} +void printMove(int x, char A, char B); +void hanoi(int x, char A, char B, char C); -void hanoi(int x,char A, char B, char C) { - if (x == 1) { - printMove(x, A, C); - } - else { - hanoi(x - 1, A, C, B); - printMove(x, A, C); - hanoi(x - 1, B, A, C); - } -} +int tot = 0; int main() { int n; @@ -23,3 +11,18 @@ int main() { hanoi(n, 'A', 'B', 'C'); return 0; } + +void printMove(int x, char A, char B) { + printf("%d: %d %c -> %c\n",++tot, x, A, B); +} + +void hanoi(int x,char A, char B, char C) { + if (x == 1) { + printMove(x, A, C); + } + else { + hanoi(x - 1, A, C, B); + printMove(x, A, C); + hanoi(x - 1, B, A, C); + } +} From b4ab458312239dde2736818940f1f4f80d1b14a9 Mon Sep 17 00:00:00 2001 From: Jimmy Fan Date: Thu, 16 Mar 2017 11:19:54 +0800 Subject: [PATCH 04/11] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- practices/c/level1/p02_isPrime/p02_isPrime.c | 8 +- .../c/level1/p03_Diophantus/p03_Diophantus.c | 8 +- .../c/level1/p04_ narcissus/p04_narcissus.c | 8 +- .../c/level1/p05_allPrimes/p05_allPrimes.c | 10 +- .../c/level1/p06_Goldbach/p06_Goldbach.c | 68 +++---- .../p07_encrypt_decrypt/p07_encrypt_decrypt.c | 36 ++-- practices/c/level1/p08_hanoi/p08_hanoi.c | 8 +- practices/c/level1/p09_maze/p09_maze.c | 18 +- .../c/level1/p10_pushBoxes/p10_pushBoxes.c | 28 +-- .../c/level1/p11_linkedList/p11_linkedList.c | 172 +++++++++--------- 10 files changed, 182 insertions(+), 182 deletions(-) diff --git a/practices/c/level1/p02_isPrime/p02_isPrime.c b/practices/c/level1/p02_isPrime/p02_isPrime.c index a17c20ab..aa143100 100644 --- a/practices/c/level1/p02_isPrime/p02_isPrime.c +++ b/practices/c/level1/p02_isPrime/p02_isPrime.c @@ -4,10 +4,10 @@ int isPrime(int n); int main () { - int n; - scanf("%d",&n); - if (isPrime(n)) printf("Yes!"); - else printf("No!"); + int n; + scanf("%d",&n); + if (isPrime(n)) printf("Yes!"); + else printf("No!"); return 0; } diff --git a/practices/c/level1/p03_Diophantus/p03_Diophantus.c b/practices/c/level1/p03_Diophantus/p03_Diophantus.c index f24b909c..65c2df2e 100644 --- a/practices/c/level1/p03_Diophantus/p03_Diophantus.c +++ b/practices/c/level1/p03_Diophantus/p03_Diophantus.c @@ -3,10 +3,10 @@ int check(int n); int main() { - for (int i = 1; i <= 1000; i++) { - if (check(i)) printf("%d ",i - 4); - } - return 0; + for (int i = 1; i <= 1000; i++) { + if (check(i)) printf("%d ",i - 4); + } + return 0; } int check(int n) { diff --git a/practices/c/level1/p04_ narcissus/p04_narcissus.c b/practices/c/level1/p04_ narcissus/p04_narcissus.c index 1e76e877..a488634a 100644 --- a/practices/c/level1/p04_ narcissus/p04_narcissus.c +++ b/practices/c/level1/p04_ narcissus/p04_narcissus.c @@ -4,10 +4,10 @@ int Power(int x); int narcissusChange(int n); int main() { - for (int i = 100; i < 1000; i++) { - if (i == narcissusChange(i)) printf("%d\t",i); - } - return 0; + for (int i = 100; i < 1000; i++) { + if (i == narcissusChange(i)) printf("%d\t",i); + } + return 0; } int Power(int x) { diff --git a/practices/c/level1/p05_allPrimes/p05_allPrimes.c b/practices/c/level1/p05_allPrimes/p05_allPrimes.c index e9cc3a1f..299b9f1d 100644 --- a/practices/c/level1/p05_allPrimes/p05_allPrimes.c +++ b/practices/c/level1/p05_allPrimes/p05_allPrimes.c @@ -7,11 +7,11 @@ void init(); int isPrime[N]; int main() { - init(); - for (int i = 2; i < N; i++) { - if (isPrime[i]) printf("%d\t",i); - } - return 0; + init(); + for (int i = 2; i < N; i++) { + if (isPrime[i]) printf("%d\t",i); + } + return 0; } void init() { diff --git a/practices/c/level1/p06_Goldbach/p06_Goldbach.c b/practices/c/level1/p06_Goldbach/p06_Goldbach.c index 09cc2185..ae6d2892 100644 --- a/practices/c/level1/p06_Goldbach/p06_Goldbach.c +++ b/practices/c/level1/p06_Goldbach/p06_Goldbach.c @@ -13,41 +13,41 @@ int primes[20]; int numberOfPrimes; int main() { - init(); - for (int i = 0; i < numberOfPrimes; i++) { - for (int j = i; j < numberOfPrimes; j++) { - int k = primes[i] + primes[j]; - if (k > 100) { - break; - } - a[k].a = primes[i]; - a[k].b = primes[j]; - } - } + init(); + for (int i = 0; i < numberOfPrimes; i++) { + for (int j = i; j < numberOfPrimes; j++) { + int k = primes[i] + primes[j]; + if (k > 100) { + break; + } + a[k].a = primes[i]; + a[k].b = primes[j]; + } + } - for (int i = 0; i < numberOfPrimes; i++) { - for (int j = i; j < numberOfPrimes; j++) { - for (int k = j; k < numberOfPrimes; k++) { - int x = primes[i] + primes[j] + primes[k]; - if (x > 100) { - break; - } - a[x].a = primes[i]; - a[x].b = primes[j]; - a[x].c = primes[k]; - } - } - } - - printf("不小于6的偶数都是两个素数之和:\n"); - for (int i = 6; i <= 100; i+=2) { - printf("%d = %d + %d\n",i,a[i].a,a[i].b); - } - printf("不小于9的偶数都是三个素数之和:\n"); - for (int i = 9; i < 100; i+=2) { - printf("%d = %d + %d + %d\n",i,a[i].a,a[i].b,a[i].c); - } - return 0; + for (int i = 0; i < numberOfPrimes; i++) { + for (int j = i; j < numberOfPrimes; j++) { + for (int k = j; k < numberOfPrimes; k++) { + int x = primes[i] + primes[j] + primes[k]; + if (x > 100) { + break; + } + a[x].a = primes[i]; + a[x].b = primes[j]; + a[x].c = primes[k]; + } + } + } + + printf("不小于6的偶数都是两个素数之和:\n"); + for (int i = 6; i <= 100; i+=2) { + printf("%d = %d + %d\n",i,a[i].a,a[i].b); + } + printf("不小于9的偶数都是三个素数之和:\n"); + for (int i = 9; i < 100; i+=2) { + printf("%d = %d + %d + %d\n",i,a[i].a,a[i].b,a[i].c); + } + return 0; } int isPrime(int x) { diff --git a/practices/c/level1/p07_encrypt_decrypt/p07_encrypt_decrypt.c b/practices/c/level1/p07_encrypt_decrypt/p07_encrypt_decrypt.c index 2fd6979b..08858576 100644 --- a/practices/c/level1/p07_encrypt_decrypt/p07_encrypt_decrypt.c +++ b/practices/c/level1/p07_encrypt_decrypt/p07_encrypt_decrypt.c @@ -20,24 +20,24 @@ int deIntoEn[62]; char ch[N]; int main() { - init(); - while (1) { - int k; - printf("输入要进行的操作序号,1:加密,2:解密,3:退出 : "); - scanf("%d",&k); - if (k == 1) { - encrypt(); - continue; - } - if (k == 2) { - decrypt(); - continue; - } - if (k == 3) { - break; - } - } - return 0; + init(); + while (1) { + int k; + printf("输入要进行的操作序号,1:加密,2:解密,3:退出 : "); + scanf("%d",&k); + if (k == 1) { + encrypt(); + continue; + } + if (k == 2) { + decrypt(); + continue; + } + if (k == 3) { + break; + } + } + return 0; } char numToChar(int x) { diff --git a/practices/c/level1/p08_hanoi/p08_hanoi.c b/practices/c/level1/p08_hanoi/p08_hanoi.c index ec019bb8..9ff30309 100644 --- a/practices/c/level1/p08_hanoi/p08_hanoi.c +++ b/practices/c/level1/p08_hanoi/p08_hanoi.c @@ -6,10 +6,10 @@ void hanoi(int x, char A, char B, char C); int tot = 0; int main() { - int n; - scanf("%d",&n); - hanoi(n, 'A', 'B', 'C'); - return 0; + int n; + scanf("%d",&n); + hanoi(n, 'A', 'B', 'C'); + return 0; } void printMove(int x, char A, char B) { diff --git a/practices/c/level1/p09_maze/p09_maze.c b/practices/c/level1/p09_maze/p09_maze.c index d4d838db..2f72d186 100644 --- a/practices/c/level1/p09_maze/p09_maze.c +++ b/practices/c/level1/p09_maze/p09_maze.c @@ -21,21 +21,21 @@ int destinationX,destinationY; int isGet = 0; int main() { - init(); - + init(); + // down 258 // up 259 // left 260 // right 261 - while (!isGet) { - int k = getch() - 258; - mazeMove(k); - } + while (!isGet) { + int k = getch() - 258; + mazeMove(k); + } - getch(); - endwin(); - return 0; + getch(); + endwin(); + return 0; } int check(int x,int y) { diff --git a/practices/c/level1/p10_pushBoxes/p10_pushBoxes.c b/practices/c/level1/p10_pushBoxes/p10_pushBoxes.c index 9bf5b01b..2cc9befd 100644 --- a/practices/c/level1/p10_pushBoxes/p10_pushBoxes.c +++ b/practices/c/level1/p10_pushBoxes/p10_pushBoxes.c @@ -37,21 +37,21 @@ int step = 0; int isFinish = 0; int main() { - init(); + init(); - while (!isFinish) { - int k = getch() - 258; - if (k == -231) { - restart(); - } - boxMove(k); - } - clear(); - printw("Congratulation! You use %d steps!",step); - refresh(); - getch(); - endwin(); - return 0; + while (!isFinish) { + int k = getch() - 258; + if (k == -231) { + restart(); + } + boxMove(k); + } + clear(); + printw("Congratulation! You use %d steps!",step); + refresh(); + getch(); + endwin(); + return 0; } void mapPut() { diff --git a/practices/c/level1/p11_linkedList/p11_linkedList.c b/practices/c/level1/p11_linkedList/p11_linkedList.c index 53006648..d94c783b 100644 --- a/practices/c/level1/p11_linkedList/p11_linkedList.c +++ b/practices/c/level1/p11_linkedList/p11_linkedList.c @@ -9,111 +9,111 @@ void reverseList(); void displayList(); struct node { - int value; - struct node *next; + int value; + struct node *next; }*pHead,*pNow; int main() { - initList(); - inputValue(); - - while (1) { - printf("请输入需要进行的操作编号: \n"); - printf(" 1:遍历该链表\n 2:将链表节点反序\n 3:查找链表元素\n 0:退出\n"); - int k; - scanf("%d",&k); - if (k == 0) break; - if (k == 1) { - displayList(); - continue; - } - if (k == 2) { - reverseList(); - continue; - } - if (k == 3) { - printf("输入要查找的元素:"); - int x; - scanf("%d",&x); - findList(x); - continue; - } - } - return 0; + initList(); + inputValue(); + + while (1) { + printf("请输入需要进行的操作编号: \n"); + printf(" 1:遍历该链表\n 2:将链表节点反序\n 3:查找链表元素\n 0:退出\n"); + int k; + scanf("%d",&k); + if (k == 0) break; + if (k == 1) { + displayList(); + continue; + } + if (k == 2) { + reverseList(); + continue; + } + if (k == 3) { + printf("输入要查找的元素:"); + int x; + scanf("%d",&x); + findList(x); + continue; + } + } + return 0; } void initList() { - pHead = (struct node *)malloc(sizeof(struct node)); - pHead -> next = NULL; - pNow = (struct node *)malloc(sizeof(struct node)); - pNow -> next = NULL; + pHead = (struct node *)malloc(sizeof(struct node)); + pHead -> next = NULL; + pNow = (struct node *)malloc(sizeof(struct node)); + pNow -> next = NULL; } void pushList(int x) { - struct node *p; - p = (struct node *)malloc(sizeof(struct node)); - p -> value = x; - p -> next = NULL; - if (pHead -> next == NULL) { - pHead -> next = p; - pNow = p; - return; - } - pNow -> next = p; - pNow = p; + struct node *p; + p = (struct node *)malloc(sizeof(struct node)); + p -> value = x; + p -> next = NULL; + if (pHead -> next == NULL) { + pHead -> next = p; + pNow = p; + return; + } + pNow -> next = p; + pNow = p; } void findList(int x) { - int k = 1; - int find = 0; - struct node *p; - p = pHead -> next; - while (p != NULL) { - if (p -> value == x) { - find = 1; - printf("%d ",k); - } - p = p -> next; - k++; - } - if (!find) { - printf("-1"); - } - printf("\n"); + int k = 1; + int find = 0; + struct node *p; + p = pHead -> next; + while (p != NULL) { + if (p -> value == x) { + find = 1; + printf("%d ",k); + } + p = p -> next; + k++; + } + if (!find) { + printf("-1"); + } + printf("\n"); } void displayList() { - struct node *p; - p = pHead -> next; - while (p != NULL) { - printf("%d ",p -> value); - p = p -> next; - } - printf("\n"); + struct node *p; + p = pHead -> next; + while (p != NULL) { + printf("%d ",p -> value); + p = p -> next; + } + printf("\n"); } void inputValue() { - printf("输入链表元素个数:\n"); - int n; - scanf("%d",&n); - printf("请输入元素:\n"); - int x; - for (int i = 0; i < n; i++) { - scanf("%d",&x); - pushList(x); - } + printf("输入链表元素个数:\n"); + int n; + scanf("%d",&n); + printf("请输入元素:\n"); + int x; + for (int i = 0; i < n; i++) { + scanf("%d",&x); + pushList(x); + } } void reverseList() { - struct node *pPrev, *pNext, *p; - p = pHead -> next; - pNow = p; - pPrev = NULL; - while (p != NULL) { - pNext = p -> next; - p -> next = pPrev; - pPrev = p; - p = pNext; - } - pHead -> next = pPrev; + struct node *pPrev, *pNext, *p; + p = pHead -> next; + pNow = p; + pPrev = NULL; + while (p != NULL) { + pNext = p -> next; + p -> next = pPrev; + pPrev = p; + p = pNext; + } + pHead -> next = pPrev; } From ed008952d0e86ac5e6cfdcf1fe5843dfcf284c04 Mon Sep 17 00:00:00 2001 From: Jimmy Fan Date: Tue, 11 Apr 2017 08:39:34 +0800 Subject: [PATCH 05/11] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E9=83=A8?= =?UTF-8?q?=E5=88=86=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../c/level1/p06_Goldbach/p06_Goldbach.c | 70 +++++++++---------- .../c/level1/p12_warehouse/p12_warehouse.c | 48 ++++++------- 2 files changed, 59 insertions(+), 59 deletions(-) diff --git a/practices/c/level1/p06_Goldbach/p06_Goldbach.c b/practices/c/level1/p06_Goldbach/p06_Goldbach.c index ae6d2892..ddbab197 100644 --- a/practices/c/level1/p06_Goldbach/p06_Goldbach.c +++ b/practices/c/level1/p06_Goldbach/p06_Goldbach.c @@ -5,7 +5,7 @@ int isPrime(int x); void init(); -struct data { +struct Data { int a,b,c; }a[N]; @@ -13,41 +13,41 @@ int primes[20]; int numberOfPrimes; int main() { - init(); - for (int i = 0; i < numberOfPrimes; i++) { - for (int j = i; j < numberOfPrimes; j++) { - int k = primes[i] + primes[j]; - if (k > 100) { - break; - } - a[k].a = primes[i]; - a[k].b = primes[j]; - } - } + init(); + for (int i = 0; i < numberOfPrimes; i++) { + for (int j = i; j < numberOfPrimes; j++) { + int k = primes[i] + primes[j]; + if (k > 100) { + break; + } + a[k].a = primes[i]; + a[k].b = primes[j]; + } + } - for (int i = 0; i < numberOfPrimes; i++) { - for (int j = i; j < numberOfPrimes; j++) { - for (int k = j; k < numberOfPrimes; k++) { - int x = primes[i] + primes[j] + primes[k]; - if (x > 100) { - break; - } - a[x].a = primes[i]; - a[x].b = primes[j]; - a[x].c = primes[k]; - } - } - } - - printf("不小于6的偶数都是两个素数之和:\n"); - for (int i = 6; i <= 100; i+=2) { - printf("%d = %d + %d\n",i,a[i].a,a[i].b); - } - printf("不小于9的偶数都是三个素数之和:\n"); - for (int i = 9; i < 100; i+=2) { - printf("%d = %d + %d + %d\n",i,a[i].a,a[i].b,a[i].c); - } - return 0; + for (int i = 0; i < numberOfPrimes; i++) { + for (int j = i; j < numberOfPrimes; j++) { + for (int k = j; k < numberOfPrimes; k++) { + int x = primes[i] + primes[j] + primes[k]; + if (x > 100) { + break; + } + a[x].a = primes[i]; + a[x].b = primes[j]; + a[x].c = primes[k]; + } + } + } + + printf("不小于6的偶数都是两个素数之和:\n"); + for (int i = 6; i <= 100; i+=2) { + printf("%d = %d + %d\n",i,a[i].a,a[i].b); + } + printf("不小于9的偶数都是三个素数之和:\n"); + for (int i = 9; i < 100; i+=2) { + printf("%d = %d + %d + %d\n",i,a[i].a,a[i].b,a[i].c); + } + return 0; } int isPrime(int x) { diff --git a/practices/c/level1/p12_warehouse/p12_warehouse.c b/practices/c/level1/p12_warehouse/p12_warehouse.c index 26d29256..704419fa 100644 --- a/practices/c/level1/p12_warehouse/p12_warehouse.c +++ b/practices/c/level1/p12_warehouse/p12_warehouse.c @@ -21,34 +21,34 @@ int n = 0; int main() { init(); - while (1) { + int flag = 1; + while (flag) { printf("\n选择所需功能:\n"); printf(" 1:显示存货列表\n 2:入库\n 3:出库\n 0:退出程序\n"); int k; scanf("%d",&k); - if (k == 0) { - quiteProgram(); - break; - } - if (k == 1) { - displayList(); - continue; - } - if (k == 2) { - printf("输入入库货物名:\n"); - scanf("%s",name); - printf("输入入库货物数量:\n"); - scanf("%d",&num); - pushList(); - continue; - } - if (k == 3) { - printf("输入出库货物名:\n"); - scanf("%s",name); - printf("输入出库货物数量:\n"); - scanf("%d",&num); - popList(); - continue; + switch (k) { + case 0: + quiteProgram(); + flag = 0; + break; + case 1: + displayList(); + break; + case 2: + printf("输入入库货物名:\n"); + scanf("%s",name); + printf("输入入库货物数量:\n"); + scanf("%d",&num); + pushList(); + break; + case 3: + printf("输入出库货物名:\n"); + scanf("%s",name); + printf("输入出库货物数量:\n"); + scanf("%d",&num); + popList(); + break; } } From b8d08b9339b41fcafa028a051a5e454453955a17 Mon Sep 17 00:00:00 2001 From: Jimmy Fan Date: Wed, 10 May 2017 08:59:11 +0800 Subject: [PATCH 06/11] Cpp 1~6 --- practices/cpp/level1/p01_Queue/Queue.cpp | 61 +++++++ practices/cpp/level1/p01_Queue/Queue.h | 34 ++++ practices/cpp/level1/p01_Queue/main.cpp | 82 +++++++++ practices/cpp/level1/p02_Stack/Stack.cpp | 49 ++++++ practices/cpp/level1/p02_Stack/Stack.h | 29 ++++ practices/cpp/level1/p02_Stack/main.cpp | 76 +++++++++ .../cpp/level1/p03_SafeArray/SafeArray.cpp | 43 +++++ .../cpp/level1/p03_SafeArray/SafeArray.h | 32 ++++ practices/cpp/level1/p03_SafeArray/main.cpp | 56 ++++++ .../ScoreManagement.cpp | 161 ++++++++++++++++++ .../p04_cppScoreManagement/ScoreManagement.h | 32 ++++ .../level1/p04_cppScoreManagement/Student.cpp | 35 ++++ .../level1/p04_cppScoreManagement/Student.h | 29 ++++ .../level1/p04_cppScoreManagement/main.cpp | 98 +++++++++++ practices/cpp/level1/p05_Canvas/Canvas.cpp | 29 ++++ practices/cpp/level1/p05_Canvas/Canvas.h | 30 ++++ practices/cpp/level1/p05_Canvas/Circle.cpp | 23 +++ practices/cpp/level1/p05_Canvas/Circle.h | 25 +++ practices/cpp/level1/p05_Canvas/Point.cpp | 23 +++ practices/cpp/level1/p05_Canvas/Point.h | 23 +++ practices/cpp/level1/p05_Canvas/Rect.cpp | 30 ++++ practices/cpp/level1/p05_Canvas/Rect.h | 23 +++ practices/cpp/level1/p05_Canvas/Shape.h | 19 +++ practices/cpp/level1/p05_Canvas/main.cpp | 60 +++++++ .../cpp/level1/p06_CircleAndPoint/Circle.cpp | 34 ++++ .../cpp/level1/p06_CircleAndPoint/Circle.h | 27 +++ .../cpp/level1/p06_CircleAndPoint/Point.cpp | 24 +++ .../cpp/level1/p06_CircleAndPoint/Point.h | 22 +++ .../cpp/level1/p06_CircleAndPoint/main.cpp | 55 ++++++ 29 files changed, 1264 insertions(+) create mode 100644 practices/cpp/level1/p01_Queue/Queue.cpp create mode 100644 practices/cpp/level1/p01_Queue/Queue.h create mode 100644 practices/cpp/level1/p01_Queue/main.cpp create mode 100644 practices/cpp/level1/p02_Stack/Stack.cpp create mode 100644 practices/cpp/level1/p02_Stack/Stack.h create mode 100644 practices/cpp/level1/p02_Stack/main.cpp create mode 100644 practices/cpp/level1/p03_SafeArray/SafeArray.cpp create mode 100644 practices/cpp/level1/p03_SafeArray/SafeArray.h create mode 100644 practices/cpp/level1/p03_SafeArray/main.cpp create mode 100644 practices/cpp/level1/p04_cppScoreManagement/ScoreManagement.cpp create mode 100644 practices/cpp/level1/p04_cppScoreManagement/ScoreManagement.h create mode 100644 practices/cpp/level1/p04_cppScoreManagement/Student.cpp create mode 100644 practices/cpp/level1/p04_cppScoreManagement/Student.h create mode 100644 practices/cpp/level1/p04_cppScoreManagement/main.cpp create mode 100644 practices/cpp/level1/p05_Canvas/Canvas.cpp create mode 100644 practices/cpp/level1/p05_Canvas/Canvas.h create mode 100644 practices/cpp/level1/p05_Canvas/Circle.cpp create mode 100644 practices/cpp/level1/p05_Canvas/Circle.h create mode 100644 practices/cpp/level1/p05_Canvas/Point.cpp create mode 100644 practices/cpp/level1/p05_Canvas/Point.h create mode 100644 practices/cpp/level1/p05_Canvas/Rect.cpp create mode 100644 practices/cpp/level1/p05_Canvas/Rect.h create mode 100644 practices/cpp/level1/p05_Canvas/Shape.h create mode 100644 practices/cpp/level1/p05_Canvas/main.cpp create mode 100644 practices/cpp/level1/p06_CircleAndPoint/Circle.cpp create mode 100644 practices/cpp/level1/p06_CircleAndPoint/Circle.h create mode 100644 practices/cpp/level1/p06_CircleAndPoint/Point.cpp create mode 100644 practices/cpp/level1/p06_CircleAndPoint/Point.h create mode 100644 practices/cpp/level1/p06_CircleAndPoint/main.cpp diff --git a/practices/cpp/level1/p01_Queue/Queue.cpp b/practices/cpp/level1/p01_Queue/Queue.cpp new file mode 100644 index 00000000..29c19406 --- /dev/null +++ b/practices/cpp/level1/p01_Queue/Queue.cpp @@ -0,0 +1,61 @@ +// +// Queue.cpp +// p01_Queue +// +// Created by Jimmy Fan on 2017/3/30. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#include "Queue.h" +#include +using namespace std; + +Queue::Queue(int n) { + head = (Node *)malloc(sizeof(Node)); + head -> next = NULL; + tail = (Node *)malloc(sizeof(Node)); + tail -> next = NULL; + num = 0; + maxNum = n; +} + +void Queue::append(int x) { + Node *p; + p = (Node *)malloc(sizeof(Node)); + p -> x = x; + p -> next = NULL; + if (!num) { + head -> next = p; + tail -> next = p; + } + else { + tail -> next -> next = p; + tail -> next = p; + } + num ++; +} + +int Queue::front() { + return head -> next -> x; +} + +int Queue::back() { + return tail -> next -> x; +} + +void Queue::pop() { + Node *p; + p = head -> next; + head -> next = p -> next; + free(p); + p = NULL; + num --; +} + +bool Queue::isFull() { + return num == maxNum; +} + +bool Queue::isEmpty() { + return num == 0; +} diff --git a/practices/cpp/level1/p01_Queue/Queue.h b/practices/cpp/level1/p01_Queue/Queue.h new file mode 100644 index 00000000..6732a45f --- /dev/null +++ b/practices/cpp/level1/p01_Queue/Queue.h @@ -0,0 +1,34 @@ +// +// Queue.h +// p01_Queue +// +// Created by Jimmy Fan on 2017/3/30. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#ifndef Queue_h +#define Queue_h + +struct Node { + int x; + Node *next; +}; + +class Queue { +private: + Node *head, *tail; + int num; + int maxNum; +public: + Queue(int n); + void append(int x); + int front(); + int back(); + void pop(); + bool isFull(); + bool isEmpty(); +}; + + + +#endif /* Queue_h */ diff --git a/practices/cpp/level1/p01_Queue/main.cpp b/practices/cpp/level1/p01_Queue/main.cpp new file mode 100644 index 00000000..f0af53ac --- /dev/null +++ b/practices/cpp/level1/p01_Queue/main.cpp @@ -0,0 +1,82 @@ +// +// main.cpp +// p01_Queue +// +// Created by Jimmy Fan on 2017/3/30. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#include +#include "Queue.h" +#define N 100 +using namespace std; + +int main(int argc, const char * argv[]) { + Queue que(N); + bool flag = 1; + while (flag) { + int k; + printf("请输入需要进行的操作编号:\n"); + printf(" 1:入队\n 2:出队\n 3:读取队首元素\n 4:读取队尾元素\n 5:判断队列是否为空\n 6:判断队列是否已满\n 0:退出程序\n"); + scanf("%d",&k); + switch (k) { + case 0: + flag = 0; + break; + case 1: + printf("请输入需要入队的元素:"); + int x; + scanf("%d",&x); + if (que.isFull()) { + printf("Error : 队列已满,入队失败\n"); + } + else { + que.append(x); + } + break; + case 2: + if (que.isEmpty()) { + printf("Erroe : 队列已空,出队失败\n"); + } + else { + que.pop(); + } + break; + case 3: + if (que.isEmpty()) { + printf("Error : 队列为空,读取队首元素失败\n"); + } + else { + printf("队首元素为:%d\n",que.front()); + } + break; + case 4: + if (que.isEmpty()) { + printf("Error : 队列为空,读取队尾元素失败\n"); + } + else { + printf("队尾元素为:%d\n",que.back()); + } + break; + case 5: + if (que.isEmpty()) { + printf("队列已空\n"); + } + else { + printf("队列未空\n"); + } + break; + case 6: + if (que.isFull()) { + printf("队列已满\n"); + } + else { + printf("队列未满\n"); + } + break; + } + } + + + return 0; +} diff --git a/practices/cpp/level1/p02_Stack/Stack.cpp b/practices/cpp/level1/p02_Stack/Stack.cpp new file mode 100644 index 00000000..ca552154 --- /dev/null +++ b/practices/cpp/level1/p02_Stack/Stack.cpp @@ -0,0 +1,49 @@ +// +// Stack.cpp +// p02_Stack +// +// Created by Jimmy Fan on 2017/3/30. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#include +#include "Stack.h" +using namespace std; + +template +Stack::Stack(int n) { + stop = 0; + maxNum = n; + s = new T(n); +} + +template +void Stack::push(T x) { + s[stop ++] = x; +} + +template +T Stack::top() { + return s[stop - 1]; +} + +template +void Stack::pop() { + stop --; +} + +template +bool Stack::isFull() { + return stop == maxNum; +} + +template +bool Stack::isEmpty() { + return stop == 0; +} + + +template +Stack::~Stack() { + delete [] s; +} diff --git a/practices/cpp/level1/p02_Stack/Stack.h b/practices/cpp/level1/p02_Stack/Stack.h new file mode 100644 index 00000000..ed8ad420 --- /dev/null +++ b/practices/cpp/level1/p02_Stack/Stack.h @@ -0,0 +1,29 @@ +// +// Stack.h +// p02_Stack +// +// Created by Jimmy Fan on 2017/3/30. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#ifndef Stack_h +#define Stack_h + +template +class Stack { +private: + int stop; + T* s; + int maxNum; +public: + Stack(int n); + ~Stack(); + void push(T x); + T top(); + void pop(); + bool isFull(); + bool isEmpty(); +}; + + +#endif /* Stack_h */ diff --git a/practices/cpp/level1/p02_Stack/main.cpp b/practices/cpp/level1/p02_Stack/main.cpp new file mode 100644 index 00000000..b44c961e --- /dev/null +++ b/practices/cpp/level1/p02_Stack/main.cpp @@ -0,0 +1,76 @@ +// +// main.cpp +// p02_Stack +// +// Created by Jimmy Fan on 2017/3/30. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#include +#include "Stack.h" +using namespace std; + +int main(int argc, const char * argv[]) { + int n; + printf("请输入栈最大元素个数:"); + scanf("%d",&n); + Stack stack(n); + bool flag = 1; + while (flag) { + int k; + printf("请输入需要进行的操作编号:\n"); + printf(" 1:入栈\n 2:出栈\n 3:读取栈顶元素\n 4:判断栈是否为空\n 5:判断栈是否已满\n 0:退出\n"); + scanf("%d",&k); + switch (k) { + case 0: + flag = 0; + break; + case 1: { + printf("请输入需要入栈的元素:"); + int x; + scanf("%d",&x); + if (stack.isFull()) { + printf("Error : 栈已满,入栈失败\n"); + } + else { + stack.push(x); + } + break; + } + case 2: + if (stack.isEmpty()) { + printf("Erroe : 栈已空,出栈失败\n"); + } + else { + stack.pop(); + } + break; + case 3: + if (stack.isEmpty()) { + printf("Error : 栈已空,读取栈顶元素失败\n"); + } + else { + printf("栈顶元素为:%d\n",stack.top()); + } + break; + case 4: + if (stack.isEmpty()) { + printf("栈已空\n"); + } + else { + printf("栈未空\n"); + } + break; + case 5: + if (stack.isFull()) { + printf("栈已满\n"); + } + else { + printf("栈未满\n"); + } + break; + } + } + + return 0; +} diff --git a/practices/cpp/level1/p03_SafeArray/SafeArray.cpp b/practices/cpp/level1/p03_SafeArray/SafeArray.cpp new file mode 100644 index 00000000..8e6f669c --- /dev/null +++ b/practices/cpp/level1/p03_SafeArray/SafeArray.cpp @@ -0,0 +1,43 @@ +// +// SafeArray.cpp +// p03_SafeArray +// +// Created by Jimmy Fan on 2017/4/24. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#include +#include "SafeArray.h" + +template +SafeArray::SafeArray(int n) { + this -> n = n; + a = new T(n); +} + +template +SafeArray::~SafeArray() { + delete [] a; +} + +template +Result SafeArray::getNum(int k) { + Result r; + if (k < 0 || k >= n) { + r.flag = 0; + } + else { + r.flag = 1; + r.data = a[k]; + } + return r; +} + +template +bool SafeArray::addNum(int k,T x) { + if (k < 0 || k >= n) return 0; + else { + a[k] = x; + return 1; + } +} diff --git a/practices/cpp/level1/p03_SafeArray/SafeArray.h b/practices/cpp/level1/p03_SafeArray/SafeArray.h new file mode 100644 index 00000000..110606c7 --- /dev/null +++ b/practices/cpp/level1/p03_SafeArray/SafeArray.h @@ -0,0 +1,32 @@ +// +// SafeArray.h +// p03_SafeArray +// +// Created by Jimmy Fan on 2017/4/24. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#ifndef SafeArray_h +#define SafeArray_h + +template +struct Result { + T data; + bool flag; +}; + +template +class SafeArray { +private: + int n; + T *a; +public: + SafeArray(int = 0); + ~SafeArray(); + Result getNum(int k); + bool addNum(int k,T x); +}; + + + +#endif /* SafeArray_h */ diff --git a/practices/cpp/level1/p03_SafeArray/main.cpp b/practices/cpp/level1/p03_SafeArray/main.cpp new file mode 100644 index 00000000..c65a3b0e --- /dev/null +++ b/practices/cpp/level1/p03_SafeArray/main.cpp @@ -0,0 +1,56 @@ +// +// main.cpp +// p03_SafeArray +// +// Created by Jimmy Fan on 2017/4/11. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#include +#include "SafeArray.h" + +int main(int argc, const char * argv[]) { + int n; + printf("请输入数组容量:"); + scanf("%d",&n); + SafeArray safeArray(n); + bool flag = 1; + while (flag) { + int k; + printf("请输入所要进行的操作序号:\n"); + printf(" 1:读取元素\n 2:赋值元素\n 0:退出程序\n"); + scanf("%d",&k); + int t,x; + switch (k) { + case 0: + flag = 0; + break; + case 1: { + printf("请输入要读取位置的下标:"); + scanf("%d",&t); + Result r = safeArray.getNum(t); + if (!r.flag) { + printf("Error:数组下标越界!!\n"); + } + else { + printf("元素为:%d\n",r.data); + } + break; + } + case 2: { + printf("请输入赋值下标以及元素值:\n"); + scanf("%d %d",&t,&x); + bool flag = safeArray.addNum(t, x); + if (flag) { + printf("成功赋值!\n"); + } + else { + printf("Error:数组下标越界!!\n"); + } + break; + } + } + + } + return 0; +} diff --git a/practices/cpp/level1/p04_cppScoreManagement/ScoreManagement.cpp b/practices/cpp/level1/p04_cppScoreManagement/ScoreManagement.cpp new file mode 100644 index 00000000..cbf957f1 --- /dev/null +++ b/practices/cpp/level1/p04_cppScoreManagement/ScoreManagement.cpp @@ -0,0 +1,161 @@ +// +// ScoreManagement.cpp +// p04_cppScoreManagement +// +// Created by Jimmy Fan on 2017/4/13. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#include +#include +#include "ScoreManagement.h" +#include +#include +using namespace std; + +ScoreManagement::ScoreManagement(int studentNum) { + this -> studentNum = studentNum; + this -> stus = new Student[studentNum]; +} + +bool ScoreManagement::addStudent(Student stu) { + bool flag = 0; + for (int i = 0; i < studentNum; i++) { + if (stus[i].showID() == -1) { + stus[i] = stu; + flag = 1; + break; + } + if (stus[i].showID() == stu.showID()) { + break; + } + } + return flag; +} + +int ScoreManagement::delStudent(char* name) { + int num = 0; + for (int i = 0; i < studentNum; i++) { + if (stus[i].showID() == -1) continue; + if (strcmp(name, stus[i].showName()) == 0) { + num ++; + stus[i].setID(-1); + } + } + return num; +} + +int ScoreManagement::delStudent(long ID) { + int num = 0; + for (int i = 0; i < studentNum; i++) { + if (stus[i].showID() == ID) { + num ++; + stus[i].setID(-1); + } + } + return num; +} + +void ScoreManagement::show() { + bool flag = 0; + for (int i = 0; i < studentNum; i++) { + if (stus[i].showID() != -1) { + printf(" %s %03ld %.2lf\n",stus[i].showName(),stus[i].showID(),stus[i].showScore()); + flag = 1; + } + } + if (!flag) { + printf("当前没有学生信息!\n"); + } +} + +bool cmpScore(Student stu1, Student stu2) { + if (stu1.showScore() == stu2.showScore()) { + return stu1.showID() < stu2.showID(); + } + return stu1.showScore() > stu2.showScore(); +} + +void ScoreManagement::sortByScore() { + sort(stus,stus + studentNum, cmpScore); +} + +bool cmpID(Student stu1, Student stu2) { + return stu1.showID() < stu2.showID(); +} + +void ScoreManagement::sortByID() { + sort(stus,stus + studentNum, cmpID); +} + +void ScoreManagement::inputScore(long ID) { + sortByID(); + bool find = 0; + int stuIndex = 0; + for (int i = 0; i < studentNum; i++) { + if (stus[i].showID() == -1) continue; + if (stus[i].showID() == ID) { + find = 1; + stuIndex = i; + break; + } + } + if (!find) { + printf("Error:未找到学号为%03ld的学生!\n",ID); + return; + } + while (1) { + printf("请输入学生 %s(学号:%03ld)的成绩:",stus[stuIndex].showName(),ID); + double score; + scanf("%lf",&score); + stus[stuIndex ++].setScore(score); + if (stuIndex == studentNum) break; + ID = stus[stuIndex].showID(); + printf("下一名学生姓名为:%s(学号:%03ld)\n *继续录入请输入1\n *结束录入请输入0\n",stus[stuIndex].showName(),ID); + int k; + scanf("%d",&k); + if (k == 0) break; + } +} + +void ScoreManagement::outputToFile() { + freopen("cppScoreManagement", "w", stdout); + printf("%d\n",studentNum); + for (int i = 0; i < studentNum; i++) { + if (stus[i].showID() == -1) { + printf("-1\n"); + } + else { + printf("%ld\n%s\n%lf\n",stus[i].showID(),stus[i].showName(),stus[i].showScore()); + } + } + fclose(stdout); +} + +void ScoreManagement::inputFromFile() { + FILE *file; + file = fopen("cppScoreManagement", "r"); + int studentNum; + bool fileExist = 1; + if (fscanf(file,"%d",&studentNum) == EOF || studentNum == 0) { + printf("请输入学生总人数:"); + scanf("%d",&studentNum); + fileExist = 0; + } + this -> studentNum = studentNum; + this -> stus = new Student[studentNum]; + if (fileExist) { + for (int i = 0; i < studentNum; i++) { + long ID; + fscanf(file,"%ld",&ID); + if (ID == -1) continue; + char *name; + name = (char *)malloc(sizeof(char)); + double score; + fscanf(file,"%s",name); + fscanf(file,"%lf",&score); + stus[i] = Student(name,ID,score); + } + } + fclose(file); +} diff --git a/practices/cpp/level1/p04_cppScoreManagement/ScoreManagement.h b/practices/cpp/level1/p04_cppScoreManagement/ScoreManagement.h new file mode 100644 index 00000000..0281bcfa --- /dev/null +++ b/practices/cpp/level1/p04_cppScoreManagement/ScoreManagement.h @@ -0,0 +1,32 @@ +// +// ScoreManagement.h +// p04_cppScoreManagement +// +// Created by Jimmy Fan on 2017/4/13. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#ifndef ScoreManagement_h +#define ScoreManagement_h + +#include "Student.h" + +class ScoreManagement { +private: + int studentNum; + Student *stus; +public: + ScoreManagement(int = 0); + bool addStudent(Student stu); + int delStudent(char* name); + int delStudent(long ID); + void show(); + void sortByScore(); + void sortByID(); + void inputScore(long startID); + void outputToFile(); + void inputFromFile(); +}; + + +#endif /* ScoreManagement_h */ diff --git a/practices/cpp/level1/p04_cppScoreManagement/Student.cpp b/practices/cpp/level1/p04_cppScoreManagement/Student.cpp new file mode 100644 index 00000000..4bd3777b --- /dev/null +++ b/practices/cpp/level1/p04_cppScoreManagement/Student.cpp @@ -0,0 +1,35 @@ +// +// Student.cpp +// p04_cppScoreManagement +// +// Created by Jimmy Fan on 2017/4/13. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#include "Student.h" + +Student::Student(char *name, long ID, double score) { + this -> name = name; + this -> ID = ID; + this -> score = score; +} + +long Student::showID() { + return ID; +} + +char* Student::showName() { + return name; +} + +double Student::showScore() { + return score; +} + +void Student::setScore(double score) { + this -> score = score; +} + +void Student::setID(long ID) { + this -> ID = ID; +} diff --git a/practices/cpp/level1/p04_cppScoreManagement/Student.h b/practices/cpp/level1/p04_cppScoreManagement/Student.h new file mode 100644 index 00000000..8a50f54b --- /dev/null +++ b/practices/cpp/level1/p04_cppScoreManagement/Student.h @@ -0,0 +1,29 @@ +// +// Student.h +// p04_cppScoreManagement +// +// Created by Jimmy Fan on 2017/4/13. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#ifndef Student_h +#define Student_h + +#include + +class Student { +private: + char *name; + long ID; + double score; +public: + Student(char* = NULL, long = -1, double = 0); + long showID(); + char* showName(); + double showScore(); + void setScore(double score); + void setID(long ID); +}; + + +#endif /* Student_h */ diff --git a/practices/cpp/level1/p04_cppScoreManagement/main.cpp b/practices/cpp/level1/p04_cppScoreManagement/main.cpp new file mode 100644 index 00000000..62644808 --- /dev/null +++ b/practices/cpp/level1/p04_cppScoreManagement/main.cpp @@ -0,0 +1,98 @@ +// +// main.cpp +// p04_cppScoreManagement +// +// Created by Jimmy Fan on 2017/4/13. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#include +#include "ScoreManagement.h" +#include "Student.h" + +int main(int argc, const char * argv[]) { + ScoreManagement scoreManagement; + scoreManagement.inputFromFile(); + + bool flag = 1; + while (flag) { + int k; + printf("\n请输入需要进行的操作编号:\n"); + printf(" 1:查看学生名单\n 2:添加学生\n 3:删除学生\n 4:录入成绩\n 0:退出程序\n"); + scanf("%d",&k); + switch (k) { + case 0: { + flag = 0; + scoreManagement.outputToFile(); + break; + } + case 1: { + int t; + printf("*按成绩查看名单请输入1\n*按学号查看名单请输入2\n"); + scanf("%d",&t); + if (t == 1) { + scoreManagement.sortByScore(); + scoreManagement.show(); + } + else { + scoreManagement.sortByID(); + scoreManagement.show(); + } + break; + } + case 2: { + char *name; + name = (char *)malloc(sizeof(char)); + long ID; double score; + printf("请输入学生信息\n"); + printf(" 请输入学生姓名:"); + scanf("%s",name); + printf(" 请输入学生学号:"); + scanf("%ld",&ID); + printf(" 请输入学生成绩:"); + scanf("%lf",&score); + scoreManagement.addStudent(Student(name,ID,score)); + break; + } + case 3: { + int t; + printf("*按姓名删除学生请输入1\n*按学号删除学生请输入2\n"); + scanf("%d",&t); + if (t == 1) { + printf("请输入学生姓名:"); + char *name; + scanf("%s",name); + int num = scoreManagement.delStudent(name); + if (num == 0) { + printf("Error:未找到姓名为%s的学生!!\n",name); + } + else { + printf("共找到%d名姓名为%s的学生,已删除其信息\n",num,name); + } + } + else { + printf("请输入学生姓名:"); + long ID; + scanf("%ld",&ID); + int num = scoreManagement.delStudent(ID); + if (num == 0) { + printf("Error:未找到学号为%03ld的学生!!\n",ID); + } + else { + printf("共找到%d名学号为%03ld的学生,已删除其信息\n",num,ID); + } + } + break; + } + case 4: { + printf("请输入起始学号:"); + long startID; + scanf("%ld",&startID); + scoreManagement.inputScore(startID); + break; + } + } + } + + return 0; +} diff --git a/practices/cpp/level1/p05_Canvas/Canvas.cpp b/practices/cpp/level1/p05_Canvas/Canvas.cpp new file mode 100644 index 00000000..407416bf --- /dev/null +++ b/practices/cpp/level1/p05_Canvas/Canvas.cpp @@ -0,0 +1,29 @@ +// +// Canvas.cpp +// p05_Canvas02 +// +// Created by Jimmy Fan on 2017/4/27. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#include +#include "Canvas.h" + +Canvas::Canvas(int n) { + k = 0; + this -> n = n; +} + +void Canvas::addShape(Shape* shape) { + shapes[k ++] = shape; +} + +void Canvas::show() { + for (int i = 0; i < k; i++) { + shapes[i] -> show(); + } +} + +void Canvas::clear() { + k = 0; +} diff --git a/practices/cpp/level1/p05_Canvas/Canvas.h b/practices/cpp/level1/p05_Canvas/Canvas.h new file mode 100644 index 00000000..53816752 --- /dev/null +++ b/practices/cpp/level1/p05_Canvas/Canvas.h @@ -0,0 +1,30 @@ +// +// Canvas.h +// p05_Canvas02 +// +// Created by Jimmy Fan on 2017/4/27. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#ifndef Canvas_h +#define Canvas_h + +#include "Circle.h" +#include "Rect.h" +#define N 100 + +class Canvas { +private: + Shape* shapes[N]; + int k; + int n; +public: + Canvas(int = 0); + void addShape(Shape *shape); + void show(); + void clear(); +}; + + + +#endif /* Canvas_h */ diff --git a/practices/cpp/level1/p05_Canvas/Circle.cpp b/practices/cpp/level1/p05_Canvas/Circle.cpp new file mode 100644 index 00000000..ad1b42e5 --- /dev/null +++ b/practices/cpp/level1/p05_Canvas/Circle.cpp @@ -0,0 +1,23 @@ +// +// Circle.cpp +// p05_Canvas02 +// +// Created by Jimmy Fan on 2017/4/27. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#include +#include "Circle.h" + +Circle::Circle(int x,int y,double r):Point(x,y) { + this -> r = r; +} + +double Circle::area() { + return PI * r * r; +} + +void Circle::show() { + printf("圆心(%d,%d)\n",x,y); + printf("半径为:%.3lf\n",r); +} diff --git a/practices/cpp/level1/p05_Canvas/Circle.h b/practices/cpp/level1/p05_Canvas/Circle.h new file mode 100644 index 00000000..702fb72d --- /dev/null +++ b/practices/cpp/level1/p05_Canvas/Circle.h @@ -0,0 +1,25 @@ +// +// Circle.h +// p05_Canvas02 +// +// Created by Jimmy Fan on 2017/4/27. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#ifndef Circle_h +#define Circle_h + +#include "Point.h" +#define PI 3.1415926 + +class Circle: public Point { +private: + double r; +public: + Circle(int = 0, int y = 0, double = 0); + double area(); + void show(); +}; + + +#endif /* Circle_h */ diff --git a/practices/cpp/level1/p05_Canvas/Point.cpp b/practices/cpp/level1/p05_Canvas/Point.cpp new file mode 100644 index 00000000..c62d5b5e --- /dev/null +++ b/practices/cpp/level1/p05_Canvas/Point.cpp @@ -0,0 +1,23 @@ +// +// Point.cpp +// p05_Canvas02 +// +// Created by Jimmy Fan on 2017/4/27. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#include +#include "Point.h" + +Point::Point(int x, int y) { + this -> x = x; + this -> y = y; +} + +double Point::area() { + return 0; +} + +void Point::show() { + printf("坐标为(%d,%d)\n",x,y); +} diff --git a/practices/cpp/level1/p05_Canvas/Point.h b/practices/cpp/level1/p05_Canvas/Point.h new file mode 100644 index 00000000..efceb8db --- /dev/null +++ b/practices/cpp/level1/p05_Canvas/Point.h @@ -0,0 +1,23 @@ +// +// Point.h +// p05_Canvas02 +// +// Created by Jimmy Fan on 2017/4/27. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#ifndef Point_h +#define Point_h + +#include "Shape.h" + +class Point: public Shape{ +protected: + int x,y; +public: + Point(int = 0, int = 0); + double area(); + void show(); +}; + +#endif /* Point_h */ diff --git a/practices/cpp/level1/p05_Canvas/Rect.cpp b/practices/cpp/level1/p05_Canvas/Rect.cpp new file mode 100644 index 00000000..c800fe87 --- /dev/null +++ b/practices/cpp/level1/p05_Canvas/Rect.cpp @@ -0,0 +1,30 @@ +// +// Rect.cpp +// p05_Canvas02 +// +// Created by Jimmy Fan on 2017/4/27. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#include +#include +#include "Rect.h" +using namespace std; + +int __abs(int x) { + return x < 0 ? -x:x; +} + +Rect::Rect(int x1, int y1, int x2, int y2):Point(min(x1,x2),min(y1,y2)) { + width = __abs(x1 - x2); + height = __abs(y1 - y2); +} + +double Rect::area() { + return width * height; +} + +void Rect::show() { + printf("矩形左下角坐标为(%d,%d)\n",x,y); + printf("宽度为%d 高度为%d\n",width,height); +} diff --git a/practices/cpp/level1/p05_Canvas/Rect.h b/practices/cpp/level1/p05_Canvas/Rect.h new file mode 100644 index 00000000..b1c911ef --- /dev/null +++ b/practices/cpp/level1/p05_Canvas/Rect.h @@ -0,0 +1,23 @@ +// +// Rect.h +// p05_Canvas02 +// +// Created by Jimmy Fan on 2017/4/27. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#ifndef Rect_h +#define Rect_h + +#include "Point.h" + +class Rect: public Point{ +private: + int width,height; +public: + Rect(int = 0, int = 0, int = 0, int = 0); + double area(); + void show(); +}; + +#endif /* Rect_h */ diff --git a/practices/cpp/level1/p05_Canvas/Shape.h b/practices/cpp/level1/p05_Canvas/Shape.h new file mode 100644 index 00000000..e866f0dc --- /dev/null +++ b/practices/cpp/level1/p05_Canvas/Shape.h @@ -0,0 +1,19 @@ +// +// Shape.h +// p05_Canvas02 +// +// Created by Jimmy Fan on 2017/4/27. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#ifndef Shape_h +#define Shape_h + +class Shape { +public: + virtual double area() = 0; + virtual void show() = 0; +}; + + +#endif /* Shape_h */ diff --git a/practices/cpp/level1/p05_Canvas/main.cpp b/practices/cpp/level1/p05_Canvas/main.cpp new file mode 100644 index 00000000..67d01386 --- /dev/null +++ b/practices/cpp/level1/p05_Canvas/main.cpp @@ -0,0 +1,60 @@ +// +// main.cpp +// p05_Canvas02 +// +// Created by Jimmy Fan on 2017/4/27. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#include +#include "Canvas.h" +using namespace std; + +int main(int argc, const char * argv[]) { + Canvas canvas; + bool flag = 1; + while (flag) { + printf("请输入所需操作编号:\n 1:添加图形\n 2:展示画布\n 3:清空画布\n 0:退出程序\n"); + int k; + scanf("%d",&k); + switch (k) { + case 0: + flag = 0; + break; + case 1: { + printf("请输入图形种类编号:\n 1:圆\n 2:矩形\n"); + int kk; + scanf("%d",&kk); + switch (kk) { + case 1: { + int x,y; double r; + printf("圆心: "); + scanf("%d %d",&x,&y); + printf("半径: "); + scanf("%lf",&r); + Circle circle(x,y,r); + canvas.addShape(&circle); + break; + } + case 2: { + int x1,y1,x2,y2; + printf("输入位于对角线上的两个点的坐标: "); + scanf("%d %d %d %d",&x1,&y1,&x2,&y2); + Rect rect(x1,y1,x2,y2); + canvas.addShape(&rect); + break; + } + } + break; + } + case 2: + canvas.show(); + break; + case 3: + canvas.clear(); + break; + } + } + + return 0; +} diff --git a/practices/cpp/level1/p06_CircleAndPoint/Circle.cpp b/practices/cpp/level1/p06_CircleAndPoint/Circle.cpp new file mode 100644 index 00000000..be579fa4 --- /dev/null +++ b/practices/cpp/level1/p06_CircleAndPoint/Circle.cpp @@ -0,0 +1,34 @@ +// +// Circle.cpp +// p06_CircleAndPoint +// +// Created by Jimmy Fan on 2017/4/18. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#include +#include "Circle.h" +#define PI 3.1415926 + +Circle::Circle(double x,double y,double R) { + this -> centrePoint = Point(x,y); + this -> R = R; +} + +void Circle::move(double xx, double yy) { + centrePoint.move(xx, yy); +} + +void Circle::showCircle() { + printf("圆心坐标为:"); + centrePoint.showPoint(); + printf("半径为:%lf\n",this -> R); +} + +double Circle::area() { + return PI * R * R; +} + +void Circle::changeR(int R) { + this -> R = R; +} diff --git a/practices/cpp/level1/p06_CircleAndPoint/Circle.h b/practices/cpp/level1/p06_CircleAndPoint/Circle.h new file mode 100644 index 00000000..631a86e0 --- /dev/null +++ b/practices/cpp/level1/p06_CircleAndPoint/Circle.h @@ -0,0 +1,27 @@ +// +// Circle.h +// p06_CircleAndPoint +// +// Created by Jimmy Fan on 2017/4/18. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#ifndef Circle_h +#define Circle_h + +#include "Point.h" + +class Circle { +private: + Point centrePoint; + double R; +public: + Circle(double = 0,double = 0,double = 0); + void move(double xx,double yy); + void showCircle(); + double area(); + void changeR(int R); +}; + + +#endif /* Circle_h */ diff --git a/practices/cpp/level1/p06_CircleAndPoint/Point.cpp b/practices/cpp/level1/p06_CircleAndPoint/Point.cpp new file mode 100644 index 00000000..69a3d5de --- /dev/null +++ b/practices/cpp/level1/p06_CircleAndPoint/Point.cpp @@ -0,0 +1,24 @@ +// +// Point.cpp +// p06_CircleAndPoint +// +// Created by Jimmy Fan on 2017/4/18. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#include +#include "Point.h" + +Point::Point(double x,double y) { + this -> x = x; + this -> y = y; +} + +void Point::move(double x, double y) { + this -> x += x; + this -> y += y; +} + +void Point::showPoint() { + printf("%.3lf %.3lf\n",this -> x, this -> y); +} diff --git a/practices/cpp/level1/p06_CircleAndPoint/Point.h b/practices/cpp/level1/p06_CircleAndPoint/Point.h new file mode 100644 index 00000000..923792b9 --- /dev/null +++ b/practices/cpp/level1/p06_CircleAndPoint/Point.h @@ -0,0 +1,22 @@ +// +// Point.h +// p06_CircleAndPoint +// +// Created by Jimmy Fan on 2017/4/18. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#ifndef Point_h +#define Point_h + +class Point { +private: + double x,y; +public: + Point(double = 0,double = 0); + void move(double x,double y); + void showPoint(); +}; + + +#endif /* Point_h */ diff --git a/practices/cpp/level1/p06_CircleAndPoint/main.cpp b/practices/cpp/level1/p06_CircleAndPoint/main.cpp new file mode 100644 index 00000000..bc139f51 --- /dev/null +++ b/practices/cpp/level1/p06_CircleAndPoint/main.cpp @@ -0,0 +1,55 @@ +// +// main.cpp +// p06_CircleAndPoint +// +// Created by Jimmy Fan on 2017/4/18. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#include +#include "Circle.h" + +int main(int argc, const char * argv[]) { + printf("请输入圆心坐标:(以逗号隔开)\n"); + double x,y; + scanf("%lf,%lf",&x,&y); + printf("请输入半径: "); + double R; + scanf("%lf",&R); + Circle C(x,y,R); + + bool flag = 1; + while (flag) { + printf("\n请输入要进行的操作编号:\n"); + printf(" 1:移动圆\n 2:求面积\n 3:改变半径\n 4:输出当前圆的信息\n 0:退出程序\n"); + int k; + scanf("%d",&k); + switch (k) { + case 0: + flag = 0; + break; + case 1: { + printf("输入要移动的偏移量:\n"); + double xx,yy; + scanf("%lf,%lf",&xx,&yy); + C.move(xx, yy); + break; + } + case 2: + printf("面积大小为:%.3lf\n",C.area()); + break; + case 3: { + printf("请输入新的半径大小: "); + double R; + scanf("%lf",&R); + C.changeR(R); + break; + } + case 4: + C.showCircle(); + break; + } + } + + return 0; +} From 44a1a047d4ed1839d2e2231946636e0832aa31ce Mon Sep 17 00:00:00 2001 From: ffjmmm Date: Mon, 12 Jun 2017 13:32:02 +0800 Subject: [PATCH 07/11] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=A4=A7=E9=83=A8?= =?UTF-8?q?=E5=88=86=E6=B8=B8=E6=88=8F=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- practices/cpp/level1/p11_Fighters/Fighters | 1 + practices/cpp/level1/p11_Fighters/TodoList.md | 28 +++++++++---------- 2 files changed, 15 insertions(+), 14 deletions(-) create mode 160000 practices/cpp/level1/p11_Fighters/Fighters diff --git a/practices/cpp/level1/p11_Fighters/Fighters b/practices/cpp/level1/p11_Fighters/Fighters new file mode 160000 index 00000000..f27baefc --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters @@ -0,0 +1 @@ +Subproject commit f27baefc6048b262052ee44658821ac247068256 diff --git a/practices/cpp/level1/p11_Fighters/TodoList.md b/practices/cpp/level1/p11_Fighters/TodoList.md index 497725f5..580623a4 100755 --- a/practices/cpp/level1/p11_Fighters/TodoList.md +++ b/practices/cpp/level1/p11_Fighters/TodoList.md @@ -1,20 +1,20 @@ | 任务(功能) | Value | Effort | 是否已完成 -----|-------------------------------|-----------|-----------|------------| -1 | 完成SFML配置,显示“SFML works” | 0 | | | -2 | 显示一架静止的飞机于屏幕底部 | 5 | | | -3 | 背景音乐 | 1 | | | -4 | 左右键,控制移动飞机 | 10 | | | -5 | 限制左右边界 | 1 | | | -6 | 空格键开炮,显示运动的炮弹 | 5 | | | -7 | 炮弹飞出边界处理 | 2 | | | -8 | 随机产生敌机,并向下运动 | 10 | | | -9 | 敌机飞出边界处理 | 2 | | | -10 | 碰撞处理(敌机与炮弹碰撞) | 10 | | | -11 | 显示敌机爆炸过程 | 10 | | | +1 | 完成SFML配置,显示“SFML works” | 0 | | V | +2 | 显示一架静止的飞机于屏幕底部 | 5 | | V | +3 | 背景音乐 | 1 | | V | +4 | 左右键,控制移动飞机 | 10 | | V | +5 | 限制左右边界 | 1 | | V | +6 | 空格键开炮,显示运动的炮弹 | 5 | |V | +7 | 炮弹飞出边界处理 | 2 | | V| +8 | 随机产生敌机,并向下运动 | 10 | | V | +9 | 敌机飞出边界处理 | 2 | |V | +10 | 碰撞处理(敌机与炮弹碰撞) | 10 | | V | +11 | 显示敌机爆炸过程 | 10 | |V | 12 | 爆炸声音 | 2 | | | -13 | 计分及显示 | 5 | | | -14 | 敌机炮弹处理 | 10 | | | -15 | 被敌机击中处理(炸毁、3条命) | 10 | | | +13 | 计分及显示 | 5 | |V | +14 | 敌机炮弹处理 | 10 | |V | +15 | 被敌机击中处理(炸毁、3条命) | 10 | |V | 16 | 过关控制(过关需要计分、游戏速度控制)| 20 | | | 17 | | | | | 18 | | | | | From 710953fde332274cd3ae0411ba425bd2b5475e5f Mon Sep 17 00:00:00 2001 From: ffjmmm Date: Mon, 12 Jun 2017 13:47:53 +0800 Subject: [PATCH 08/11] fix bug --- practices/cpp/level1/p11_Fighters/Fighters | 1 - 1 file changed, 1 deletion(-) delete mode 160000 practices/cpp/level1/p11_Fighters/Fighters diff --git a/practices/cpp/level1/p11_Fighters/Fighters b/practices/cpp/level1/p11_Fighters/Fighters deleted file mode 160000 index f27baefc..00000000 --- a/practices/cpp/level1/p11_Fighters/Fighters +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f27baefc6048b262052ee44658821ac247068256 From e5426ff767c2cee4cc7f2e17dcc49bf05cf09948 Mon Sep 17 00:00:00 2001 From: ffjmmm Date: Mon, 12 Jun 2017 13:50:59 +0800 Subject: [PATCH 09/11] fix bus Signed-off-by: ffjmmm --- Fighters | 1 + 1 file changed, 1 insertion(+) create mode 160000 Fighters diff --git a/Fighters b/Fighters new file mode 160000 index 00000000..f27baefc --- /dev/null +++ b/Fighters @@ -0,0 +1 @@ +Subproject commit f27baefc6048b262052ee44658821ac247068256 From ffdb160acf469b06d9472def3fad1ef493a54129 Mon Sep 17 00:00:00 2001 From: ffjmmm Date: Sun, 18 Jun 2017 15:15:29 +0800 Subject: [PATCH 10/11] =?UTF-8?q?=E5=B0=86=E6=89=93=E9=A3=9E=E6=9C=BA?= =?UTF-8?q?=E6=B8=B8=E6=88=8F=E5=8A=A0=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Fighters | 1 - .../Fighters.xcodeproj/project.pbxproj | 480 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../UserInterfaceState.xcuserstate | Bin 0 -> 53096 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 39 ++ .../xcschemes/Fighters.xcscheme | 91 ++++ .../xcschemes/xcschememanagement.plist | 22 + .../p11_Fighters/Fighters/Background.cpp | 34 ++ .../level1/p11_Fighters/Fighters/Background.h | 23 + .../cpp/level1/p11_Fighters/Fighters/Boss.cpp | 124 +++++ .../cpp/level1/p11_Fighters/Fighters/Boss.h | 39 ++ .../level1/p11_Fighters/Fighters/Enemy.cpp | 65 +++ .../cpp/level1/p11_Fighters/Fighters/Enemy.h | 31 ++ .../level1/p11_Fighters/Fighters/Enemys.cpp | 67 +++ .../cpp/level1/p11_Fighters/Fighters/Enemys.h | 29 ++ .../cpp/level1/p11_Fighters/Fighters/Game.cpp | 383 ++++++++++++++ .../cpp/level1/p11_Fighters/Fighters/Game.h | 61 +++ .../level1/p11_Fighters/Fighters/GameMenu.cpp | 76 +++ .../level1/p11_Fighters/Fighters/GameMenu.h | 37 ++ .../level1/p11_Fighters/Fighters/Heart.cpp | 22 + .../cpp/level1/p11_Fighters/Fighters/Heart.h | 25 + .../cpp/level1/p11_Fighters/Fighters/Menu.cpp | 48 ++ .../cpp/level1/p11_Fighters/Fighters/Menu.h | 31 ++ .../level1/p11_Fighters/Fighters/Player.cpp | 140 +++++ .../cpp/level1/p11_Fighters/Fighters/Player.h | 41 ++ .../level1/p11_Fighters/Fighters/Reward.cpp | 41 ++ .../cpp/level1/p11_Fighters/Fighters/Reward.h | 27 + .../level1/p11_Fighters/Fighters/Score.cpp | 32 ++ .../cpp/level1/p11_Fighters/Fighters/Score.h | 26 + .../cpp/level1/p11_Fighters/Fighters/Shot.cpp | 42 ++ .../cpp/level1/p11_Fighters/Fighters/Shot.h | 27 + .../cpp/level1/p11_Fighters/Fighters/Sprite.h | 25 + .../cpp/level1/p11_Fighters/Fighters/main.cpp | 15 + practices/cpp/level1/p11_Fighters/README.md | 7 +- .../p11_Fighters/Resources/Arial Black.ttf | Bin 0 -> 122556 bytes .../p11_Fighters/Resources/background.png | Bin 0 -> 36714 bytes .../Resources/background_long.png | Bin 0 -> 148255 bytes .../level1/p11_Fighters/Resources/boss.png | Bin 0 -> 41006 bytes .../p11_Fighters/Resources/boss_down1.png | Bin 0 -> 42558 bytes .../p11_Fighters/Resources/boss_down2.png | Bin 0 -> 46823 bytes .../p11_Fighters/Resources/boss_down3.png | Bin 0 -> 49824 bytes .../p11_Fighters/Resources/boss_down4.png | Bin 0 -> 53234 bytes .../p11_Fighters/Resources/boss_down5.png | Bin 0 -> 55705 bytes .../p11_Fighters/Resources/boss_down6.png | Bin 0 -> 13251 bytes .../p11_Fighters/Resources/boss_hit.png | Bin 0 -> 42105 bytes .../level1/p11_Fighters/Resources/bullet.png | Bin 0 -> 3324 bytes .../level1/p11_Fighters/Resources/bullet.wav | Bin 0 -> 36958 bytes .../level1/p11_Fighters/Resources/bullet1.png | Bin 0 -> 3217 bytes .../p11_Fighters/Resources/bulletEnemy.png | Bin 0 -> 498 bytes .../level1/p11_Fighters/Resources/enemy0.png | Bin 0 -> 2970 bytes .../p11_Fighters/Resources/enemy0_down.wav | Bin 0 -> 73822 bytes .../p11_Fighters/Resources/enemy0_down1.png | Bin 0 -> 3423 bytes .../p11_Fighters/Resources/enemy0_down2.png | Bin 0 -> 3863 bytes .../p11_Fighters/Resources/enemy0_down3.png | Bin 0 -> 5305 bytes .../p11_Fighters/Resources/enemy0_down4.png | Bin 0 -> 1730 bytes .../p11_Fighters/Resources/game_music.wav | Bin 0 -> 2177360 bytes .../p11_Fighters/Resources/game_over.wav | Bin 0 -> 92254 bytes .../level1/p11_Fighters/Resources/heart.png | Bin 0 -> 3016 bytes .../level1/p11_Fighters/Resources/plane.png | Bin 0 -> 9464 bytes .../p11_Fighters/Resources/plane_down1.png | Bin 0 -> 11229 bytes .../p11_Fighters/Resources/plane_down2.png | Bin 0 -> 11943 bytes .../p11_Fighters/Resources/plane_down3.png | Bin 0 -> 12597 bytes .../p11_Fighters/Resources/plane_down4.png | Bin 0 -> 4745 bytes .../p11_Fighters/Resources/player_down.wav | Bin 0 -> 59998 bytes .../p11_Fighters/Resources/reward_damage.png | Bin 0 -> 5421 bytes .../p11_Fighters/Resources/reward_life.png | Bin 0 -> 3954 bytes .../p11_Fighters/Resources/reward_speed.png | Bin 0 -> 2548 bytes .../p11_Fighters/Resources/selector.png | Bin 0 -> 1783 bytes practices/cpp/level1/p11_Fighters/TodoList.md | 15 +- practices/cpp/level1/p11_Fighters/UML.png | Bin 0 -> 145017 bytes 70 files changed, 2158 insertions(+), 15 deletions(-) delete mode 160000 Fighters create mode 100644 practices/cpp/level1/p11_Fighters/Fighters.xcodeproj/project.pbxproj create mode 100644 practices/cpp/level1/p11_Fighters/Fighters.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 practices/cpp/level1/p11_Fighters/Fighters.xcodeproj/project.xcworkspace/xcuserdata/fjm.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 practices/cpp/level1/p11_Fighters/Fighters.xcodeproj/xcuserdata/fjm.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 practices/cpp/level1/p11_Fighters/Fighters.xcodeproj/xcuserdata/fjm.xcuserdatad/xcschemes/Fighters.xcscheme create mode 100644 practices/cpp/level1/p11_Fighters/Fighters.xcodeproj/xcuserdata/fjm.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 practices/cpp/level1/p11_Fighters/Fighters/Background.cpp create mode 100644 practices/cpp/level1/p11_Fighters/Fighters/Background.h create mode 100644 practices/cpp/level1/p11_Fighters/Fighters/Boss.cpp create mode 100644 practices/cpp/level1/p11_Fighters/Fighters/Boss.h create mode 100644 practices/cpp/level1/p11_Fighters/Fighters/Enemy.cpp create mode 100644 practices/cpp/level1/p11_Fighters/Fighters/Enemy.h create mode 100644 practices/cpp/level1/p11_Fighters/Fighters/Enemys.cpp create mode 100644 practices/cpp/level1/p11_Fighters/Fighters/Enemys.h create mode 100644 practices/cpp/level1/p11_Fighters/Fighters/Game.cpp create mode 100644 practices/cpp/level1/p11_Fighters/Fighters/Game.h create mode 100644 practices/cpp/level1/p11_Fighters/Fighters/GameMenu.cpp create mode 100644 practices/cpp/level1/p11_Fighters/Fighters/GameMenu.h create mode 100644 practices/cpp/level1/p11_Fighters/Fighters/Heart.cpp create mode 100644 practices/cpp/level1/p11_Fighters/Fighters/Heart.h create mode 100644 practices/cpp/level1/p11_Fighters/Fighters/Menu.cpp create mode 100644 practices/cpp/level1/p11_Fighters/Fighters/Menu.h create mode 100644 practices/cpp/level1/p11_Fighters/Fighters/Player.cpp create mode 100644 practices/cpp/level1/p11_Fighters/Fighters/Player.h create mode 100644 practices/cpp/level1/p11_Fighters/Fighters/Reward.cpp create mode 100644 practices/cpp/level1/p11_Fighters/Fighters/Reward.h create mode 100644 practices/cpp/level1/p11_Fighters/Fighters/Score.cpp create mode 100644 practices/cpp/level1/p11_Fighters/Fighters/Score.h create mode 100644 practices/cpp/level1/p11_Fighters/Fighters/Shot.cpp create mode 100644 practices/cpp/level1/p11_Fighters/Fighters/Shot.h create mode 100644 practices/cpp/level1/p11_Fighters/Fighters/Sprite.h create mode 100644 practices/cpp/level1/p11_Fighters/Fighters/main.cpp mode change 100755 => 100644 practices/cpp/level1/p11_Fighters/README.md create mode 100644 practices/cpp/level1/p11_Fighters/Resources/Arial Black.ttf create mode 100755 practices/cpp/level1/p11_Fighters/Resources/background.png create mode 100644 practices/cpp/level1/p11_Fighters/Resources/background_long.png create mode 100755 practices/cpp/level1/p11_Fighters/Resources/boss.png create mode 100755 practices/cpp/level1/p11_Fighters/Resources/boss_down1.png create mode 100755 practices/cpp/level1/p11_Fighters/Resources/boss_down2.png create mode 100755 practices/cpp/level1/p11_Fighters/Resources/boss_down3.png create mode 100755 practices/cpp/level1/p11_Fighters/Resources/boss_down4.png create mode 100755 practices/cpp/level1/p11_Fighters/Resources/boss_down5.png create mode 100755 practices/cpp/level1/p11_Fighters/Resources/boss_down6.png create mode 100755 practices/cpp/level1/p11_Fighters/Resources/boss_hit.png create mode 100755 practices/cpp/level1/p11_Fighters/Resources/bullet.png create mode 100644 practices/cpp/level1/p11_Fighters/Resources/bullet.wav create mode 100755 practices/cpp/level1/p11_Fighters/Resources/bullet1.png create mode 100755 practices/cpp/level1/p11_Fighters/Resources/bulletEnemy.png create mode 100755 practices/cpp/level1/p11_Fighters/Resources/enemy0.png create mode 100644 practices/cpp/level1/p11_Fighters/Resources/enemy0_down.wav create mode 100755 practices/cpp/level1/p11_Fighters/Resources/enemy0_down1.png create mode 100755 practices/cpp/level1/p11_Fighters/Resources/enemy0_down2.png create mode 100755 practices/cpp/level1/p11_Fighters/Resources/enemy0_down3.png create mode 100755 practices/cpp/level1/p11_Fighters/Resources/enemy0_down4.png create mode 100644 practices/cpp/level1/p11_Fighters/Resources/game_music.wav create mode 100644 practices/cpp/level1/p11_Fighters/Resources/game_over.wav create mode 100644 practices/cpp/level1/p11_Fighters/Resources/heart.png create mode 100644 practices/cpp/level1/p11_Fighters/Resources/plane.png create mode 100755 practices/cpp/level1/p11_Fighters/Resources/plane_down1.png create mode 100755 practices/cpp/level1/p11_Fighters/Resources/plane_down2.png create mode 100755 practices/cpp/level1/p11_Fighters/Resources/plane_down3.png create mode 100755 practices/cpp/level1/p11_Fighters/Resources/plane_down4.png create mode 100644 practices/cpp/level1/p11_Fighters/Resources/player_down.wav create mode 100644 practices/cpp/level1/p11_Fighters/Resources/reward_damage.png create mode 100644 practices/cpp/level1/p11_Fighters/Resources/reward_life.png create mode 100644 practices/cpp/level1/p11_Fighters/Resources/reward_speed.png create mode 100755 practices/cpp/level1/p11_Fighters/Resources/selector.png create mode 100644 practices/cpp/level1/p11_Fighters/UML.png diff --git a/Fighters b/Fighters deleted file mode 160000 index f27baefc..00000000 --- a/Fighters +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f27baefc6048b262052ee44658821ac247068256 diff --git a/practices/cpp/level1/p11_Fighters/Fighters.xcodeproj/project.pbxproj b/practices/cpp/level1/p11_Fighters/Fighters.xcodeproj/project.pbxproj new file mode 100644 index 00000000..b679f0d5 --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters.xcodeproj/project.pbxproj @@ -0,0 +1,480 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 142924D91EC41059000BCA4B /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 142924D81EC41059000BCA4B /* main.cpp */; }; + 142924EF1EC41184000BCA4B /* libsfml-audio.2.4.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 142924E01EC41184000BCA4B /* libsfml-audio.2.4.2.dylib */; }; + 142924F01EC41184000BCA4B /* libsfml-audio.2.4.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 142924E11EC41184000BCA4B /* libsfml-audio.2.4.2.dylib */; }; + 142924F11EC41184000BCA4B /* libsfml-audio.2.4.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 142924E21EC41184000BCA4B /* libsfml-audio.2.4.2.dylib */; }; + 142924F21EC41184000BCA4B /* libsfml-graphics.2.4.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 142924E31EC41184000BCA4B /* libsfml-graphics.2.4.2.dylib */; }; + 142924F31EC41184000BCA4B /* libsfml-graphics.2.4.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 142924E41EC41184000BCA4B /* libsfml-graphics.2.4.2.dylib */; }; + 142924F41EC41184000BCA4B /* libsfml-graphics.2.4.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 142924E51EC41184000BCA4B /* libsfml-graphics.2.4.2.dylib */; }; + 142924F51EC41184000BCA4B /* libsfml-network.2.4.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 142924E61EC41184000BCA4B /* libsfml-network.2.4.2.dylib */; }; + 142924F61EC41184000BCA4B /* libsfml-network.2.4.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 142924E71EC41184000BCA4B /* libsfml-network.2.4.2.dylib */; }; + 142924F71EC41184000BCA4B /* libsfml-network.2.4.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 142924E81EC41184000BCA4B /* libsfml-network.2.4.2.dylib */; }; + 142924F81EC41184000BCA4B /* libsfml-system.2.4.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 142924E91EC41184000BCA4B /* libsfml-system.2.4.2.dylib */; }; + 142924F91EC41184000BCA4B /* libsfml-system.2.4.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 142924EA1EC41184000BCA4B /* libsfml-system.2.4.2.dylib */; }; + 142924FA1EC41184000BCA4B /* libsfml-system.2.4.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 142924EB1EC41184000BCA4B /* libsfml-system.2.4.2.dylib */; }; + 142924FB1EC41184000BCA4B /* libsfml-window.2.4.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 142924EC1EC41184000BCA4B /* libsfml-window.2.4.2.dylib */; }; + 142924FC1EC41184000BCA4B /* libsfml-window.2.4.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 142924ED1EC41184000BCA4B /* libsfml-window.2.4.2.dylib */; }; + 142924FD1EC41184000BCA4B /* libsfml-window.2.4.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 142924EE1EC41184000BCA4B /* libsfml-window.2.4.2.dylib */; }; + 149720171EEEAC0E00CF0321 /* Background.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 149720161EEEAC0E00CF0321 /* Background.cpp */; }; + 1497201C1EEEBF0800CF0321 /* Menu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1497201B1EEEBF0800CF0321 /* Menu.cpp */; }; + 149720221EEEDAAB00CF0321 /* Reward.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 149720211EEEDAAB00CF0321 /* Reward.cpp */; }; + 14B6B2E91ED3C2D2000ED50B /* Score.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14B6B2E81ED3C2D2000ED50B /* Score.cpp */; }; + 14D3B1AA1EE63DE500ED2639 /* Boss.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14D3B1A91EE63DE500ED2639 /* Boss.cpp */; }; + 14E745A71EF20BE2005BDC7B /* GameMenu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14E745A61EF20BE2005BDC7B /* GameMenu.cpp */; }; + 14F563DD1ECA85E9002BB1E0 /* Shot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14F563DC1ECA85E9002BB1E0 /* Shot.cpp */; }; + 14F5EEEE1ECBD48C003D4EB6 /* Enemys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14F5EEED1ECBD48C003D4EB6 /* Enemys.cpp */; }; + 14FA1FB61ED68AD000E12981 /* Heart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14FA1FB51ED68AD000E12981 /* Heart.cpp */; }; + 14FB25AF1EC9C62E00E53C35 /* Game.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14FB25AE1EC9C62E00E53C35 /* Game.cpp */; }; + 14FB25B21EC9CA7E00E53C35 /* Player.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14FB25B11EC9CA7E00E53C35 /* Player.cpp */; }; + 14FB25B51EC9D2BC00E53C35 /* Enemy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14FB25B41EC9D2BC00E53C35 /* Enemy.cpp */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 142924D31EC41059000BCA4B /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = /usr/share/man/man1/; + dstSubfolderSpec = 0; + files = ( + ); + runOnlyForDeploymentPostprocessing = 1; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 142924D51EC41059000BCA4B /* Fighters */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = Fighters; sourceTree = BUILT_PRODUCTS_DIR; }; + 142924D81EC41059000BCA4B /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + 142924E01EC41184000BCA4B /* libsfml-audio.2.4.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libsfml-audio.2.4.2.dylib"; path = "../SFML-2.4.2-osx-clang/lib/libsfml-audio.2.4.2.dylib"; sourceTree = ""; }; + 142924E11EC41184000BCA4B /* libsfml-audio.2.4.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libsfml-audio.2.4.2.dylib"; path = "../SFML-2.4.2-osx-clang/lib/libsfml-audio.2.4.2.dylib"; sourceTree = ""; }; + 142924E21EC41184000BCA4B /* libsfml-audio.2.4.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libsfml-audio.2.4.2.dylib"; path = "../SFML-2.4.2-osx-clang/lib/libsfml-audio.2.4.2.dylib"; sourceTree = ""; }; + 142924E31EC41184000BCA4B /* libsfml-graphics.2.4.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libsfml-graphics.2.4.2.dylib"; path = "../SFML-2.4.2-osx-clang/lib/libsfml-graphics.2.4.2.dylib"; sourceTree = ""; }; + 142924E41EC41184000BCA4B /* libsfml-graphics.2.4.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libsfml-graphics.2.4.2.dylib"; path = "../SFML-2.4.2-osx-clang/lib/libsfml-graphics.2.4.2.dylib"; sourceTree = ""; }; + 142924E51EC41184000BCA4B /* libsfml-graphics.2.4.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libsfml-graphics.2.4.2.dylib"; path = "../SFML-2.4.2-osx-clang/lib/libsfml-graphics.2.4.2.dylib"; sourceTree = ""; }; + 142924E61EC41184000BCA4B /* libsfml-network.2.4.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libsfml-network.2.4.2.dylib"; path = "../SFML-2.4.2-osx-clang/lib/libsfml-network.2.4.2.dylib"; sourceTree = ""; }; + 142924E71EC41184000BCA4B /* libsfml-network.2.4.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libsfml-network.2.4.2.dylib"; path = "../SFML-2.4.2-osx-clang/lib/libsfml-network.2.4.2.dylib"; sourceTree = ""; }; + 142924E81EC41184000BCA4B /* libsfml-network.2.4.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libsfml-network.2.4.2.dylib"; path = "../SFML-2.4.2-osx-clang/lib/libsfml-network.2.4.2.dylib"; sourceTree = ""; }; + 142924E91EC41184000BCA4B /* libsfml-system.2.4.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libsfml-system.2.4.2.dylib"; path = "../SFML-2.4.2-osx-clang/lib/libsfml-system.2.4.2.dylib"; sourceTree = ""; }; + 142924EA1EC41184000BCA4B /* libsfml-system.2.4.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libsfml-system.2.4.2.dylib"; path = "../SFML-2.4.2-osx-clang/lib/libsfml-system.2.4.2.dylib"; sourceTree = ""; }; + 142924EB1EC41184000BCA4B /* libsfml-system.2.4.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libsfml-system.2.4.2.dylib"; path = "../SFML-2.4.2-osx-clang/lib/libsfml-system.2.4.2.dylib"; sourceTree = ""; }; + 142924EC1EC41184000BCA4B /* libsfml-window.2.4.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libsfml-window.2.4.2.dylib"; path = "../SFML-2.4.2-osx-clang/lib/libsfml-window.2.4.2.dylib"; sourceTree = ""; }; + 142924ED1EC41184000BCA4B /* libsfml-window.2.4.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libsfml-window.2.4.2.dylib"; path = "../SFML-2.4.2-osx-clang/lib/libsfml-window.2.4.2.dylib"; sourceTree = ""; }; + 142924EE1EC41184000BCA4B /* libsfml-window.2.4.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libsfml-window.2.4.2.dylib"; path = "../SFML-2.4.2-osx-clang/lib/libsfml-window.2.4.2.dylib"; sourceTree = ""; }; + 149720151EEEAC0100CF0321 /* Background.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Background.h; sourceTree = ""; }; + 149720161EEEAC0E00CF0321 /* Background.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Background.cpp; sourceTree = ""; }; + 149720181EEEAD4800CF0321 /* background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = background.png; path = Resources/background.png; sourceTree = ""; }; + 149720191EEEB5AC00CF0321 /* background_long.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = background_long.png; path = Resources/background_long.png; sourceTree = ""; }; + 1497201A1EEEBEFD00CF0321 /* Menu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Menu.h; sourceTree = ""; }; + 1497201B1EEEBF0800CF0321 /* Menu.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Menu.cpp; sourceTree = ""; }; + 1497201D1EEEDA8800CF0321 /* reward_damage.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = reward_damage.png; path = Resources/reward_damage.png; sourceTree = ""; }; + 1497201E1EEEDA8800CF0321 /* reward_life.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = reward_life.png; path = Resources/reward_life.png; sourceTree = ""; }; + 1497201F1EEEDA8800CF0321 /* reward_speed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = reward_speed.png; path = Resources/reward_speed.png; sourceTree = ""; }; + 149720211EEEDAAB00CF0321 /* Reward.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Reward.cpp; sourceTree = ""; }; + 14B6B2E21ED3BEC9000ED50B /* bullet.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = bullet.png; path = Resources/bullet.png; sourceTree = ""; }; + 14B6B2E31ED3BEC9000ED50B /* enemy0.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = enemy0.png; path = Resources/enemy0.png; sourceTree = ""; }; + 14B6B2E51ED3BEC9000ED50B /* plane.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = plane.png; path = Resources/plane.png; sourceTree = ""; }; + 14B6B2E61ED3C1F9000ED50B /* Arial Black.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "Arial Black.ttf"; path = "Resources/Arial Black.ttf"; sourceTree = ""; }; + 14B6B2E71ED3C2C5000ED50B /* Score.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Score.h; sourceTree = ""; }; + 14B6B2E81ED3C2D2000ED50B /* Score.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Score.cpp; sourceTree = ""; }; + 14B6B2EA1ED3C749000ED50B /* enemy0_down1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = enemy0_down1.png; path = Resources/enemy0_down1.png; sourceTree = ""; }; + 14B6B2EB1ED3C749000ED50B /* enemy0_down2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = enemy0_down2.png; path = Resources/enemy0_down2.png; sourceTree = ""; }; + 14B6B2EC1ED3C749000ED50B /* enemy0_down3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = enemy0_down3.png; path = Resources/enemy0_down3.png; sourceTree = ""; }; + 14B6B2ED1ED3C749000ED50B /* enemy0_down4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = enemy0_down4.png; path = Resources/enemy0_down4.png; sourceTree = ""; }; + 14D3B1A01EE63DC100ED2639 /* boss_down1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = boss_down1.png; path = Resources/boss_down1.png; sourceTree = ""; }; + 14D3B1A11EE63DC100ED2639 /* boss_down2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = boss_down2.png; path = Resources/boss_down2.png; sourceTree = ""; }; + 14D3B1A21EE63DC100ED2639 /* boss_down3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = boss_down3.png; path = Resources/boss_down3.png; sourceTree = ""; }; + 14D3B1A31EE63DC100ED2639 /* boss_down4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = boss_down4.png; path = Resources/boss_down4.png; sourceTree = ""; }; + 14D3B1A41EE63DC100ED2639 /* boss_down5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = boss_down5.png; path = Resources/boss_down5.png; sourceTree = ""; }; + 14D3B1A51EE63DC100ED2639 /* boss_down6.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = boss_down6.png; path = Resources/boss_down6.png; sourceTree = ""; }; + 14D3B1A61EE63DC100ED2639 /* boss_hit.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = boss_hit.png; path = Resources/boss_hit.png; sourceTree = ""; }; + 14D3B1A71EE63DC100ED2639 /* boss.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = boss.png; path = Resources/boss.png; sourceTree = ""; }; + 14D3B1A81EE63DDA00ED2639 /* Boss.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Boss.h; sourceTree = ""; }; + 14D3B1A91EE63DE500ED2639 /* Boss.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Boss.cpp; sourceTree = ""; }; + 14E745A51EF20BD6005BDC7B /* GameMenu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GameMenu.h; sourceTree = ""; }; + 14E745A61EF20BE2005BDC7B /* GameMenu.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GameMenu.cpp; sourceTree = ""; }; + 14E745A81EF21745005BDC7B /* selector.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = selector.png; path = Resources/selector.png; sourceTree = ""; }; + 14E9EEF11EF65DA200610949 /* Reward.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Reward.h; sourceTree = ""; }; + 14F563DB1ECA85D9002BB1E0 /* Shot.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Shot.h; sourceTree = ""; }; + 14F563DC1ECA85E9002BB1E0 /* Shot.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Shot.cpp; sourceTree = ""; }; + 14F5EEEC1ECBD47F003D4EB6 /* Enemys.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Enemys.h; sourceTree = ""; }; + 14F5EEED1ECBD48C003D4EB6 /* Enemys.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Enemys.cpp; sourceTree = ""; }; + 14F8DCD31EDFB730006F3CF2 /* game_music.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = game_music.wav; path = Resources/game_music.wav; sourceTree = ""; }; + 14F8DCD41EDFB8B6006F3CF2 /* enemy0_down.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = enemy0_down.wav; path = Resources/enemy0_down.wav; sourceTree = ""; }; + 14F8DCD61EDFBB95006F3CF2 /* bullet.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = bullet.wav; path = Resources/bullet.wav; sourceTree = ""; }; + 14F8DCD81EDFBC8F006F3CF2 /* player_down.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = player_down.wav; path = Resources/player_down.wav; sourceTree = ""; }; + 14F8DCD91EDFBCFC006F3CF2 /* game_over.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = game_over.wav; path = Resources/game_over.wav; sourceTree = ""; }; + 14FA1FAD1ED67A3800E12981 /* bulletEnemy.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = bulletEnemy.png; path = Resources/bulletEnemy.png; sourceTree = ""; }; + 14FA1FAE1ED67ACB00E12981 /* bullet1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = bullet1.png; path = Resources/bullet1.png; sourceTree = ""; }; + 14FA1FAF1ED6816400E12981 /* plane_down1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = plane_down1.png; path = Resources/plane_down1.png; sourceTree = ""; }; + 14FA1FB01ED6816400E12981 /* plane_down2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = plane_down2.png; path = Resources/plane_down2.png; sourceTree = ""; }; + 14FA1FB11ED6816400E12981 /* plane_down3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = plane_down3.png; path = Resources/plane_down3.png; sourceTree = ""; }; + 14FA1FB21ED6816400E12981 /* plane_down4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = plane_down4.png; path = Resources/plane_down4.png; sourceTree = ""; }; + 14FA1FB41ED689EE00E12981 /* Heart.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Heart.h; sourceTree = ""; }; + 14FA1FB51ED68AD000E12981 /* Heart.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Heart.cpp; sourceTree = ""; }; + 14FA1FB91ED6CEC500E12981 /* heart.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = heart.png; path = Resources/heart.png; sourceTree = ""; }; + 14FB25AD1EC9C62100E53C35 /* Game.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Game.h; sourceTree = ""; }; + 14FB25AE1EC9C62E00E53C35 /* Game.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Game.cpp; sourceTree = ""; }; + 14FB25B01EC9CA6800E53C35 /* Player.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Player.h; sourceTree = ""; }; + 14FB25B11EC9CA7E00E53C35 /* Player.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Player.cpp; sourceTree = ""; }; + 14FB25B31EC9D2B200E53C35 /* Enemy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Enemy.h; sourceTree = ""; }; + 14FB25B41EC9D2BC00E53C35 /* Enemy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Enemy.cpp; sourceTree = ""; }; + 14FB25B61EC9D35300E53C35 /* Sprite.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Sprite.h; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 142924D21EC41059000BCA4B /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 142924EF1EC41184000BCA4B /* libsfml-audio.2.4.2.dylib in Frameworks */, + 142924F01EC41184000BCA4B /* libsfml-audio.2.4.2.dylib in Frameworks */, + 142924F11EC41184000BCA4B /* libsfml-audio.2.4.2.dylib in Frameworks */, + 142924F21EC41184000BCA4B /* libsfml-graphics.2.4.2.dylib in Frameworks */, + 142924F31EC41184000BCA4B /* libsfml-graphics.2.4.2.dylib in Frameworks */, + 142924F41EC41184000BCA4B /* libsfml-graphics.2.4.2.dylib in Frameworks */, + 142924F51EC41184000BCA4B /* libsfml-network.2.4.2.dylib in Frameworks */, + 142924F61EC41184000BCA4B /* libsfml-network.2.4.2.dylib in Frameworks */, + 142924F71EC41184000BCA4B /* libsfml-network.2.4.2.dylib in Frameworks */, + 142924F81EC41184000BCA4B /* libsfml-system.2.4.2.dylib in Frameworks */, + 142924F91EC41184000BCA4B /* libsfml-system.2.4.2.dylib in Frameworks */, + 142924FA1EC41184000BCA4B /* libsfml-system.2.4.2.dylib in Frameworks */, + 142924FB1EC41184000BCA4B /* libsfml-window.2.4.2.dylib in Frameworks */, + 142924FC1EC41184000BCA4B /* libsfml-window.2.4.2.dylib in Frameworks */, + 142924FD1EC41184000BCA4B /* libsfml-window.2.4.2.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 142924CC1EC41059000BCA4B = { + isa = PBXGroup; + children = ( + 142924FF1EC412B6000BCA4B /* Resources */, + 142924D71EC41059000BCA4B /* Fighters */, + 142924D61EC41059000BCA4B /* Products */, + 142924DF1EC41184000BCA4B /* Frameworks */, + ); + sourceTree = ""; + }; + 142924D61EC41059000BCA4B /* Products */ = { + isa = PBXGroup; + children = ( + 142924D51EC41059000BCA4B /* Fighters */, + ); + name = Products; + sourceTree = ""; + }; + 142924D71EC41059000BCA4B /* Fighters */ = { + isa = PBXGroup; + children = ( + 142924D81EC41059000BCA4B /* main.cpp */, + 14FB25AD1EC9C62100E53C35 /* Game.h */, + 14FB25AE1EC9C62E00E53C35 /* Game.cpp */, + 14E745A51EF20BD6005BDC7B /* GameMenu.h */, + 14E745A61EF20BE2005BDC7B /* GameMenu.cpp */, + 1497201A1EEEBEFD00CF0321 /* Menu.h */, + 1497201B1EEEBF0800CF0321 /* Menu.cpp */, + 14E9EEF11EF65DA200610949 /* Reward.h */, + 149720211EEEDAAB00CF0321 /* Reward.cpp */, + 14FB25B61EC9D35300E53C35 /* Sprite.h */, + 14FB25B01EC9CA6800E53C35 /* Player.h */, + 14FB25B11EC9CA7E00E53C35 /* Player.cpp */, + 149720151EEEAC0100CF0321 /* Background.h */, + 149720161EEEAC0E00CF0321 /* Background.cpp */, + 14D3B1A81EE63DDA00ED2639 /* Boss.h */, + 14D3B1A91EE63DE500ED2639 /* Boss.cpp */, + 14FB25B31EC9D2B200E53C35 /* Enemy.h */, + 14FB25B41EC9D2BC00E53C35 /* Enemy.cpp */, + 14F5EEEC1ECBD47F003D4EB6 /* Enemys.h */, + 14F5EEED1ECBD48C003D4EB6 /* Enemys.cpp */, + 14F563DB1ECA85D9002BB1E0 /* Shot.h */, + 14F563DC1ECA85E9002BB1E0 /* Shot.cpp */, + 14B6B2E71ED3C2C5000ED50B /* Score.h */, + 14B6B2E81ED3C2D2000ED50B /* Score.cpp */, + 14FA1FB41ED689EE00E12981 /* Heart.h */, + 14FA1FB51ED68AD000E12981 /* Heart.cpp */, + ); + path = Fighters; + sourceTree = ""; + }; + 142924DF1EC41184000BCA4B /* Frameworks */ = { + isa = PBXGroup; + children = ( + 142924E01EC41184000BCA4B /* libsfml-audio.2.4.2.dylib */, + 142924E11EC41184000BCA4B /* libsfml-audio.2.4.2.dylib */, + 142924E21EC41184000BCA4B /* libsfml-audio.2.4.2.dylib */, + 142924E31EC41184000BCA4B /* libsfml-graphics.2.4.2.dylib */, + 142924E41EC41184000BCA4B /* libsfml-graphics.2.4.2.dylib */, + 142924E51EC41184000BCA4B /* libsfml-graphics.2.4.2.dylib */, + 142924E61EC41184000BCA4B /* libsfml-network.2.4.2.dylib */, + 142924E71EC41184000BCA4B /* libsfml-network.2.4.2.dylib */, + 142924E81EC41184000BCA4B /* libsfml-network.2.4.2.dylib */, + 142924E91EC41184000BCA4B /* libsfml-system.2.4.2.dylib */, + 142924EA1EC41184000BCA4B /* libsfml-system.2.4.2.dylib */, + 142924EB1EC41184000BCA4B /* libsfml-system.2.4.2.dylib */, + 142924EC1EC41184000BCA4B /* libsfml-window.2.4.2.dylib */, + 142924ED1EC41184000BCA4B /* libsfml-window.2.4.2.dylib */, + 142924EE1EC41184000BCA4B /* libsfml-window.2.4.2.dylib */, + ); + name = Frameworks; + sourceTree = ""; + }; + 142924FF1EC412B6000BCA4B /* Resources */ = { + isa = PBXGroup; + children = ( + 149720181EEEAD4800CF0321 /* background.png */, + 149720191EEEB5AC00CF0321 /* background_long.png */, + 14D3B1A01EE63DC100ED2639 /* boss_down1.png */, + 14D3B1A11EE63DC100ED2639 /* boss_down2.png */, + 14D3B1A21EE63DC100ED2639 /* boss_down3.png */, + 14D3B1A31EE63DC100ED2639 /* boss_down4.png */, + 14D3B1A41EE63DC100ED2639 /* boss_down5.png */, + 14D3B1A51EE63DC100ED2639 /* boss_down6.png */, + 14D3B1A61EE63DC100ED2639 /* boss_hit.png */, + 14D3B1A71EE63DC100ED2639 /* boss.png */, + 14F8DCD91EDFBCFC006F3CF2 /* game_over.wav */, + 14F8DCD31EDFB730006F3CF2 /* game_music.wav */, + 14F8DCD81EDFBC8F006F3CF2 /* player_down.wav */, + 14F8DCD41EDFB8B6006F3CF2 /* enemy0_down.wav */, + 14F8DCD61EDFBB95006F3CF2 /* bullet.wav */, + 14FA1FB91ED6CEC500E12981 /* heart.png */, + 14B6B2E21ED3BEC9000ED50B /* bullet.png */, + 14FA1FAD1ED67A3800E12981 /* bulletEnemy.png */, + 14FA1FAE1ED67ACB00E12981 /* bullet1.png */, + 14B6B2E31ED3BEC9000ED50B /* enemy0.png */, + 14B6B2EA1ED3C749000ED50B /* enemy0_down1.png */, + 14B6B2EB1ED3C749000ED50B /* enemy0_down2.png */, + 14B6B2EC1ED3C749000ED50B /* enemy0_down3.png */, + 14B6B2ED1ED3C749000ED50B /* enemy0_down4.png */, + 14B6B2E61ED3C1F9000ED50B /* Arial Black.ttf */, + 14E745A81EF21745005BDC7B /* selector.png */, + 14B6B2E51ED3BEC9000ED50B /* plane.png */, + 14FA1FAF1ED6816400E12981 /* plane_down1.png */, + 14FA1FB01ED6816400E12981 /* plane_down2.png */, + 14FA1FB11ED6816400E12981 /* plane_down3.png */, + 14FA1FB21ED6816400E12981 /* plane_down4.png */, + 1497201D1EEEDA8800CF0321 /* reward_damage.png */, + 1497201E1EEEDA8800CF0321 /* reward_life.png */, + 1497201F1EEEDA8800CF0321 /* reward_speed.png */, + ); + name = Resources; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 142924D41EC41059000BCA4B /* Fighters */ = { + isa = PBXNativeTarget; + buildConfigurationList = 142924DC1EC41059000BCA4B /* Build configuration list for PBXNativeTarget "Fighters" */; + buildPhases = ( + 142924D11EC41059000BCA4B /* Sources */, + 142924D21EC41059000BCA4B /* Frameworks */, + 142924D31EC41059000BCA4B /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Fighters; + productName = Fighters; + productReference = 142924D51EC41059000BCA4B /* Fighters */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 142924CD1EC41059000BCA4B /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0820; + ORGANIZATIONNAME = "Jimmy Fan"; + TargetAttributes = { + 142924D41EC41059000BCA4B = { + CreatedOnToolsVersion = 8.2.1; + ProvisioningStyle = Automatic; + }; + }; + }; + buildConfigurationList = 142924D01EC41059000BCA4B /* Build configuration list for PBXProject "Fighters" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 142924CC1EC41059000BCA4B; + productRefGroup = 142924D61EC41059000BCA4B /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 142924D41EC41059000BCA4B /* Fighters */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 142924D11EC41059000BCA4B /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 149720221EEEDAAB00CF0321 /* Reward.cpp in Sources */, + 14D3B1AA1EE63DE500ED2639 /* Boss.cpp in Sources */, + 14E745A71EF20BE2005BDC7B /* GameMenu.cpp in Sources */, + 14FB25B51EC9D2BC00E53C35 /* Enemy.cpp in Sources */, + 142924D91EC41059000BCA4B /* main.cpp in Sources */, + 14FB25AF1EC9C62E00E53C35 /* Game.cpp in Sources */, + 14FB25B21EC9CA7E00E53C35 /* Player.cpp in Sources */, + 1497201C1EEEBF0800CF0321 /* Menu.cpp in Sources */, + 14F5EEEE1ECBD48C003D4EB6 /* Enemys.cpp in Sources */, + 14F563DD1ECA85E9002BB1E0 /* Shot.cpp in Sources */, + 149720171EEEAC0E00CF0321 /* Background.cpp in Sources */, + 14FA1FB61ED68AD000E12981 /* Heart.cpp in Sources */, + 14B6B2E91ED3C2D2000ED50B /* Score.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 142924DA1EC41059000BCA4B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = /usr/local/include; + LIBRARY_SEARCH_PATHS = /usr/local/lib; + MACOSX_DEPLOYMENT_TARGET = 10.12; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + 142924DB1EC41059000BCA4B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = /usr/local/include; + LIBRARY_SEARCH_PATHS = /usr/local/lib; + MACOSX_DEPLOYMENT_TARGET = 10.12; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + }; + name = Release; + }; + 142924DD1EC41059000BCA4B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + HEADER_SEARCH_PATHS = /usr/local/include; + LIBRARY_SEARCH_PATHS = /usr/local/lib; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 142924DE1EC41059000BCA4B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + HEADER_SEARCH_PATHS = /usr/local/include; + LIBRARY_SEARCH_PATHS = /usr/local/lib; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 142924D01EC41059000BCA4B /* Build configuration list for PBXProject "Fighters" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 142924DA1EC41059000BCA4B /* Debug */, + 142924DB1EC41059000BCA4B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 142924DC1EC41059000BCA4B /* Build configuration list for PBXNativeTarget "Fighters" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 142924DD1EC41059000BCA4B /* Debug */, + 142924DE1EC41059000BCA4B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 142924CD1EC41059000BCA4B /* Project object */; +} diff --git a/practices/cpp/level1/p11_Fighters/Fighters.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/practices/cpp/level1/p11_Fighters/Fighters.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..e22b781a --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/practices/cpp/level1/p11_Fighters/Fighters.xcodeproj/project.xcworkspace/xcuserdata/fjm.xcuserdatad/UserInterfaceState.xcuserstate b/practices/cpp/level1/p11_Fighters/Fighters.xcodeproj/project.xcworkspace/xcuserdata/fjm.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..d4864b87e7ac013249598b86cfde07a0d2accaa0 GIT binary patch literal 53096 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 literal 0 HcmV?d00001 diff --git a/practices/cpp/level1/p11_Fighters/Fighters.xcodeproj/xcuserdata/fjm.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/practices/cpp/level1/p11_Fighters/Fighters.xcodeproj/xcuserdata/fjm.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 00000000..53cdecad --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters.xcodeproj/xcuserdata/fjm.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,39 @@ + + + + + + + + + + + + + diff --git a/practices/cpp/level1/p11_Fighters/Fighters.xcodeproj/xcuserdata/fjm.xcuserdatad/xcschemes/Fighters.xcscheme b/practices/cpp/level1/p11_Fighters/Fighters.xcodeproj/xcuserdata/fjm.xcuserdatad/xcschemes/Fighters.xcscheme new file mode 100644 index 00000000..83d95282 --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters.xcodeproj/xcuserdata/fjm.xcuserdatad/xcschemes/Fighters.xcscheme @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/practices/cpp/level1/p11_Fighters/Fighters.xcodeproj/xcuserdata/fjm.xcuserdatad/xcschemes/xcschememanagement.plist b/practices/cpp/level1/p11_Fighters/Fighters.xcodeproj/xcuserdata/fjm.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 00000000..ff4027cb --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters.xcodeproj/xcuserdata/fjm.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + Fighters.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 142924D41EC41059000BCA4B + + primary + + + + + diff --git a/practices/cpp/level1/p11_Fighters/Fighters/Background.cpp b/practices/cpp/level1/p11_Fighters/Fighters/Background.cpp new file mode 100644 index 00000000..968072b4 --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters/Background.cpp @@ -0,0 +1,34 @@ +// +// Background.cpp +// Fighters +// +// Created by Jimmy Fan on 2017/6/12. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#include +#include +#include "Background.h" +using namespace std; +#define EPS 1e-5 + +Background::Background() { + texture.loadFromFile("/Users/fjm/Git/Fighters/Resources/background.png"); + rect = texture.getSize(); + background[0].setTexture(texture); + background[1].setTexture(texture); + background[0].setPosition(0, 0); + background[1].setPosition(0, rect.y); + t = 1; + speed = -40; +} + +void Background::move(sf::Time time) { + background[0].move(0, speed * time.asSeconds()); + background[1].move(0, speed * time.asSeconds()); + sf::Vector2f pos = background[t].getPosition(); + if (pos.y <= 0) { + t = (t+1) & 1; + background[t].setPosition(0, rect.y + pos.y); + } +} diff --git a/practices/cpp/level1/p11_Fighters/Fighters/Background.h b/practices/cpp/level1/p11_Fighters/Fighters/Background.h new file mode 100644 index 00000000..74eae28e --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters/Background.h @@ -0,0 +1,23 @@ +// +// Background.h +// Fighters +// +// Created by Jimmy Fan on 2017/6/12. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#ifndef Background_h +#define Background_h + +#include "Sprite.h" + +class Background: public Sprite { +private: + int t; +public: + sf::Sprite background[2]; + Background(); + void move(sf::Time time); +}; + +#endif /* Background_h */ diff --git a/practices/cpp/level1/p11_Fighters/Fighters/Boss.cpp b/practices/cpp/level1/p11_Fighters/Fighters/Boss.cpp new file mode 100644 index 00000000..fa450441 --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters/Boss.cpp @@ -0,0 +1,124 @@ + +// +// Boss.cpp +// Fighters +// +// Created by Jimmy Fan on 2017/6/6. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#include "Boss.h" +#include +#include +using namespace std; + +Boss::Boss() { + texture.loadFromFile("/Users/fjm/Git/Fighters/Resources/boss.png"); + rect = texture.getSize(); + Plane.setTexture(texture); + Plane.setPosition((windowWidth - rect.x)/2, 0); + speed = 150; + HP = 30; + aliveCondition = 1; + stay = 0; + bossTime = 0; + bossComing = 0; + WIN = 0; + direction = 1; + timee = 1; + for (int i = 0; i < numOfBossShots; i++) shots[i].isAlive = 0; +} + +void Boss::reStart() { + texture.loadFromFile("/Users/fjm/Git/Fighters/Resources/boss.png"); + rect = texture.getSize(); + Plane.setTexture(texture); + Plane.setPosition((windowWidth - rect.x)/2, 0); + HP = 40; + aliveCondition = 1; + stay = 0; + WIN = 0; + bossTime = 0; + bossComing = 0; + direction = 1; + timee = 1; + for (int i = 0; i < numOfBossShots; i++) shots[i].isAlive = 0; +} + +void Boss::move(sf::Time time) { + for (int i = 0; i < numOfBossShots; i++) { + if (shots[i].isAlive) { + shots[i].move(time); + } + } + if (aliveCondition && aliveCondition != 1) { + down(aliveCondition); + return; + } + if (HP < 10) { + texture.loadFromFile("/Users/fjm/Git/Fighters/Resources/boss_hit.png"); + rect = texture.getSize(); + Plane.setTexture(texture); + } + sf::Vector2f pos = Plane.getPosition(); + if (!stay) { + int yNow = pos.y + rect.y; + int dy = speed * time.asSeconds(); + if (yNow + dy > 300) { + dy = 300 - yNow; + stay = 1; + } + Plane.move(sf::Vector2f(0, dy)); + } + else { + int xNow = pos.x + rect.x; + int dx = speed * time.asSeconds() * direction; + if (xNow + dx >= windowWidth) { + dx = windowWidth - xNow; + direction = -direction; + } + else if (pos.x + dx <= 0) { + dx = -pos.x; + direction = -direction; + } + Plane.move(sf::Vector2f(dx,0)); + } +} + +void Boss::shoot(sf::Time time, Player player) { + if (time.asMilliseconds() > timeInterval * timee) { + timee ++; + for (int i = 0; i < numOfBossShots; i++) { + if (!shots[i].isAlive) { + sf::Vector2f posBoss = Plane.getPosition(); + sf::Vector2f posPlane = player.Plane.getPosition(); + int dx = (posPlane.x + player.rect.x / 2) - (posBoss.x + rect.x / 2); + int dy = (posPlane.y + player.rect.y / 2) - (posBoss.y + rect.y); + int dxy = sqrt(dx*dx + dy*dy); + shots[i].setSpeed(200); + shots[i].setDirection(sf::Vector2f((double)dx/(double)dxy, -(double)dy/(double)dxy)); + shots[i].setPicture(-1); + shots[i].isAlive = 1; + shots[i].shot.setPosition(posBoss.x + rect.x / 2, posBoss.y + rect.y); + break; + } + } + } +} + + +void Boss::down(int k) { + int t = 7; + if (k == 6*t + 15) { + bossTime = 0; + bossComing = 0; + WIN = 1; + return; + } + if (k % t == 1 && k/t < 6) { + texture.loadFromFile("/Users/fjm/Git/Fighters/Resources/boss_down" + to_string(k/t+1) + ".png"); + Plane.setTexture(texture); + rect = texture.getSize(); + } + aliveCondition = k + 1; +} diff --git a/practices/cpp/level1/p11_Fighters/Fighters/Boss.h b/practices/cpp/level1/p11_Fighters/Fighters/Boss.h new file mode 100644 index 00000000..ddaaecaa --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters/Boss.h @@ -0,0 +1,39 @@ +// +// Boss.h +// Fighters +// +// Created by Jimmy Fan on 2017/6/6. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#ifndef Boss_h +#define Boss_h + +#include "Sprite.h" +#include "Shot.h" +#include "Player.h" +#define timeInterval 1000 +#define numOfBossShots 10 + +class Boss: public Sprite { +private: + bool stay; + int direction; + int timee; +public: + bool WIN; + int HP; + bool bossTime; + bool bossComing; + int aliveCondition; + Shot shots[10]; + Boss(); + sf::Sprite Plane; + void move(sf::Time time); + void shoot(sf::Time time, Player player); + void down(int k); + void reStart(); +}; + + +#endif /* Boss_h */ diff --git a/practices/cpp/level1/p11_Fighters/Fighters/Enemy.cpp b/practices/cpp/level1/p11_Fighters/Fighters/Enemy.cpp new file mode 100644 index 00000000..a398176c --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters/Enemy.cpp @@ -0,0 +1,65 @@ +// +// Enemy.cpp +// Fighters +// +// Created by Jimmy Fan on 2017/5/15. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#include +#include +#include +#include +#include "Enemy.h" +using namespace std; +#define PI 3.1415926 + +Enemy::Enemy() { + texture.loadFromFile("/Users/fjm/Git/Fighters/Resources/enemy0.png"); + rect = texture.getSize(); + enemyPlane.setTexture(texture); + speed = 100; + aliveCondition = 0; + isShoot = 0; + key = rand() % 10; +} + +void Enemy::move(sf::Time time) { + enemyPlane.move(sf::Vector2f(0,speed * time.asSeconds())); + sf::Vector2f pos = enemyPlane.getPosition(); + if (pos.y >= windowHeight) { + aliveCondition = 0; + isShoot = 0; + } +} + +void Enemy::down(int k) { + int t = 3; + if (k == 4*t + 1) { + texture.loadFromFile("/Users/fjm/Git/Fighters/Resources/enemy0.png"); + enemyPlane.setTexture(texture); + rect = texture.getSize(); + aliveCondition = 0; + isShoot = 0; + return; + } + if (k % t == 1) { + texture.loadFromFile("/Users/fjm/Git/Fighters/Resources/enemy0_down" + to_string(k/t+1) + ".png"); + enemyPlane.setTexture(texture); + rect = texture.getSize(); + } + aliveCondition = k + 1; +} + +void Enemy::shoot(sf::Time totTime) { + if (((totTime.asMilliseconds()) % 5000) / 500 == key && !isShoot) { + isShoot = 1; + int alpha = rand() % 60 + 60; + shot.setDirection(sf::Vector2f(cos((double)alpha*PI / 180.0),-sin((double)alpha*PI /180.0))); + shot.setSpeed(200); + shot.setPicture(-1); + shot.isAlive = 1; + sf::Vector2f pos = enemyPlane.getPosition(); + shot.shot.setPosition(pos.x + rect.x / 2, pos.y + rect.y / 2); + } +} diff --git a/practices/cpp/level1/p11_Fighters/Fighters/Enemy.h b/practices/cpp/level1/p11_Fighters/Fighters/Enemy.h new file mode 100644 index 00000000..930d4596 --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters/Enemy.h @@ -0,0 +1,31 @@ +// +// Enemy.h +// Fighters +// +// Created by Jimmy Fan on 2017/5/15. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#ifndef Enemy_h +#define Enemy_h + +#include "Sprite.h" +#include "Shot.h" +#include + +class Enemy: public Sprite { +private: + bool isShoot; + int key; +public: + int HP; + sf::Sprite enemyPlane; + Enemy(); + void move(sf::Time time); + int aliveCondition; + void down(int k); + void shoot(sf::Time totTime); + Shot shot; +}; + +#endif /* Enemy_h */ diff --git a/practices/cpp/level1/p11_Fighters/Fighters/Enemys.cpp b/practices/cpp/level1/p11_Fighters/Fighters/Enemys.cpp new file mode 100644 index 00000000..0e68df54 --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters/Enemys.cpp @@ -0,0 +1,67 @@ +// +// Enemys.cpp +// Fighters +// +// Created by Jimmy Fan on 2017/5/17. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#include +#include +#include +#include "Enemys.h" +using namespace std; + +Enemys::Enemys(int numOfEnemys, int timeInterval) { + this -> numOfEnemys = numOfEnemys; + this -> timeInterval = timeInterval; + srand((unsigned)time(NULL)); + timee = 0; +} + +void Enemys::reStart() { + for (int i = 0; i < numOfEnemys; i++) { + enemys[i].aliveCondition = 0; + enemys[i].shot.isAlive = 0; + } + timee = 0; +} + +void Enemys::creatEnemy(sf::Time totTime) { + if (totTime.asMilliseconds() > timeInterval * timee) { + timee ++; + for (int i = 0; i < numOfEnemys; i++) { + if (!enemys[i].aliveCondition) { + enemys[i].aliveCondition = 1; + enemys[i].HP = 2; + int x = rand() % (windowWidth - enemys[i].rect.x); + enemys[i].enemyPlane.setPosition(x, 0); + break; + } + } + } +} + +void Enemys::move(sf::Time time) { + for (int i = 0; i < numOfEnemys; i++) { + if (enemys[i].aliveCondition == 1) { + enemys[i].move(time); + } + if (enemys[i].aliveCondition && enemys[i].aliveCondition != 1) { + enemys[i].down(enemys[i].aliveCondition); + } + } + for (int i = 0; i < numOfEnemys; i++) { + if (enemys[i].shot.isAlive) { + enemys[i].shot.move(time); + } + } +} + +void Enemys::shoot(sf::Time totTime) { + for (int i = 0; i < numOfEnemys; i++) { + if (enemys[i].aliveCondition == 1) { + enemys[i].shoot(totTime); + } + } +} diff --git a/practices/cpp/level1/p11_Fighters/Fighters/Enemys.h b/practices/cpp/level1/p11_Fighters/Fighters/Enemys.h new file mode 100644 index 00000000..879a14af --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters/Enemys.h @@ -0,0 +1,29 @@ +// +// Enemys.h +// Fighters +// +// Created by Jimmy Fan on 2017/5/17. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#ifndef Enemys_h +#define Enemys_h + +#include "Enemy.h" +#define N 20 + +class Enemys { +private: + int timeInterval; + int timee; +public: + Enemy enemys[N]; + int numOfEnemys; + Enemys(int = 10,int = 1000); + void creatEnemy(sf::Time totTime); + void move(sf::Time time); + void shoot(sf::Time totTime); + void reStart(); +}; + +#endif /* Enemys_h */ diff --git a/practices/cpp/level1/p11_Fighters/Fighters/Game.cpp b/practices/cpp/level1/p11_Fighters/Fighters/Game.cpp new file mode 100644 index 00000000..f3d92bd6 --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters/Game.cpp @@ -0,0 +1,383 @@ +// +// Game.cpp +// Fighters +// +// Created by Jimmy Fan on 2017/5/15. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#include +#include +#include "Game.h" +using namespace std; + +Game::Game() { + mWindow.create(sf::VideoMode(windowWidth,windowHeight), "Fighters"); + mWindow.setFramerateLimit(60); + gameTime = sf::Time::Zero; + bossTime = sf::Time::Zero; + font.loadFromFile("/Users/fjm/Git/Fighters/Resources/Arial Black.ttf"); + gameMusic.openFromFile("/Users/fjm/Git/Fighters/Resources/game_music.wav"); + gameOverMusic.openFromFile("/Users/fjm/Git/Fighters/Resources/game_over.wav"); + enemyDownBuffer.loadFromFile("/Users/fjm/Git/Fighters/Resources/enemy0_down.wav"); + enemyDownSound.setBuffer(enemyDownBuffer); + playerDownBuffer.loadFromFile("/Users/fjm/Git/Fighters/Resources/player_down.wav"); + playerDownSound.setBuffer(playerDownBuffer); + pause = 0; + timee = 1; + gameMenu.inMenu = 1; +} + +void Game::run() { + sf::Clock clock; + sf::Time time = sf::Time::Zero; + sf::Time Time = sf::seconds(1.f/60.f); + sf::Time dTime; + gameMusic.play(); +// boss.bossComing = 1; + while (mWindow.isOpen()) { + processEvents(); + dTime = clock.getElapsedTime(); + if (!pause && !boss.WIN && !player.GameOver && !gameMenu.inMenu) gameTime += dTime; + if (boss.bossTime) bossTime += dTime; + time += clock.restart(); + while (time > Time) { + time -= Time; + processEvents(); + update(Time); + } + render(); + } + gameOverMusic.stop(); +} + +void Game::processEvents() { + sf::Event event; + while (mWindow.pollEvent(event)) { + if (event.type == sf::Event::Closed) { + mWindow.close(); + } + if (event.type == sf::Event::KeyPressed) { + handlePlayerInput(event.key.code, 1); + } + if (event.type == sf::Event::KeyReleased) { + handlePlayerInput(event.key.code, 0); + } + } +} + +void Game::update(sf::Time time) { + background.move(time); + if (boss.WIN || player.GameOver || pause) return; + player.move(time); + if (reward.alive) reward.move(time); + if (!boss.bossComing) { + enemy.creatEnemy(gameTime); + if (gameTime.asMilliseconds() > rewardTimeInterval * timee) { + timee ++; + reward.setKind(); + } + } + enemy.shoot(gameTime); + enemy.move(time); + checkCrash(); + if (boss.bossTime) { + boss.move(time); + boss.shoot(bossTime, player); + } + else { + if (boss.bossComing) { + bool flag = 1; + for (int i = 0; i < enemy.numOfEnemys; i++) { + if (enemy.enemys[i].aliveCondition || enemy.enemys[i].shot.isAlive) { + flag = 0; + break; + } + } + if (flag) { + boss.bossTime = 1; + } + } + } +} + +void Game::render() { + mWindow.clear(); + mWindow.draw(background.background[0]); + mWindow.draw(background.background[1]); + if (gameMenu.inMenu) { + mWindow.draw(gameMenu.getTitleText()); + mWindow.draw(gameMenu.getSelector()); + mWindow.draw(gameMenu.getStartText()); + mWindow.draw(gameMenu.getRankText()); + mWindow.draw(gameMenu.getQuitText()); + mWindow.display(); + return; + } + if (pause) { + player.menu.setData(player.damage, player.speed, player.life); + mWindow.draw(player.menu.getDamageText()); + mWindow.draw(player.menu.getSpeedText()); + mWindow.draw(player.menu.getLifeText()); + mWindow.draw(player.menu.getTitleText()); + mWindow.display(); + return; + } + if (player.GameOver) { + gameMusic.stop(); + gameOverMusic.play(); + sf::Text over,toMenu; + over.setFont(font); + over.setCharacterSize(45); + over.setString("Game Over"); + over.setPosition((windowWidth - over.getLocalBounds().width)/2, (windowHeight - over.getLocalBounds().height)/2 - 50); + mWindow.draw(over); + toMenu.setFont(font); + toMenu.setString("ENTER to Menu"); + toMenu.setCharacterSize(25); + toMenu.setPosition((windowWidth - toMenu.getLocalBounds().width)/2, (windowHeight - toMenu.getLocalBounds().height)/2 + 50); + mWindow.draw(toMenu); + mWindow.display(); + return; + } + if (boss.WIN) { + sf::Text win,toMenu; + win.setFont(font); + win.setString("YOU WIN!!"); + win.setCharacterSize(45); + win.setPosition((windowWidth - win.getLocalBounds().width)/2, (windowHeight - win.getLocalBounds().height)/2 - 50); + mWindow.draw(win); + toMenu.setFont(font); + toMenu.setString("ENTER to Menu"); + toMenu.setCharacterSize(25); + toMenu.setPosition((windowWidth - toMenu.getLocalBounds().width)/2, (windowHeight - toMenu.getLocalBounds().height)/2 + 50); + mWindow.draw(toMenu); + mWindow.display(); + return; + } + mWindow.draw(score.score); + if (damageUP) { + damageUP --; + sf::Text damageUp; + damageUp.setFont(font); + damageUp.setCharacterSize(20); + damageUp.setString("damage up"); + damageUp.setFillColor(sf::Color::Black); + sf::Vector2f posPlayer = player.Plane.getPosition(); + damageUp.setPosition(posPlayer.x + player.rect.x / 2 - damageUp.getLocalBounds().width / 2, posPlayer.y - 50); + mWindow.draw(damageUp); + } + if (speedUP) { + speedUP --; + sf::Text speedUp; + speedUp.setFont(font); + speedUp.setCharacterSize(20); + speedUp.setString("speed up"); + speedUp.setFillColor(sf::Color::Black); + sf::Vector2f posPlayer = player.Plane.getPosition(); + speedUp.setPosition(posPlayer.x + player.rect.x / 2 - speedUp.getLocalBounds().width / 2, posPlayer.y - 50); + mWindow.draw(speedUp); + } + if (lifeUP) { + lifeUP --; + sf::Text lifeUp; + lifeUp.setFont(font); + lifeUp.setCharacterSize(20); + lifeUp.setString("life up"); + lifeUp.setFillColor(sf::Color::Black); + sf::Vector2f posPlayer = player.Plane.getPosition(); + lifeUp.setPosition(posPlayer.x + player.rect.x / 2 - lifeUp.getLocalBounds().width / 2, posPlayer.y - 50); + mWindow.draw(lifeUp); + } + if (player.aliveCondition) { + if ((player.inviolable && (player.inviolable/8) % 2) || !player.inviolable) mWindow.draw(player.Plane); + if (player.inviolable) player.inviolable --; + } + if (reward.alive) mWindow.draw(reward.reward); + for (int i = 0; i < numOfShots; i++) { + if (player.shots[i].isAlive) { + mWindow.draw(player.shots[i].shot); + } + } + for (int i = 0; i < enemy.numOfEnemys; i++) { + if (enemy.enemys[i].aliveCondition) { + mWindow.draw(enemy.enemys[i].enemyPlane); + } + } + for (int i = 0; i < enemy.numOfEnemys; i++) { + if (enemy.enemys[i].shot.isAlive) { + mWindow.draw(enemy.enemys[i].shot.shot); + } + } + for (int i = 1; i <= player.life; i++) { + heart.heart.setPosition(windowWidth - i * (20 + heart.getRect().x), 20); + mWindow.draw(heart.heart); + } + if (boss.bossTime) { + mWindow.draw(boss.Plane); + for (int i = 0; i < numOfBossShots; i++) { + if (boss.shots[i].isAlive) { + mWindow.draw(boss.shots[i].shot); + } + } + } + mWindow.display(); +} + +void Game::reStart() { + gameTime = sf::Time::Zero; + bossTime = sf::Time::Zero; + score.updateScore(0); + player.reStart(); + enemy.reStart(); + boss.reStart(); + gameMusic.play(); + timee = 1; + pause = 0; + gameMenu.inMenu = 1; +} + +void Game::handlePlayerInput(sf::Keyboard::Key key, bool isPressed) { + if (gameMenu.inMenu) { + if (key == sf::Keyboard::Up || key == sf::Keyboard::Down || key == sf::Keyboard::Return) { + if (isPressed) { + int k = gameMenu.setEvent(key); + if (k == 1) gameMenu.inMenu = 0; + if (k == 2) {}//输出排行榜 + if (k == 3) mWindow.close(); + } + } + return; + } + if (key == sf::Keyboard::Up || key == sf::Keyboard::Down || key == sf::Keyboard::Left || key == sf::Keyboard::Right) { + player.setMove(key,isPressed); + } + if (key == sf::Keyboard::Space) { + player.shoot(isPressed); + } + if (key == sf::Keyboard::Return) { + if (player.GameOver || boss.WIN) { + reStart(); + } + } + if (key == sf::Keyboard::Tab) { + if (isPressed) pause = !pause; + } +} + +bool Game::isCollsion(int x1, int y1, int w1, int h1, int x2, int y2, int w2, int h2) { + if (x1 >= x2 && x1 >= x2 + w2) return 0; + if (x1 <= x2 && x1 + w1 <= x2) return 0; + if (y1 >= y2 && y1 >= y2 + h2) return 0; + if (y1 <= y2 && y1 + h1 <= y2) return 0; + return 1; +} + +void Game::checkCrash() { + for (int i = 0; i < enemy.numOfEnemys; i++) { + if (enemy.enemys[i].aliveCondition != 1) continue; + for (int j = 0; j < numOfShots; j++) { + if (!player.shots[j].isAlive) continue; + sf::Vector2f posEnemy = enemy.enemys[i].enemyPlane.getPosition(); + sf::Vector2f posShot = player.shots[j].shot.getPosition(); + if (isCollsion(posEnemy.x, posEnemy.y, enemy.enemys[i].rect.x, enemy.enemys[i].rect.y, posShot.x, posShot.y, player.shots[j].rect.x, player.shots[j].rect.y)) { + enemy.enemys[i].HP -= player.damage; + if (enemy.enemys[i].HP <= 0) { + enemy.enemys[i].down(1); + enemyDownSound.play(); + score.updateScore(10); + } + player.shots[j].isAlive = 0; + if (score.getScore() > scoreBossComing) { + boss.bossComing = 1; + } + break; + } + } + } + if (boss.bossTime) { + if (boss.aliveCondition == 1) { + for (int i = 0; i < numOfShots; i++) { + if (!player.shots[i].isAlive) continue; + sf::Vector2f posBoss = boss.Plane.getPosition(); + sf::Vector2f posShot = player.shots[i].shot.getPosition(); + if (isCollsion(posBoss.x, posBoss.y, boss.rect.x, boss.rect.y, posShot.x, posShot.y, player.shots[i].rect.x, player.shots[i].rect.y)) { + boss.HP -= player.damage; + if (boss.HP <= 0) { + boss.down(1); + } + player.shots[i].isAlive = 0; + break; + } + } + } + } + if (player.aliveCondition != 1) return; + if (reward.alive) { + sf::Vector2f posPlayer = player.Plane.getPosition(); + sf::Vector2f posReward = reward.reward.getPosition(); + if (isCollsion(posPlayer.x, posPlayer.y, player.rect.x, player.rect.y, posReward.x, posReward.y, reward.rect.x, reward.rect.y)) { + reward.alive = 0; + if (reward.getKind() == 0) { + player.damage ++; + damageUP = 10; + } + if (reward.getKind() == 1) { + player.life ++; + lifeUP = 10; + } + if (reward.getKind() == 2) { + player.speed += 50; + speedUP = 10; + } + } + } + if (player.inviolable) return; + if (player.aliveCondition != 1) return; + for (int i = 0; i < enemy.numOfEnemys; i++) { + if (enemy.enemys[i].aliveCondition != 1) continue; + sf::Vector2f posPlayer = player.Plane.getPosition(); + sf::Vector2f posEnemy = enemy.enemys[i].enemyPlane.getPosition(); + if (isCollsion(posPlayer.x, posPlayer.y, player.rect.x, player.rect.y, posEnemy.x, posEnemy.y, enemy.enemys[i].rect.x, enemy.enemys[i].rect.y)) { + enemy.enemys[i].down(1); + playerDownSound.play(); + player.down(1); + break; + } + } + if (player.aliveCondition != 1) return; + for (int i = 0; i < enemy.numOfEnemys; i++) { + if (enemy.enemys[i].shot.isAlive) { + sf::Vector2f posPlayer = player.Plane.getPosition(); + sf::Vector2f posShot = enemy.enemys[i].shot.shot.getPosition(); + if (isCollsion(posPlayer.x, posPlayer.y, player.rect.x, player.rect.y, posShot.x, posShot.y, enemy.enemys[i].shot.rect.x, enemy.enemys[i].shot.rect.y)) { + enemy.enemys[i].shot.isAlive = 0; + playerDownSound.play(); + player.down(1); + break; + } + } + } + if (player.aliveCondition != 1) return; + for (int i = 0; i < numOfBossShots; i++) { + if (boss.shots[i].isAlive) { + sf::Vector2f posPlayer = player.Plane.getPosition(); + sf::Vector2f posShot = boss.shots[i].shot.getPosition(); + if (isCollsion(posPlayer.x, posPlayer.y, player.rect.x, player.rect.y, posShot.x, posShot.y, boss.shots[i].rect.x, boss.shots[i].rect.y)) { + boss.shots[i].isAlive = 0; + playerDownSound.play(); + player.down(1); + break; + } + } + } + if (player.aliveCondition != 1) return; + if (boss.bossTime) { + sf::Vector2f posBoss = boss.Plane.getPosition(); + sf::Vector2f posPlayer = player.Plane.getPosition(); + if (isCollsion(posPlayer.x, posPlayer.y, player.rect.x, player.rect.y, posBoss.x, posBoss.y, boss.rect.x, boss.rect.y)) { + playerDownSound.play(); + player.down(1); + } + } +} diff --git a/practices/cpp/level1/p11_Fighters/Fighters/Game.h b/practices/cpp/level1/p11_Fighters/Fighters/Game.h new file mode 100644 index 00000000..596c4e8f --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters/Game.h @@ -0,0 +1,61 @@ +// +// Game.h +// Fighters +// +// Created by Jimmy Fan on 2017/5/15. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#ifndef Game_h +#define Game_h + +#include +#include +#include "Player.h" +#include "Enemys.h" +#include "Score.h" +#include "Heart.h" +#include "Boss.h" +#include "Reward.h" +#include "Background.h" +#include "GameMenu.h" +#define rewardTimeInterval 8000 +#define scoreBossComing 200 + +class Game { +private: + sf::Music gameMusic; + sf::Music gameOverMusic; + sf::SoundBuffer enemyDownBuffer; + sf::Sound enemyDownSound; + sf::SoundBuffer playerDownBuffer; + sf::Sound playerDownSound; + sf::Font font; + sf::RenderWindow mWindow; + sf::Time gameTime; + sf::Time bossTime; + Score score; + Player player; + Enemys enemy; + Heart heart; + Boss boss; + Background background; + Reward reward; + GameMenu gameMenu; + int damageUP, speedUP, lifeUP; + int timee; + bool pause; + void processEvents(); + void update(sf::Time time); + void render(); + void handlePlayerInput(sf::Keyboard::Key key, bool isPressed); + void checkCrash(); + void reStart(); + bool isCollsion(int x1, int y1, int w1, int h1, int x2, int y2, int w2, int h2); +public: + Game(); + void run(); +}; + + +#endif /* Game_h */ diff --git a/practices/cpp/level1/p11_Fighters/Fighters/GameMenu.cpp b/practices/cpp/level1/p11_Fighters/Fighters/GameMenu.cpp new file mode 100644 index 00000000..99145b8e --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters/GameMenu.cpp @@ -0,0 +1,76 @@ +// +// GameMenu.cpp +// Fighters +// +// Created by Jimmy Fan on 2017/6/15. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#include +#include "GameMenu.h" +using namespace std; + +GameMenu::GameMenu() { + font.loadFromFile("/Users/fjm/Git/Fighters/Resources/Arial Black.ttf"); + title.setFont(font); + title.setStyle(sf::Text::Bold); + title.setString("Fighters"); + title.setCharacterSize(80); + sf::FloatRect rect = title.getLocalBounds(); + title.setPosition((windowWidth - rect.width)/2, 50); + + start.setFont(font); + start.setString("Start Game"); + start.setCharacterSize(35); + rect = start.getLocalBounds(); + start.setPosition((windowWidth - rect.width)/2, 200); + + rank.setFont(font); + rank.setString("Rank"); + rank.setCharacterSize(35); + rect = rank.getLocalBounds(); + rank.setPosition((windowWidth - rect.width)/2, 300); + + quit.setFont(font); + quit.setString("Quit Game"); + quit.setCharacterSize(35); + rect = quit.getLocalBounds(); + quit.setPosition((windowWidth - rect.width)/2, 400); + + texture.loadFromFile("/Users/fjm/Git/Fighters/Resources/selector.png"); + selector.setTexture(texture); +} + +int GameMenu::setEvent(sf::Keyboard::Key key) { + if (key == sf::Keyboard::Up) { + index = index==1?1:index-1; + } + if (key == sf::Keyboard::Down) { + index = index==3?3:index+1; + } + if (key == sf::Keyboard::Return) { + return index; + } + return 0; +} + +sf::Text GameMenu::getTitleText() { + return title; +} + +sf::Text GameMenu::getStartText() { + return start; +} + +sf::Text GameMenu::getRankText() { + return rank; +} + +sf::Text GameMenu::getQuitText() { + return quit; +} + +sf::Sprite GameMenu::getSelector() { + selector.setPosition(60, (index+1) * 100 + 5); + return selector; +} diff --git a/practices/cpp/level1/p11_Fighters/Fighters/GameMenu.h b/practices/cpp/level1/p11_Fighters/Fighters/GameMenu.h new file mode 100644 index 00000000..7f0ae867 --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters/GameMenu.h @@ -0,0 +1,37 @@ +// +// GameMenu.h +// Fighters +// +// Created by Jimmy Fan on 2017/6/15. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#ifndef GameMenu_h +#define GameMenu_h + +#include +#define windowWidth 480 + +class GameMenu { +private: + sf::Font font; + sf::Text title; + sf::Text start; + sf::Text rank; + sf::Text quit; + sf::Sprite selector; + sf::Texture texture; + int index = 1; +public: + bool inMenu; + GameMenu(); + int setEvent(sf::Keyboard::Key key); + sf::Text getTitleText(); + sf::Text getStartText(); + sf::Text getRankText(); + sf::Text getQuitText(); + sf::Sprite getSelector(); +}; + + +#endif /* GameMenu_h */ diff --git a/practices/cpp/level1/p11_Fighters/Fighters/Heart.cpp b/practices/cpp/level1/p11_Fighters/Fighters/Heart.cpp new file mode 100644 index 00000000..7206f941 --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters/Heart.cpp @@ -0,0 +1,22 @@ +// +// Heart.cpp +// Fighters +// +// Created by Jimmy Fan on 2017/5/25. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#include +#include "Heart.h" +using namespace std; + +Heart::Heart() { + texture.loadFromFile("/Users/fjm/Git/Fighters/Resources/heart.png"); + rect = texture.getSize(); + heart.setTexture(texture); +} + +sf::Vector2u Heart::getRect() { + return rect; +} + diff --git a/practices/cpp/level1/p11_Fighters/Fighters/Heart.h b/practices/cpp/level1/p11_Fighters/Fighters/Heart.h new file mode 100644 index 00000000..c86da8ff --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters/Heart.h @@ -0,0 +1,25 @@ +// +// Heart.h +// Fighters +// +// Created by Jimmy Fan on 2017/5/25. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#ifndef Heart_h +#define Heart_h + +#include + +class Heart { +private: + sf::Texture texture; + sf::Vector2u rect; +public: + sf::Sprite heart; + Heart(); + sf::Vector2u getRect(); +}; + + +#endif /* Heart_h */ diff --git a/practices/cpp/level1/p11_Fighters/Fighters/Menu.cpp b/practices/cpp/level1/p11_Fighters/Fighters/Menu.cpp new file mode 100644 index 00000000..542373d1 --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters/Menu.cpp @@ -0,0 +1,48 @@ +// +// Menu.cpp +// Fighters +// +// Created by Jimmy Fan on 2017/6/12. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#include "Menu.h" +#include +using namespace std; + +Menu::Menu() { + font.loadFromFile("/Users/fjm/Git/Fighters/Resources/Arial Black.ttf"); + Damage.setFont(font); + Speed.setFont(font); + Life.setFont(font); + Title.setFont(font); + Title.setString("Ability"); + Title.setCharacterSize(40); + Title.setPosition((windowWidth - Title.getLocalBounds().width) / 2, 50); + Damage.setPosition(120, 150); + Speed.setPosition(120, 220); + Life.setPosition(120, 290); + +} + +void Menu::setData(int damage, int speed, int life) { + Damage.setString("Damamge: " + to_string(damage)); + Speed.setString( "Speed: " + to_string(speed/50)); + Life.setString( "Life: " + to_string(life)); +} + +sf::Text Menu::getDamageText() { + return Damage; +} + +sf::Text Menu::getSpeedText() { + return Speed; +} + +sf::Text Menu::getLifeText() { + return Life; +} + +sf::Text Menu::getTitleText() { + return Title; +} diff --git a/practices/cpp/level1/p11_Fighters/Fighters/Menu.h b/practices/cpp/level1/p11_Fighters/Fighters/Menu.h new file mode 100644 index 00000000..a2e3821f --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters/Menu.h @@ -0,0 +1,31 @@ +// +// Menu.h +// Fighters +// +// Created by Jimmy Fan on 2017/6/12. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#ifndef Menu_h +#define Menu_h + +#include +#define windowWidth 480 + +class Menu { +private: + sf::Font font; + sf::Text Damage; + sf::Text Speed; + sf::Text Life; + sf::Text Title; +public: + Menu(); + void setData(int damage, int speed, int life); + sf::Text getDamageText(); + sf::Text getSpeedText(); + sf::Text getLifeText(); + sf::Text getTitleText(); +}; + +#endif /* Menu_h */ diff --git a/practices/cpp/level1/p11_Fighters/Fighters/Player.cpp b/practices/cpp/level1/p11_Fighters/Fighters/Player.cpp new file mode 100644 index 00000000..f54879ec --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters/Player.cpp @@ -0,0 +1,140 @@ +// +// Player.cpp +// Fighters +// +// Created by Jimmy Fan on 2017/5/15. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#include +#include "Player.h" +using namespace std; + +Player::Player() { + texture.loadFromFile("/Users/fjm/Git/Fighters/Resources/plane.png"); + rect = texture.getSize(); + Plane.setTexture(texture); + Plane.setPosition((windowWidth - rect.x)/2, windowHeight - rect.y - 10); + speed = 200; + damage = 1; + aliveCondition = 1; + moveUp = 0; + moveRight = 0; + moveLeft = 0; + moveDown = 0; + life = 3; + GameOver = 0; + shotBuffer.loadFromFile("/Users/fjm/Git/Fighters/Resources/bullet.wav"); + shotSound.setBuffer(shotBuffer); + for (int i = 0; i < numOfShots; i++) shots[i].setSpeed(150); + inviolable = 0; +} + +void Player::reStart() { + Plane.setPosition((windowWidth - rect.x)/2, windowHeight - rect.y - 10); + aliveCondition = 1; + moveUp = 0; + moveRight = 0; + moveLeft = 0; + moveDown = 0; + life = 3; + speed = 200; + damage = 1; + GameOver = 0; + for (int i = 0; i < numOfShots; i++) shots[i].isAlive = 0; + inviolable = 0; +} + +void Player::setMove(sf::Keyboard::Key key, bool isPressed) { + if (key == sf::Keyboard::Up) { + moveUp = isPressed; + } + if (key == sf::Keyboard::Down) { + moveDown = isPressed; + } + if (key == sf::Keyboard::Left) { + moveLeft = isPressed; + } + if (key == sf::Keyboard::Right) { + moveRight = isPressed; + } +} + +void Player::move(sf::Time time) { + for (int i = 0; i < numOfShots; i++) { + if (shots[i].isAlive) { + shots[i].move(time); + } + } + if (!aliveCondition) { + life --; + if (life) { + Plane.setPosition((windowWidth - rect.x)/2, windowHeight - rect.y - 10); + aliveCondition = 1; + inviolable = 120; + return; + } + else { + GameOver = 1; + return; + } + } + if (aliveCondition != 1) { + down(aliveCondition); + return; + } + sf::Vector2f movement(0,0); + sf::Vector2f pos = Plane.getPosition(); + if (!(moveUp && moveDown)) { + if (moveUp && pos.y >= 0) { + movement.y -= speed; + } + if (moveDown && pos.y <= windowHeight - rect.y) { + movement.y += speed; + } + } + if (!(moveLeft && moveRight)) { + if (moveLeft && pos.x >= 0) { + movement.x -= speed; + } + if (moveRight && pos.x <= windowWidth - rect.x) { + movement.x += speed; + } + } + Plane.move(movement * time.asSeconds()); +} + +void Player::shoot(bool isPressed) { + if (!isPressed) return; + shotSound.play(); + if (aliveCondition != 1) return; + sf::Vector2f pos = Plane.getPosition(); + for (int i = 0; i < numOfShots; i++) { + if (!shots[i].isAlive) { + shots[i].isAlive = 1; + shots[i].setPicture(1); + shots[i].shot.setPosition(pos.x + rect.x / 2 - shots[i].rect.x / 2, pos.y - 50); + break; + } + } +} + + +void Player::down(int k) { + int t = 3; + if (k == 4*t + 1) { + texture.loadFromFile("/Users/fjm/Git/Fighters/Resources/plane.png"); + Plane.setTexture(texture); + rect = texture.getSize(); + aliveCondition = 0; + return; + } + if (k % t == 1) { + texture.loadFromFile("/Users/fjm/Git/Fighters/Resources/plane_down" + to_string(k/t+1) + ".png"); + Plane.setTexture(texture); + rect = texture.getSize(); + } + aliveCondition = k + 1; +} + + diff --git a/practices/cpp/level1/p11_Fighters/Fighters/Player.h b/practices/cpp/level1/p11_Fighters/Fighters/Player.h new file mode 100644 index 00000000..f182b891 --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters/Player.h @@ -0,0 +1,41 @@ +// +// Player.h +// Fighters +// +// Created by Jimmy Fan on 2017/5/15. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#ifndef Player_h +#define Player_h + +#include "Sprite.h" +#include "Shot.h" +#include +#include "Menu.h" +#define numOfShots 20 + +class Player: public Sprite { +private: + bool moveUp,moveDown,moveLeft,moveRight; + sf::SoundBuffer shotBuffer; + sf::Sound shotSound; +public: + int damage; + int life; + sf::Sprite Plane; + int aliveCondition; + Shot shots[numOfShots]; + Player(); + Menu menu; + int inviolable; + bool GameOver; + void setMove(sf::Keyboard::Key key, bool isPressed); + void move(sf::Time time); + void shoot(bool isPressed); + void down(int k); + void reStart(); +}; + + +#endif /* Player_h */ diff --git a/practices/cpp/level1/p11_Fighters/Fighters/Reward.cpp b/practices/cpp/level1/p11_Fighters/Fighters/Reward.cpp new file mode 100644 index 00000000..0d1d1b58 --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters/Reward.cpp @@ -0,0 +1,41 @@ +// +// Reward.cpp +// Fighters +// +// Created by Jimmy Fan on 2017/6/12. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#include +#include +#include "Reward.h" +using namespace std; + +Reward::Reward() { + speed = 200; + alive = 0; +} + +void Reward::move(sf::Time time) { + reward.move(0, speed * time.asSeconds()); + sf::Vector2f pos = reward.getPosition(); + if (pos.y >= windowHeight) { + alive = 0; + } +} + +void Reward::setKind() { + kind = rand() % 3; + if (kind == 0) texture.loadFromFile("/Users/fjm/Git/Fighters/Resources/reward_damage.png"); + if (kind == 1) texture.loadFromFile("/Users/fjm/Git/Fighters/Resources/reward_life.png"); + if (kind == 2) texture.loadFromFile("/Users/fjm/Git/Fighters/Resources/reward_speed.png"); + rect = texture.getSize(); + reward.setTexture(texture); + int x = rand() % (windowWidth - rect.x); + reward.setPosition(x, 0); + alive = 1; +} + +int Reward::getKind() { + return kind; +} diff --git a/practices/cpp/level1/p11_Fighters/Fighters/Reward.h b/practices/cpp/level1/p11_Fighters/Fighters/Reward.h new file mode 100644 index 00000000..f32cdb6d --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters/Reward.h @@ -0,0 +1,27 @@ +// +// Reward.h +// Fighters +// +// Created by Jimmy Fan on 2017/6/12. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#ifndef Reward_h +#define Reward_h + +#include "Sprite.h" + +class Reward: public Sprite { +private: + int kind; +public: + Reward(); + bool alive; + void move(sf::Time time); + void setKind(); + int getKind(); + sf::Sprite reward; +}; + + +#endif /* Reward_h */ diff --git a/practices/cpp/level1/p11_Fighters/Fighters/Score.cpp b/practices/cpp/level1/p11_Fighters/Fighters/Score.cpp new file mode 100644 index 00000000..7dd05a84 --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters/Score.cpp @@ -0,0 +1,32 @@ +// +// Score.cpp +// Fighters +// +// Created by Jimmy Fan on 2017/5/23. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#include +#include "Score.h" +using namespace std; + +Score::Score() { + scoreNow = 0; + font.loadFromFile("/Users/fjm/Git/Fighters/Resources/Arial Black.ttf"); + score.setFont(font); + score.setCharacterSize(30); + score.setFillColor(sf::Color::White); + score.setPosition(20, 20); + score.setString("Score: " + to_string(scoreNow)); + score.setStyle(sf::Text::Bold); +} + +void Score::updateScore(int x) { + if (x == 0) scoreNow = 0; + else scoreNow += x; + score.setString("Score: " + to_string(scoreNow)); +} + +int Score::getScore() { + return scoreNow; +} diff --git a/practices/cpp/level1/p11_Fighters/Fighters/Score.h b/practices/cpp/level1/p11_Fighters/Fighters/Score.h new file mode 100644 index 00000000..5db8352a --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters/Score.h @@ -0,0 +1,26 @@ +// +// Score.h +// Fighters +// +// Created by Jimmy Fan on 2017/5/23. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#ifndef Score_h +#define Score_h + +#include + +class Score { +private: + sf::Font font; + int scoreNow; +public: + sf::Text score; + Score(); + void updateScore(int x); + int getScore(); +}; + + +#endif /* Score_h */ diff --git a/practices/cpp/level1/p11_Fighters/Fighters/Shot.cpp b/practices/cpp/level1/p11_Fighters/Fighters/Shot.cpp new file mode 100644 index 00000000..da815fe6 --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters/Shot.cpp @@ -0,0 +1,42 @@ +// +// Shot.cpp +// Fighters +// +// Created by Jimmy Fan on 2017/5/16. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#include "Shot.h" + +Shot::Shot(sf::Vector2f direction) { + this -> direction = direction; + speed = 100; + isAlive = 0; +} + +void Shot::move(sf::Time time) { + sf::Vector2f pos = shot.getPosition(); + if (pos.y < 0 || pos.y > windowHeight || pos.x < 0 || pos.x > windowWidth) isAlive = 0; + else shot.move(sf::Vector2f(direction.x * speed * time.asSeconds(), -direction.y * speed * time.asSeconds())); +} + +void Shot::setDirection(sf::Vector2f direction) { + this -> direction = direction; +} + +void Shot::setSpeed(int speed) { + this -> speed = speed; +} + +void Shot::setPicture(int k) { + if (k == 1) { + texture.loadFromFile("/Users/fjm/Git/Fighters/Resources/bullet.png"); + rect = texture.getSize(); + shot.setTexture(texture); + } + if (k == -1) { + texture.loadFromFile("/Users/fjm/Git/Fighters/Resources/bullet1.png"); + rect = texture.getSize(); + shot.setTexture(texture); + } +} diff --git a/practices/cpp/level1/p11_Fighters/Fighters/Shot.h b/practices/cpp/level1/p11_Fighters/Fighters/Shot.h new file mode 100644 index 00000000..d7dbe47a --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters/Shot.h @@ -0,0 +1,27 @@ +// +// Shot.h +// Fighters +// +// Created by Jimmy Fan on 2017/5/16. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#ifndef Shot_h +#define Shot_h + +#include "Sprite.h" + +class Shot: public Sprite { +private: + sf::Vector2f direction; +public: + sf::Sprite shot; + Shot(sf::Vector2f = sf::Vector2f(0.0,1.0)); + void move(sf::Time time); + bool isAlive; + void setDirection(sf::Vector2f direction); + void setSpeed(int speed); + void setPicture(int k); +}; + +#endif /* Shot_h */ diff --git a/practices/cpp/level1/p11_Fighters/Fighters/Sprite.h b/practices/cpp/level1/p11_Fighters/Fighters/Sprite.h new file mode 100644 index 00000000..9927059e --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters/Sprite.h @@ -0,0 +1,25 @@ +// +// Sprite.h +// Fighters +// +// Created by Jimmy Fan on 2017/5/15. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#ifndef Sprite_h +#define Sprite_h + + +#include +#define windowWidth 480 +#define windowHeight 600 + +class Sprite { +public: + sf::Vector2u rect; + sf::Texture texture; + virtual void move(sf::Time time) = 0; + int speed; +}; + +#endif /* Sprite_h */ diff --git a/practices/cpp/level1/p11_Fighters/Fighters/main.cpp b/practices/cpp/level1/p11_Fighters/Fighters/main.cpp new file mode 100644 index 00000000..3e04e1b0 --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/Fighters/main.cpp @@ -0,0 +1,15 @@ +// +// main.cpp +// Fighters +// +// Created by Jimmy Fan on 2017/5/11. +// Copyright © 2017年 Jimmy Fan. All rights reserved. +// + +#include "Game.h" + +int main() { + Game game; + game.run(); + return 0; +} diff --git a/practices/cpp/level1/p11_Fighters/README.md b/practices/cpp/level1/p11_Fighters/README.md old mode 100755 new mode 100644 index 58761a68..98fd7e5d --- a/practices/cpp/level1/p11_Fighters/README.md +++ b/practices/cpp/level1/p11_Fighters/README.md @@ -1,5 +1,2 @@ -### 题目:打飞机小游戏 - -### 功能要求: - -随心所欲!!! \ No newline at end of file +# Fighters +My Fighters Game diff --git a/practices/cpp/level1/p11_Fighters/Resources/Arial Black.ttf b/practices/cpp/level1/p11_Fighters/Resources/Arial Black.ttf new file mode 100644 index 0000000000000000000000000000000000000000..88772774d703e25feff79cff5c798d430e145b88 GIT binary patch literal 122556 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 literal 0 HcmV?d00001 diff --git a/practices/cpp/level1/p11_Fighters/Resources/background_long.png b/practices/cpp/level1/p11_Fighters/Resources/background_long.png new file mode 100644 index 0000000000000000000000000000000000000000..3383e7847ff4a4a67d93b7aa15d1e6f1a6cc5f61 GIT binary patch literal 148255 zcmbSzbyV9;_h(2$u~OVAF2%jL7S~b=1d4}1f#U8?aVuK1w77e4m!hRuf#B{?+&A=j z-gkey=j=br35PJ5@12=D_ulzjnS{MjmBU0QMF#)?m({J2K6bTg^?Lp zg!lt8msF7i04ifJZjF%<|5HKa->Lur9t;40Ul0IrjcD@Q0sx#j0e~GN06-`O03fnU zZ&VjSe1K*ruj2>+VBkIeA_2an6C*~Lw0H-00;?zsL2RwrjZJM$pzLnec8J~pfQXwA z;;l8*$(YK``lF4bkeevY-yTAU_m9mSG*o}PI9Z9(fK}d5y|#6LQt`3#vUAdip;J*& zi8z>=3B8q;{r7Rif1)%WoSf{0I5=EgUD;iE*liumIk*G`1vxmmIk>sm5Ixu&-EEwV z-Pmj#Y5yVeA3D-dM~H)kos)&F4b>xEV-s6vCs7)j$ASL)^Upk;EX@A*NH&iDE(@_h zj>k_pxY#*4{!1J2sK{fh&}&<3I|rzvBZ9sdm&o6q|3};Z9_OF_Y7Q1q#7rOO^WXme zv+e)x|K@|OlP!X44i*pv8z-m(Vz7Uo=KgoI|96jnX^C(=F8qHm;vX*mZAGwI3|)ld zzgs4T4*czhkPr!gg0$p2H>ACmZ4X+xDkvEp(g=@Z{5xg^XI0;N+qMU?bn$%3uWfVY z1zK%J7jpTx6+LI2;z8yg!K59fyuH|&mFNO+uoUn$J~ zJ%yRWj6DBoKm`&S`Qj+IgC1Ym03hKKF#9Hf!3g;Gg>>%v&nN95bSfhxc0i+=#Xp}s zK8EuD@faVi8;O5YQ&Y*<2h)g%2%S=`h|S~|KRi?Y&{F)+hG>!Aw?8=*GMUpSBqXdd zt4`I|(=(l(p4QQjf;XvLocmb+JN!H-iF2WGF=cZa^=0R*P5o;#m1u%aPV&{LtD1Xrhn^HCwej=w)8}DSIdN2bcnZFM|31Q+1A29TmTXvM=yS){ zecg3)F*7`@qLsYW`fw7%`njXI;Ew;*tE#)ZyN}l1^HR5$7o&$?5bJA)R#8E?QCJm1*RJ>*-(sHm+aAlz#V!i)31IneL*l$$*)8~<@mmp5$o+L!VZ zjQhN)stT9zu;8g6$ zRusfM$EwDn6bpjUZtZ=l{m7-7aQpFbH%{b?jHjlb z$Vx9hT$x8s-(Pmc%!IJ2vl@f&lB-TN4pwB)c6S0_G8jwijqh%@l15@Wmi5u(kO+&3 z3Ma06r8v)KU|&w#E|~7RsEB`>%u0J?l`?M1HWjPh5E0SlO!8<}7tP(=;yrz)aE1%G zfla5zeA9epWJDE}8qx}Gork_ThEfLA8^%=&&n+xG_it-#j+7{isS3S-vN_%xkBlFZ z`z-z=;kuyfV%gf+<2Ud1dSK}sbWTw>?FG8lOu}MfTJQcSx;Q$&kP1D*X;A*oy&{N- z)4gKw8RPv^dsuE|DAU}WFs^S5rnpm%AwpJD+R3p~NRVVDIOrQAYjGuHKqq7k?j*@j zk$QKJB6GBCY3#U-O8R0a($1UVi!B3lEQ1#G{C49;?@@x^aQZ8vb84}ixQcJvyH1CNuGIykxwzD=YZ;*Nb2!?Lnx0MV4suQD z_WI>x8#i>u5H!pDiiyq>C0?&RXk%KtidAa z#zpgBT_)`0V8H;~7`dOBl`)SZpXeIttOFUFI5^o!GoqUtm>H`rI-F?MnM=)#Gkz=(K|4h8mzl^+Qr21j_o0&E8~5A~sGX zH@TEPp^X=ZLcS({_5BSLxH!^OD6d4^1r@nacC?yvSfr@{HEV#H}YiLCAZv3@C{z(hPF(DrIyOckzpNU;1HO=js=w5D_o zzdw^TqOYXwWM&pV#E9SFvu}-Bn(IEJ@jfvBXALt{ZyJ=r;1Jd%i2=E%sy~j0!lhA( zPCR}%Y050`-wD}&JH8QrC>+w+-^=+c6k|WMcX5E!3T7zMXKj)Q>v3N%yC^>rwaQpIh6Cp>G0D_2aVW;-Fp!>EBTS_8mV87&bxQ%l{Q*N zjamUXJD5+1{=0^-mmf+b^@g>RwQ&l9icPr~~@oBmexG5Ly_qEjCqTCvM3;oY8X@;6(+Bw)JO={`SyL5f;cAV>2l?Ww$!jK0A zarB=yTe!Zqde-!h>b%R6-~)kq?E4cVmyBDu=U;NaSGWveLgg&REiEhA=zOuw@rO1R z{$y;AP@y|Ruz}UE|0b0Bb3ngV&te*BmcHSlo1G+N-GN+7$0W*V(j0BKbidw^67)VpRe&A~fHpbNohR!uK4TO?} z3Hn?f%QZOe;>Zkdl7CuauQGGSpf?%d&9_El(PE!7p0u&C>23wdFVp04Y7JKE*c_=U zQOjzTIRzd`9Y;OcrQGRO>H9L$H{7n&moR?(kBwz`BjUgOR1%})Fqcrjognh8p^R&6 zc-V{F6^vu%OEHh^57|4n(buVNOhT4+(y0xNA2|V=v56^VLH22S6;j+Or%zu7U)zi1 z8F2B1kp(vzXo&wS7?!vNK>)m^Zeo_f^X2fw*PD?pEhY5Le-nGr)Mv}Yh-Rh=o&zEo2 zc1|De%O40<+YT4ou#{dDCmzok)L$sInGfpP*y|Ka$h?DXBDdjxyLiMt{+(zE3&7qx zax9$|K4jIn%~WMDacii-47&4m#9O%o%00QYSKGZXjjhc_in@EaQ%QNLc@_sdt!0xB zCFs?jeRIpBcBe>Gf)s6$Ac6-9Lxgmu;Lk&McQ1GUY;9H4jN6A+EG#U9x%W+Y>a7fF zBl|P{jBsFcb-k!5bQ^#8S9${^w%Lrjck9NU5wVZ8NlWo$CA+sn*;n!B7hKqx-+HR+ z4QwH8l@>p|`U}|H(j~T$iQ^j7&l%(GVt3+>7x91cD#Uq`Ym+SK|4iRfor<^0B#XN; zeG}qi_u|o-81VvgT_t($2TwCG>Dw;P>J1^+V+ALca<8>c7rx+?tWjBgsrD))!)085 z*(mPi^T=cbLi>fm2}v)V(<Z#=EnK!Nh-U*T9%0Ok@I zP2E|)MBPn%D^&&hy5dLQzYqR$_#+APczIr5PJObkvTtL`jCG2$`ylw^m(AX((>$q> zgU^pZ$`374G5eJLLy11OQDyp~`2D?W?spN*^ZXQK5z9Hsb3?s%J{D}>{hDqDH#ugO zmyJs-Pb(zR41;RRuC+Q$IH<+6e>~0uo$-waQg6=yw=c+~k{L%Q_j#LF81zaOhcf3A z&KcGhjUj=ZFTI+EyT6C{7!FUjF{TeQWMkgCR@uzg)duD0jeWCAk@fa|{*Q${L`yL6 zEBuqe+Cs0=p!0bv){4ZQ4qJ&Suhn)8`;asLQrcuLNr_B-wX$r>1pO*+P_M!dO;zcP z-BDkk|34(&N%{S_t!b&wxYK9f>gwW{;b^<}$O?tP-X-9u&(oKLCQCI{MfdtK-45e3 zYH^voFuG@lbgazJE<_i~%NbC@BK6mV9>H{bHHewI9rm@pzOI@~rvw4HD_^neRAyGc zwP(wBuL|8B9(H#5emu|XjKcEeJE6jd$}+TGDX-L>&kMduD+&A(eyJGbI4kukP1*TF zi}`<*#vc2nH@=f4ok`fss^2tZPo6}sZQqD)#P%B!bA7($KG#X_)QAh;$I6<2+zkV%Y;NFC z&QpQ(7`5o?#wjGRpEcjT$YH+KIL55&Eq8a|Uv?^SBdA(c0SHK5ZRm4Fe{(V_zDgzj za8}M$lujtT<-2AgF6l?ob^w3h2^WF=t7H)p^dRD7mNN5z@|2L%huhHyCM7o}HCgJx zOD=7$mFDl;iY4@sU_8E|1csdStH?Vh@K_|1MkCvgzGxD%#5Kx*zNF+`5`F?`xs^g} z1L`|Mq{s=+K4(GYFMg_yz4WebEg+9>*<&PL^(JvS zRmjl5z-&|Tbwhp{ZpwdV79#;ITR_E<)K(@D`b?mlJ&{ECL7rwdg5r37W`112R_rPK z&b`gMv7TwyYR4zX{v&rlr7HJ$^}jg3NG_XO+miEn9Y^sq zrRR4F^SJ|5@28hBJDm_)*x~%O{<#7Zoi^XoaI(5^Lk7JaIk`_WNhQ~tgg)8crmZF< zvH@eAXC)VZ8J?X6m_`qJH4m?bJ)4ePfjExiR>UN7^W1)8v*#{W`d?)AK0B+eQ` zxZeq&Bh)IR;V2VnSZj?_#?rMUE-i)pN4e?Y!NG|Bh*7>^Wj`h*Blz#d`k?@k4EC}h z0Ie!xpPYjze|6hSLmtB_O!{T{ZMyuxoptl&2;buVbzN@-*Ys=ZEjj;`*1P2^8A_>? zhT_DYA&>sO=_#y&)~a;2my>xB2z%j$*FMnl#;my?tK7J>F~}JT)wHKkY$)E9`M#bA z(5Q%1_z;BT=*<5`FBYB$fW0BipZ1hjPG*%%cd-jXU2ll!A<4U)b}nV=?Ile z*`SifJXm07rvX@an#%#-MNxlj&9pA9I$iHd{%DBt+Ni@(PLXO-BluOdkj712>1moS zvwAUKMphQI+@K{IrSB2Br>Fr-lbS!|o6oFI=Ds~(?>#fspT-B(dwQ6_yBBF!zI1GY zTj+Svi*=?6BS}H2yDY(X4K~YFW|Wy+ZWZyB>4FSzZ;Y4*3zj_6yIXH=$;+EW_Qvlv z(pwSS8#gZb&~5VU;j&L0AG3wP>gHgdGAKp!>!BTq+=5vxec}P7tVj9Hm7;j4d>a$a z#`6n#_RC%sTF;Yf=Uddq`ZFs8l(?d59~P1N!RJ4SW={tnqV*Zo*Pu$MLo=RqMho3dNMD(8!ElR?(g^O7pp4noyidgw*M7%d#(Qr7BNjI%@lj5V8M}? zEVF)un=HAN5Jl1bq;miK6e`DVVf|cbNv@+tr{Y0lW?Tl=^s7w89k+b%9J|s+afXOh zBNf{A?|5b|7@K+4Ct!rYJ3Tk7sXz2Vb^TFU(lJ?kW*26}lo!3XFD*pK@&{`8wwqgg zrN9uo)pUDs;eFph+e}EE_tmYSaKd1!y{&_|WAZh}!*%%#i%whQ?xSHG!a^z&2RAe3 zGd6CNn%7H!eb?cbYBpSRpgQQGJutz z_9ow?vc4C_HPIhr`etC>R<7Q#SeO6^jBoY2SdEE8xmx{%McoeWfhUf+|G-s!kqX2Q z&6Ev7Ve{I)jHg=gVnVY6PuJuVG-&nS>GpdzzK5gZFoX^w zjHHndD%A%f2SGf}+J=V2{g?OjVJo~$&m86ocXzFb2boWdaj?qd$M?3)M|v(h=Ufk~9xh`ZLaB0H#czqHOj_76uJ(n4m+DPl zl*`-g>Pi;kUgB0eGXkC}pc+Ncw9j{_hZ0Y>A6RKA6y2!swKfGhv!+kD8A7<+2N zUU8tnDQ)!oe8lEEJa@j@0O7Pd&F=Esny6ooW{JyC;<&{0)41lqC7`wa1AXPN+)8Naa`xaI;Zye%pKYP8nLjT-sC?!7U4l$oi zumK5(E656%yXyDZky3Udj2;aL#!y4-m`GIiZQ5;-2BxsmW3I`H$|-o;gwbWCw>v`L zX^b;CCvP;9v;eVuw=iK@SKpKo({f)V9pkP0>mnZYF&4Kn=w1TvZ@b^8@+>`8KX^{U zzpkW|%=Ie0wFZRk#CW(Qz}T0+Y-#pU(|5<_L>0+^QtHy~JsztB5F1Vx$`!`>3*KnI z685SPc)0jb=%{Zdet)R}XNx`|7fV9$kq^~~HQj2ABopVQO?SinQDbQQvmpC)Vg0u8 z%1bi!JnLx(nLfCwzN3XWMZ1dV+oocV)wtQ&8$AUi)u<(Z_2)CBZm-x+tM06 zZ%&UP;Cyi3ssqLe^4h16$zgZjSh9?*Ui%l~wUeWWV|bkrdxgb{b4B&l6m4rTDr95X zp){oqRh?3AiI{?zH^By{M>Ddcx~BWhj2#zqO)$z0M8uf7&HF-2w%-|*bNV$a1oQek4N9i`)q;ki#7$`?eRRN+5Y&b>NN z(X**MV6Vk?!71I=!3(QTB@rl!1KmWlj014C9C2}v2*gaEVWD$k98VIBJ?c&?svVmN zYB(KPu~p=W8P{&$E@+|2Uf(t3>p+7$RVPT5x;qYC`w-_gTswC3nD{wMdno_(I9+Qf zOW%@5#F7JE=jGAlSz=kt0N^DpbDkj+wl!f8><@5=D6ENr=E-&i7UhB*;DrsO7tiI~ zr8+QByHe%)&##$Krkia~ynsIYOWa&@_%y64*);5cl5-lo+JDVwm-(Bij(k50IZ9{M z=3ZlEu)*hg&`|2u`YO72(lbqh04??`+KP}SvY&Mjwxk=p#dSY;RutNK7E1Llh~F%v zK(+o|P}36vk+_LN`eSB2$761qygjvS!r%)F4ynk=sO3O8T(J@qwN7kMmeHh>e#{G& z^HF6~yB*G6wEI8FS>G^FdriLJvOK@@eb{_36<37Yk)5nFbds=~aJiyqG~@}ZwPHsi z^W6JYXk11<-yDqV77}yo5Z_z;_^JvKeI4y5KAAT3jXH_+fD^szc?^-@D=!tV&!Mko ze{KIMjBD60)&1=gw!QUB#gEv=A!iaD zLTRSN50^K-a;9hHzBhASSlOOU>IRO1?NI>NIFKLpB|Ab?PvihB{Df~~?XxjdmA{!b z6BWmQhxnlv1KY+@|Mk_)*)D&_4wz+KJ;vT3pK&JX0OD(P?d;1< zTfU7CI^fr-L_Nw^qdbEept~xHiEdlHeICT`J?5^$Nhtm_x+8G3Q@_15Rk7Y~Gh_5p z=3eKc-2;}PZr%E4vW6tP2uBq2!TPj#!?boU9IE<1wK?86c+Y}DRpOkJdqosLLGJ zjBR|4ushH%Go&6aR+I4Ia_vYYi88Xa3(4JyHl1APZwaj zQ!I@weVem`XE!Z`TOAed`L)2JcV@27U}_ve^x=F(C?+>L5fs?ZWC+>dVom~6OzerL z!4Vu8c|6Co%Vm5~a&~<^=6e^hx35=6gq&=S7qS?kH7jm#RI2m63wUy|8s2Rk!kP!8 z*;yMaVj)TEVZDSo{=UENke4#8UeYVe%sH#8Unxn%dDE#;IbA~q3Y`DAyMxIVI<)2MB%1G@^%1oG~ z4zH-XVf)40q80}r*v(+9uSJSOO}zE|`{HIf>La9MWkMct;saGKTat1G@$gf@n_Ta4 zb9<`0&mi%;{m1RPqLpYT$k9xOagXxrbHq>fI|qJcEity)!l_xXQqU=|S5fM+0}~E0 z|M&zCFQn$@_Pp_29=@d+WpGStDj)Be*tx16sRb~Kc%`=DDJ&?FIf?Ij54g^`TAxgq z>!)4iB0P+AY$NdQpA~NDB3CG18Ijk>gj};VxOI*4rQ_F;GjKaYaxAyr3HGvfxdD_i zp(pliVzJem%;vUgq5EfBwJ>Jk(4xWgFyi#EL4{lR69IXhr`ZSjvoy!%E>n7GF;b3| zw17p@aclucNs?a6GNP!lP=^sY-X}^GzwZLqO5UmgKlnWZ1_= zis?QC-uVN~tZ%>JR5T0fkzy>XYd>~$9BXrpouP%m%6?lJSg ztmKCwQf3a%Q2xZk&DHar+C=BiOAQ5Q#nD2Wcb~sg!?EL_kz&kB?jj7WthJ7!h({jL zo1N(Ao^V#>V)_viKGG3no%js9O2@9soU;j?*st|e0bXKJofiF@qi{p?O@<@%v30&+ zy$4ng$p@-V=nrl)r09dcV$X2o01Q=m-LRG`R5_s2c+_?q8n}P;+udQFto(9J4D_5x zIKFpSR?K?GlaYDuSP-%lGih6qgjua=P!Ikob@tr{4&ti6?!d6OMW$_*&aZw7DBI47 zK!$Bm99rG_Cw2;22*(`6*U_$TmTs6O z8(XFz!% zeA{M>KE-lFwL*TY1)1f)Ci90NGlHV)82pud9iMA?SkBiuEkwoj_@)SnGr(GIG5QJ3W^%G#8w! z;=Iu;@;h3vf5=k?TStc}Y&~1$n<)7wQ^LxH2GH*9o^si|F1Wq~8UZCggAs90aoQC4 zu+sV8xZ{#PE%j~NuYgrw)^9i z)M2`k!a8Zp!7A@VV6Vq(sv9(AUWqU1K_R>;UApV!WH^SgDJE$7WY1>5j0|5^C$LCg z$*v5V57p`?fg!mk6r;Ojid_wGag_6)?I^$f8^8OpzKVIDaFa&BYGlJe`~XeUw|;M0 z2_RBf+(huVfEB519vlp_w+sP>o%))$0b)xP@r=YivUBUE`v4)CsGOajdbFk$6+>5eG4>&rnx%EA zrL5&au)IqB%<{we(ZTD;0`uOqN)P^;?O7Jb2zXp^m_IoP7(Mwm&19RK+-=^H}KPMVMD>;M;kWWfkpnt~z2# zqwD9ZhSc=W|8t_ z(t!}fwy%F9gqKIb&&s_qQ!U3I)vl$rq&+WJKBNO(4D~*qCgzG&G{vTi<|Ne7M=3UD zQZ+|aQ<$MsDH|+);qa|8UO!eygI|zvspzb1_pc)0(fRdrmlN7U!?7F#KJ)dN<97#B zRfHx?S>3B}d3OY5ayO(rwwa&+-8S-=Dp?&w<`!0Go13W-l5&yec%Ag95)M>>D zKAt8cG?}e9(a^0M?Wz9Nu0>g7&&MO&VH3DnPKFo!*@Bn1k_p z4KU}>aE{l!9{vQm4|F_|KbUCj{iJZyf5~CNd?pFDCtU34VBAfiD#=mg!W#;=EFJwj zZwQqib{+=*$dW}=GlM@A&K+;WNl|iAZ3J{)x+^>4Y;kdq2A~OsGrLF<$t-LlPPhUQ ze{AVqNPcd6Sc(k*+vtyU->@I6aT02Y%+mr3Z3fMO(JtHy0G86w++*5Zf`$sI`;N?P zE5QkCjPZ_s7r-MYP^#5^qfsPfdG}Go@rmXegkFOd@*imnAO+QD2mI!C4%yQ04Y3!+ zd)M8SD+GeSpWJ4donEgky5}@6RF%LkfX(uY@ z)8fx+JlMrerJoQc3=M8OnNIlw@gQ8U5}E`s4kX&lL<8HW&HZ)p-saeG^P*Tui*$iDD;(GI)(K zTqDyHT)l@F$V0k(v`*zC&GahMnqB)nk`g$T7Wlym4)}N}>jEpQOxNWV{ zU>scy+#-@k9Wt@HA@&=?wkK~&`}s(bW9CpbaU|iA3GAi>p>G5Xi1{Wu{SvBD5WxAG zj1T`^VizP_R|JfVwXvAYtFErz+uD++ssEZ5?*Yyn-eAi!cRAY8WGyGYJ?I<7Yf82w zbE4b{Nd_LP1WVhE8V5jC6AwbBndlc_W;_6hwaRZdv^R#!z z>5T1OM*hU)MI=q|6p?$INrVp}>MpK$*;=rQ0|Ns;4e5tc9#|4effETtwx#9^x?cZG zSM6_rJahZS=(}=BxWu@0N&Cnhw{XDJcvY`(Lj~jqCQCLd&J+jxo^u1#{?o=+Nwthx zcowx2%&l_6VtR#UCHZ}34Us(qYJ^;k&Wb>3d^1K-NRs`;^}uyZ`t1KWR#K__mZ&

~_r>Nz+I>|xT0c^yA?!fo}0ngCdi6Fue>AIzUaE1Ig7oW;-wWoYzJO4uhHhm8{jyx}j~= z)p*wH&ZMu^ved2{ZbJP0D%O%RPu*``ECS&%k&FC~=tT^KO-KQD>g(&9`7@c@8{nu! zY^;#=nZ9w{LZ%9>H+=jw-3eS5VXx5Ak+M}mNPVNNP*G@G6=|=w8ogl~WcLNx43$&s zvc?wJI43x-<(f59{@28Hg0L}jEK?U~dWLOg`DZ%Uq3i|MWR)GfHubYQn`L-Oix6NF z-Lip>&Tv^-xrs795~cLJ%9PIp{MJZhxpVPH4kz(8in4+WoHw#rA5eO;=7b&w&g&Wr zVD_&0Ipld4&83gl5RPY*Ud@hU@FsSw_pW)W!mRQSZ(W$csxw2sIRwHZea>aPE>K*I zzV?eJ^(*$2t&#w&4F?+CmHs|n_gyJffSoSEH%w$Jl{p}$%Ze;O-;Ivf=*_!IWIcTM ztZ9U*{{l(LTZU&(o~0E^-$v0ZI)qKuI-}*~HNazTXsSf62{!P{Z9jIC>joqs^rgn) zz`%yrrgKuIo3pPyK-#U+XC_~9ierD&R)BXg^}*@nt@QTDZ_VzjaY45Bu%N6*RvDoJ z8)8eK(}UAoJ`uaHGA@}ak@d2Xj{N!x(J5jYPbPjBISo@S?P;msko0$b8(yfQz9*5F zVjI6Ga?paU72k(5hjQ?9%n3V)M|j2|91A+{thv8a$JUoV($lgEJ@mHhF}->|E+B33 zI%j}~#;Z`85T8|VByf;qnQBL<+u*R_nSumGn9>;mRHF+hLxf>BCc1Qju<7rT0ISKc zbey5wToI-|Hkv|0>i90gZX%WxZ!~bw0+$j2s^Cw;h*Bqi}$_0A{E4&qKa&edK8*ddOuX| z7+2$Cnhg-7fhGxc>!qaFp3-wDCQ`AH`eHCNvL}LmNH|j1(I>eagnP1J@0RCge^PaG zeI|eR=S=xqTNSd1&}+&L#O95laheSRLFVT9RY7W9mM{94#TAqtnj5k|O{Nt)SOk4% zonN$BrTIY5kUqJNOR4l|p{K#~jlDF4gDB zDpun>3>>ONbR?bm2%hg3#kb15uaL~QWwUP@3S87tL~xke(IxXZuormHICbj5G?o9S z8!8Xo*rNeqBHu3UC~JWyt29NY(WFg2e`Sej9|^{~uo**6c61QtQ5}&YsYj1oZJBRz z&}plv!f4#GjU2TFGH~L7>|TFLq+f>mhlGNY=#`JKW|GYc*VtX7@|oWgsn3ElTO`$F z>XU_55{<;p>XIb%$~cJha}P&sF)oGae7YX<)FF)R$l}9`qC!GLj(mg6tZAH>i&cjg z?E`&9--ip23{n*li34$9`i4ewq0huROH0+{(Ai_Dp?^4zL=g6JPfzZi;!Gvj{*%4j zR7OURl;`+2<^9z>#=L;Sx1qK=wgIf|(CaDKV>mRC(GLnMY-opN*y2Z#CFLwA5z?5v z(UL3>xxINx*DL*v2fsbVnIuC0Cv=Zs8d1BFT?LBYJ=wWt78VmkTb4mZMVESpy~Yh< z)g(N^BT(aiCF0nnQ9f;o#v)SyN@*M4R3kSjqMQL{GTUSgA@-R9b#2_Zt~!qY3Js&7AuZ=kP0+2rGw(lOa36*zA0kTD5^%#vtL5hSP28qr^7*0f_GTqVCG9 zeh9})#nM};U;wCq^ZrU40!~b9g0qroOf_6#`W_r&DNEwpUfcMFBrGZg*Ix@ISbKxo zTC?g{&u0kjDsR1A5R4+BulO$5K^I)`W8Ev)LIL)*GSXg>Ryi;fuQOgt*u?W*br7F{ zYnvd;Vs-5nd>)k+GV7kJY_zG~XEFJ${;ow&n;=MrS@DlVa_Mg%`}-J}*dxMz?T4zj zkxfDQ0=hYX)50Vv`wSZsgwJ)5{5{Yb`#tLi?vK=4V0%~ z$AT&URC+%Ewp}pBsWfnCG1LaVSNH9&XrEwf9P<*hp!z5>O{stsUb1P$YPZzMTHRlb zG-X7DmC=qDwo3j6HCder6?9|Y$PaVR+-$@# zjvRw-8y+_xQUcI151);$4NybS+SM+nRiURjNqVamR z#WoMO#Cq{Pm5D-t?1yf=CYp~EpZf&R`*v-1vpZAkAcpXBKj%Qq$MPn3%2Z4p7e8S79P1n+((Kt()y$ryVnE1U z_USLvQvpCpqlui%7<`gD9hyio!G+Im=Z?i<+L%E^#W9seBmOV>)1rtU^mGh<5T2!+ zg6)cEfw!E8TKrFIn9v}zW)tRlqQ~ugqfscqj@Vw#48<2xVQO|AhlhvaUSd0fjFoN3 zZn*Efl^>zi)@#65DhHBdqsVwBMON}Q7V6%3@35W$E*u(Z0pt(#{!)?o^sT(9E~S;P zI6LPcaTk(*a_Tj1J_ut~MP&@^&;zVIJ%w#7m((}j9?T}Drtg|PGMR(U&xq3|LPF2d zfCG{U?m{Uy=&8v~4(IHH8fI1kP7+h|gn#un;4IrGno2tA@v)Y8&C1Uu9kO{|9vi8i z?oO9OMAGpS#+#4b6g=75IlgXqKZXE}o`F(|o9L}Dclq>wWzlz{ly`b~hM{WEcVj7$ zcA$@uz7~xT18K1xK=TOs5)9K^N|~=v54nazxeNo~E(8|$lRMrbij7-!PFV;vsM7Tp zwHXb7h_M)SP*!2EZA3|ObWfCm!*Lm4-IK9%zUp(y`e-`+iExRX*yryR94M6^VE==jqe28LIb}xB){+nXhvGe;^d0uw zUTa#s+WWi(kOFo89r{h&;uq`RS=qeO$pvQTSv@95nLP&1X^#P4HNUe!oo-1-TdBy3 z8-pL1?_HFLlX;x=-a}NYyNL$1f!FDmCQOUQf=Z!k(J_!4?F)_Y0iW^XUmR)3m$_@r zS&zD*oC3({A?*w$C8TE8fmaUs-;oCKE-N-K9Zh&bp?v4x4@MJB`Di2V73xylUi?LG2b4PYyfEsq06!^^t*9-ze?__^8~9{McNw6a?$8bFfa`9H1O&B6`aB>&3q0McNB#b zO7#EmPFtPXl`<}`Z{!p-5+3IkrUUYyXXL9guS6_6B8puTk|jzFG)(Q;^0tlCX+BPS z9O(%c@7}GW1}H{waiS!nOpiM4E03;zgf@yf4kbww?Is=XSc$roem18g)6p;@(TMzo zuBzb1sGe_MXAAEuN(b}-M|Zk6J7@ba2m1a-$*OSL^#`APg{l~r#Vjva^V0WEpe))E2%^sCq=%a5<%^+tg0g3=cI>OvKfQT)%3Z&&Qg44tk>CQw z!`Rt=FdO`ki9go%84WcdjgU!ch&CB=vH@$Nb|iA{R@!kSpdJV0fs70DZinroe)cwS zb-(p%SjzbkFW~7dM?g`6-N7!-&4LDCJqH%7;vp^*c$@N~qb$XI> z^z>N3X~M{IyerWpd99U9YDB#~N|WyL=Gny=?EdS8*;a3*fL9lRhtF-y6)e2`u_Ysk zyHloJJ$i+nOHMgf8N4nzBMF|yZ*|-j?q>;VVDMjeb0(28UJn5)*%8@u`4Y^d97oY! zWl3i{0Ed$OQ4E=rkFl5f+)JC5PO48XsU1GQK7T>jydk&tmfZicb+=Rgin-w;35{^z z?i-BsdPtKBoB!j5VKzL69tAI_B>QCxrHPmAjM%mAG~5P9A4W852i-k`EOs627q=IL z3TdhKz^Lq}Wj{4Vev;TMqfNe7;Y8G^Mp*!rZQIe!L{*blP>oWtfBqTnQC_^G*FUA` zJ$B+5uu{|$iQ6f+)Yn`0-iXJ$ycTs=mT;C_!qEKl>RpouL35*JE+!hM4IZ2Vv0Lp} zvG!y@0oV^}qt&#CdpFh9Z_nfb=WtMlrJzuV?n~;j3oZ0%*?X*&IEZ4 zxWB~>lG^sL^3r=C;i9d(@>2N#8s`BXJG%(v>kKZ%-FuuBmLyP}eMjHQAKvn@hSpQm zQxxxxfIV;>B8zz}8ne6H0;o25Hf66gmOoV8{A-u^+v>$v31S+x`V_0eW5Gwq#sRk= z9q@TRSkf1rW{;Z!$k|h?mPFd?+Fu80T{RZoQxARDbDc}+a&b=4dblmnU>q-3o5y96 z?`o!X! zo6)F_@kB>pL&F6(xJuQYz*({=k5gd!6mfaj z7?UUDR&lkRZd)!0t)d#WExqW1*WVryvW@wi7Xt-;!;O6s;KwXur0`Pi#@z&M)y2&J zM7t^|EJ;jA2%U%@(*Nis_23fk6B&G*NB9mYOhBxp!k`ne5z93ZRO(LjDU)3Cyd-@l zfryt@SjVFi+I>-lFZ~r|CAAZ3i>-m)XjH9CvEd(1%V!p3DL-$5m91#LqNI+zjgM|k zJVtpuNoeoa2Li_hGN4uC6Zm zk;;57W34*s-;cF`*$; zO@<)gEmNj~{*PCsQ~UgL4H$^SFPz#414euxR*V*e8qc|UdP=u(aIm*0?PLCv>O1O( z`s{O>Ri0n!ndFq8+HpT7qGv5ThzTWBuoR+5f~B=SFI2HtF2vE3TQGCgKIU=JAIV|w zi4~%)MX+#+ZmFt|&fyxuha*R2nH5_oBXS2DWt7hz?gDdBPqNrfJh7mHpT&5SV&2_v zzN-k2S#uG)bx7I&cxZ|!!X0pNaXI__;|uNvA_u;)%`RAhC>55V27N>#3Ycfia0P~1 zR=cOo54>n*UY2%JgJ$Ht%l@9zEFhjtpgizHm$jyy27^VBU_gKa(u>NWGkAV}0r4V= z5bX6^@3&z}?JF&T1f@2#rqden%#Vp#069l8ti{!qvW>G7H{K=1Y&JRmbhS2 z0RXMTZ1YQpv`b~d-$J)L{)9`r3C>Ma#hT+nfdvlg!@N-iN%P;ONpXiTRoG0f+j8ksk5_V@DYOGc z=s0a{fU7j^@d2=KrpUgK6!y)ltjeHDy&v1;Kvs+-bJo@9Ad+H|K|Y<97H4#>sdMmv zvZPcj&d0iZs?PUm?{PPH*x*z|bz%|T9$0H_2!z8Ri=fL@BUXVXq5`Pre8pnY|NG;u zH^)G8bPq9I3M%`Gn`g0RyeSfGo|5izLDr?i)O)nE2EE^~Ivj%$oFwkD4^e`vvkZ&8 zHWty8Plkj(JyvX=qJsVM`)19#{ZW7)UKA4=_n1uLMh0)uM6$3HUqI@r+{pNidsd1z z99bc~{v=pFMVuppmmD-Nq{?cNLb)MbgSy8%2R78Ki(h(^1v3}icI@sSg9AVW%klhn zUVmvn0sXPp1ziqqj&j8$vue)G;SS%B{~SUym`bsOMdii}tq%7jP_gKgIT%7P#kGjl zR0kEgpL#hu5=g!uBt_Xs2ieJ-)|5b`=MOgfUS5mhrLZDl9GPBeU2kpYM6R!MlK{aT z;G$$AX%P-ZUg!*>bkMUt_7_$tlLEgko8BPVwHK4#z}V!&hC$zUvh{Hj$5Q3@+B9u4+pB<*YjZaD#NEB7jyHQ4&-Nteckx{d^#nh!y&!S z!Z`FT1@{fj&FCxw@P6;2@WkfUR-A)dm771S&pgCzFA@RlrtmS4EEoG6nO-o#AhYbRor<8* zQ4SN*vBtXfYTKKGU3+)RWS;S4YBJ$mq1uEo`|)FF-DB5eLQ(>UwX(wKaAuPuWN*3n=3Y=LEtH)5KriY2`Szj6+F{}mvWJ*z6uW73t)GB zh^%!93_k*^?F3?~QPF&D;2#-(=iryX5ZFz^)bUg*ich(h<(iP?%drs!cpT(ZOW&?g zFgiNY*`k6?G$+n@+NBNmd^7;B5sLbZ&DIKtN8?9DlMa%v6yr={CS*B)P=NbbU-!F! zVb;S>TE~8~`>v|yRb1nYN3iqe3uwKGmw+Ho)BOZ@&I-(l3sjs5e-%45Rxtu2zEQzA z%-s_&<$tmFRY7reU7NrQ0RjXG8rK(IiNpn+hGySuvvNaG3aBm@ZV(s&1V3GNo$ zwUH3!GbgJH$ufSgTO9`U9_6Oh}U?#=8<6IWnhto+eyZrJyPO4RQ*RKSZl zscgZHf#V6HDRB-!G8PFjY8UOKr35|kQxIyH{48^MJUkLeg&sVwL>LXAYz_m=FYu$M z0~jWZzeD8zUe>$=mg3I;fbeg}A8<1YBs6QC1&$N|ngqlEMREYE(zSx$%Ag_%%rl-x zWQp11CD$GBqBSeM4qqQfdX0__3R3v*f&cGKb++=Z+ba@mz%hR8OHHKR;gUsrcTHBetECa+c$%qgTrDFZ(T02 zS-A871>-l}>TT-ddLjZ2)r#lOr6v9P+S>;6wj@+p8$)HDO&@4tL`oe>SVfkKztU zJpOAak{*Iv&fkxL0^joI8GIW7zt{ieB>j6E(!u}PZF--N5&9(<(x~!ii1n1(w${8@{}L23j*-zCnQz9_6k0hqkJF$+1?jT9;6df%ShHf0=>Decur|C*d%j#x5{Q%N~?8FZ!XX-@VeDam=G>JwH1O zHuZEf_$yh#HqTE?FljF+CB0co5<_q{LMVDoFvz}7SP!O;guQI67eZy_kJ%uj^Qc@#;U!Ycm|W)3(kHcVJITcf+@ewEl>TGBTQiKH-f-S zdxGC$@2@mbzUu4fM55-L!XTsLzRC}ODQdXL;S=YSeCPebSe0Z4*wyBP$O1x9QRq z?p9ioA8q}sB0m5slI(s}=dV}{kpRn*=?=+w1l=&GJOf_nzX$&Bss4W=T$2N;STh~S z0}@}B94tkc6cqSH{o-_Dvz^%$jjjNhx2$-#l#7c-)dsY7YnMz7>;ZI5_4Ub9Hh4$5Ke4~S;XK3)5YG(adp1&^%*!xWUfJ2^tM4{!N1E81%9A02= zv;)LYTjFue%_FtNYv;f|8o~uO5t(~^#(d7}n(;mzJmVgJBKj7^PJ<{mtf-E07E5Cx+WWl1%1s!eTG6)quH@<~=m6(K(=aSGq( zad;+#fy)7|U7lZ_0-)_G!`z(aDE1YH7jSkgE@k*XKQF3S-a$ijZ#dlkQT)P#OopPL zR_-GGH`#6x0qDqNp9y<-wHiS3U?MhuVV%&Z(Nf)-m$7qx7wSCpuyHj>l#Q@u~KmOxgh zQnLF9hM{@!??R@57e0q;Do0U+*S@$0Qt@_b4Y1t7eb!BF2b)c5sbn{`9i|1EN)aZ& zECyZku!BdF={nH3OYi{}J2N1b#hxpfT{gi)f#=~^0ClbPHHAe-7MWMOaz;yQuD@T7 z&Ed7{H751a{QSTk>)@#XQuJ(nWhDK;L9^zd7K2V=w}J%=p{x~O#@zV0s)w6bYFSx@ z<$|yGFo1rKNzdpkSYehi9jG^fH4M z_vo&><9Pzt$Ec?LP5@1SHwwgf79mKhlt)LZu> zGwx5@fgph^I0A64-;tgAWg=85Chu-;nuFSqweGJs-p!Q&g}fm`y#6Ngn5P(wzl?Q3 zt=?C~!YFQa)c_o>60EDUK;+4n`y2M~#}|Ay8hCFD0E#G&bwg$M5s%>#_6pb%JDA&l z(B%B!To113RGN&_N7K^i+*;(1y@~IhXPafhP z?gDEJ1MhUN_NG{)P8I`gv4H#+BVg6quvzp!(6xOuYzytf#i{$&Tiv6VAgKH;xDm?9 z#N)%ekaR6uTiX-t3A^eLjnTcmzJ5D>68Q0YJy|(dH0Jh(48ASK6aWWKp(_wuI_T7Z zCf@me-A2X_w|?1q;p?;8j+m+zlI?t_fF3aVs*OWwFBYPN5v5p5O4Mzfoqn*kh|5~Q z8hUHS{-Iv4QS4-ZDh&Z6`Y)$CVuH( z*pX*}EFkbDG^=`J(w{3%ym19WGM$74@PCDFHb3l9O^+%efeN;)!Gen;{Ed0eF`gGa zH{IT5Yx0u%1-DI)EpZaSkd*f#^_n!5d2u4*!ZQ~+gOz>_4W7UD*w1q>JwIR2#=A}K zscOZ0eIo1ncRXO`BKD}OFG!+4lsOa#d>C>jN;XvO@`pxa%-K*j0Q(J(X!Lk z!Goy99mv?t(Bpsw@C2FCJb@U|deo*ux@^J8>WK7Y$8Fi$X0(pnKZ;2-uhOslZm+p* z9C6FvGB%|%aJ>N>9Nx*a=hl%(<>ltgG@5LFmEXPVz(gjR-5oJ+fId`G@Mw-$I6)km z={US)F%`;(c5TCpH9#PWT5ewO!e8ijJUi>AX~U*&7=!9V0O70Sb0PbtiDBe&tFD_M zHtnZO3HF9z3{A0s2oNv;`D>?brKUabWW-N}c)JatN6(o2>Upi)jQQ+FLQ1-iX&H?4 zdjO6xJN}O=fbKyXD6cV;waQ1^Vh?t~;lqhhLEpX%PEqC;VNFv@$cuo6!F_AR_@S3T z>(X7}seZC#OS2(lt?IUhohIhaTP;HBSv#4{N>uO5OW#M`tO;n~s`bp657cc#m!i{< z-5N2 z7A%KbiQ)6!jMYyMIpGUy*YiOxX%Xysx~t|kfPm@LKKciZ85*^TSPT^-n~tW`dJm%W z=BeJ-VZ{oQ{5_xC+sDl_Fkcv&f+;F!PxA zKgt3FTwu|Qlf<_4!Hh2{qX>+Yp3xW-^^?amymWX$ZBWJbg(gZE>l-2XOliG^z~ zMz59a(4K?zSF5t_ffK33m?Uo0;#dEa=INnt9ayykeS$rpC%;~m$_rRjd~ zyCYCDS*wFUY-pC3@ci~R+(GiC>5nI8GQPVVL>@t&K)G~B0ZQm($aj8;IL)cK-pD3a zx{@BRYIK9enuxX(-s2-g$oh<%Fq$;ANR+Xck$TU4xGqcPtJ1y=21!LYxo3|Lqd1=? zmpw^xC*SVO?Fy3nyB~k52Eu8>1v1(q3slblKh?{_8(*k*k?y@?TXkNK*9#I+nZJ zVU5t}_^=H;{dF&au|TsvgSSKw^Q~BIhrh z-cF{Wcfho4CGitYjQ2BBp=$PWUA7U^{K`duW^t|i{%+!(I7%anPQr(kkfEKF&S9W4 zE)@+h4^owy$6us4O^{aj&nhed^%7F`t<;hLoR_Rg~A#2mlUm(&p}AGUb7)dV6Oz|`pz{|^VEJZ zA)7}olr|%Uro$dltBz6M@i`MbFS~h|Q8dNY2-YoA&WoipH_I-v0o}P%|5RGMmnpI(YtiuUW{#LY6}#{-8sY0TJ6 z#-Jjx2~Ii4dLG}_0a5xK+ANBGJq2^F7)(u1TkvZ?AC2^zcD{QW*N@^>Bgd9!Vp@|Z z?3lQG;R*o~5+K4gnzlr-@9e<^qy!c5i%d;NXl<`DgSY_&P+p{VE*pD{G7GaT4Is${)?zXAi$Z|la6W!I|E^)eo>&&ucY8*8n-=PPg>_}37dJ$sPxd-F->@IWz& z@l*3nen$jIAD}^^6!!y*jBR$L>0Z>PobDzhB!G%P-I|;h;N{pNqIY@A9j-Y(CIE;9 z0N1ovsW!LQ6ft~Zp`d_rs+yqjQ`*CTdaf}>M+|BDW#G*8i~_AevF5KlhM7wjf1%Qq zf@G3tBVMrsX57~dOIQ`qdo1};hCh$wLozggbB(@YcMxqgT^GIT;!m$@pdSJKmQo*W zT2@xpecQOCxv3B*P<~Gw*9L(^dyjb9W|bEFo^)JpOYlu&vK%>^8pvNRwNyly=GsS# zD=8O?MOV*45UAI~_<4e5K<69ZcC3MM0#n>NBi}kIFD=``7!x3^{%!DQYV~9920hBD zsbN6rZtq?EhTCyxl@sH4jdYG9{Sh`n2`KS&Kr!dSSvt3o!8zOn5N9H^Q?9>GRs9ho zs)a;o_Jeopj2$r!F>uh-;X%?$Q!}}SHR5>@ond@rH7SL-4ve((=1Uo=frE*h zW#@71%5>ojAa}(V3xuoko-5ZZajR@5=q_(tWm4mbv3vlcqd3uHp7tQsuySlNQFx~)PvIh-k07IvPHjBrBDkXwTW`L2b>G`owf@qD4*s88}cb-SH)O!x6^kGC> zd{|5%idf-{yMR6S9a)kkTy5Mx`-3%IXbbZDt>Q%aS<^)~w=T~)Qv%}-57HHILwq!` zo)H_>OoHL}W~2HyNT}yWiPju5VO6NN?j;F3l?^o>&~kFFqRC&xbDVe|g=rM+`EZfa z9(wJ1E`dPEQLBNHKn=BthZpv6kgpGU2fs*jAY7ft?Wp>EFw~}8T5=r03#KpCxYxmX z-D8{j&tUQE&iNovEhwdtcF$W9*DK$DdYazrl>iEL+!Xjiktf=?^rUw*71hI7&e5vw z`=WFl-<*3gQv%Br0BpA;;lORzOQ> z5xU+-T1h`0?*p@&R)KM7Agwj$c?dP+akGXU5mwY@o%jKj$VUG0w!||8;_Bow4yGv1 zJHIArl=EiLG7g>4B+6*rMqa!Ys|?(=QFTZuEO1QivRmHhD*kMU zY{^}F4bmY?C^40A8>UefZCFxbtJ-TYn0*cns#-VhX}hZ%JkEfMJYR+38_-1^e=`I+ zxxRt6j+FwKbn%2k3Av?TYt2k|k`FE#^|;-lvq*NwvBmjKgUXTpW;<@wo|M&c9@i!1 zG)?s{t)9M7rhIl+YD!%Xs?&PPF_GgeCY5u3vU)A$#OooQ;nVFstLEbi58J&WfjSWL zE7uDWq%PuNcu-gTOtoJ@A&R;fjNcJTbs0%@$DMt4p{Pc_f8}u9WstwTPqX6n6^6Fr% zRU!$Esyh0<`V|g3*IQ7qpqx9c4KZS;WPoC*wPiI!@3_U@Cmxp=9#lvJhn!dQ%J-N> zCp|+$>%A%SX`5vWUB`ypGP~nPA0+|EV`d{yJ*7-oEW1lDK3}`Pvr`Qj^5P=o2myD4 z5n!wv_^f)%iQlZ?!Ddy><%(Dg3 zJbrdWtnJN`JM*_0L7 zl~loJrtX*Oj=S4R?W6K?wPOi0?t3jm5=l4;KMI~i6wEZ^Ua*F2EV z3}YV=&NsE8VHvvR=m}TRmqjw>EAqarPKn*oVc=AraF`Hdh>J_D&`wrW5VM;P`05Hnf1HQIPtcf z>x4rT$|d9hxu6x1c3B6f8zo#m>r?W!3N~mbZ$^eFqbQ}24ut=r*n9Zt<+QT^_*cXCba+o;Y!NbrP#SL6)fPir24w; zS2IurLa!5=LtX29YC*w;6lUZ+vtaj<&M3xdcbUl+pOEV~rB21u<#o=$-sY1KW=%aF z1MAi`_Th*8qipjw;qlZ zAj$jHA@pWIKFZguUosVUDYn$Cw3m-Qc)J>u0A|;`BU0iu>1M!-9(z)tj=MIz(uh%p z579>l45kpR5r)^uE5F$-6Cu1jDJhGRM)# zu)9QBDe9kb&WSA{*XlIPg)NRsX_O$%F-p7D;8TAdo#eKM#k+b@!qpsc7?6v@_i?Rs z#4F^(0yjdCO#${ex%H&}_@S^gvVp-toxOMC<6!oU4#lx|B(;6?`X%gPI9uLX?P0xQ z{V_3L)ZRn2$lf`eNR(;R(@JJ28nCk7xD@~{(%|K9=G>R)Es~$q7TU@p9)RG5D|iHEAlY&R-V0VT@1s&vE1twxe%Mt|)S6!$ zm^tevSd4d~EdUMDUAz{oa>L!*_?FS<5vGDy7af#Pl4g&is@Efe1L{h2W!<>Td_=4)5~1vHIHm^6j-}gMUtXv90(1lfswtJ%~wfF3{isx3NGw947@=tdJGlP&UQnnO;!(g`4;ME(uJVB*Sd33U2oukZ_ZEe_9Oad@9} z|J5H&MbY)l1Jedq`nLDwdFVqZi0?Oag0^!@zR$c3<%l3Bv@LCjiqe_pjAB{Mb=Z)c zw)|RJtRtJub+;V z(30aqs`awBZc4cI4=fE>-Y2v{2n#5p#H^0|REVWRX4X6$ga4%Pgc%i~ecF4P{uCB< zCBak`x?kthawMt`nyLQct=#)gDEl2h|I-w{kcXL^!2YXeSCrMd`S!kX+i*mg;ukBx zaOCL7zcLj%Nl{7_9!k}#Ow`_k-;Iu;jfk+InX<6eN zA2e_t)3%`bwcA^y6)gbmAu38p*{FKM0ltO&=k}sKX&aT-Vt(wu;RJnfI2gfBUVui| zy6G$IbK8FBzlDlcWC%CCSjaU-iVHlST_PS{j3r)re#iC>$Y7`(v{a!FVIYR46nPU7 zHL1=_ilv+Zsr!`goZ;o@=QgxA$P@m2Q@tFsUvYgo3aym$cCqnvCy;g#+`# zD;?BwID}(_2`Nj(C1i?FcjE=BPcM6r^uD%jI3(MtfH}pPTsRb*-?-@xJn8;G2~r9f z(&t#9eT1Z*1BU4#ooyxYO;)~?cHK}u8S>)u&7F_IHb3GbDDlvllP_p>+6+l{bf%A+ z-V4gS=q1p^)TuvtCN)W#1^{4Io2rUyOYxTy&N&|-i9x_VM9$(;B30NiHK^IToVXP&_POD-QFK+XMsUt?2T3h9SQKyd+(JG z*Z;sZC!FLQ6ohdcqRQe#gfzq=S&I4V(feXhf!C(@E~dWmcVi7-Aff7sM)o?wYsjyy z(Y+{~teY(=BdMW@7b3F;%L9)!?|-EYx(#pD268+Kzylf&JOuvbdjBhn|J(nnWryb_ z2|eix*#a*&{^n>Jhs!6I7IFatbV$vJsSR@tzYIg$js*I4XSE z2Wpi^wZ5fJ`4ZALKbOp8Te}cR5&b3e_rQfAy5IrV}-+eaN9 zQLuixcojo^{cf6{Q83nr%53_4-Nfd&wHf&6@D0L`^c;6pd7GnoYQ9!Lrj;i3PksZ(xPZn%6Bu}>z&SA>Y}m5X z2==eQzXdwQFOtYT3{X&&y>`*?!UB$dse0*3#q^<*`p*E+Fi^Lu;xY~G2)hswp|k!*e}jwCO8@ZRq#`gs8gyLo2(;iB3)+wZ zO--%u>v%o4n|jeG->bG*LOiqnzWG)LGzuk^inYg#pdqu2d7#nLXPmAIZ?-O5Ay1ViQ%>puGvA<8MMjm%G6Y#eq3>fSkF7W`8L!ATd2|Bl5@vrrTNF^t% z=cSirch^O&?GKo1(xG?SlPx(?v*kO-H#g*ex8xZvF(}9tUB-LwTotmRMjv@3!o$_mNh8gJ%cUFmc^ug&CNw#55?BV~4NpRi7jp{(s#N4}}tPrInBI@~F^rAI;D#c30hg#>d%DDUu&; zEW0Bwxx3$HJ7$dDIO@Cx(v!e~03ah}BPtBy6dnhC9u?}+QFQ7ulZ^cQ^iTmq)NAIM zQxG#KtT%E372Y)jXaUUNU^b(!gi^I45qfA<8PN01JZxK^m40oK>p8_cH3KIlh5uAu zBK?ETmDGdcUp5t68J@!ecx&x;utXJc_vmr4bLg?v@0NzYBEg4-$p(EtVRyNVaE(m{dDp7dXi&H>PF|jyvE6tuSQWPUUGL`Sv0>V<5Hg^{+Yb4pYN;DK)7lIRv;1zMIu{&X*4zGVQkD*MRD>8J7aBLnWPHs zqT{C$3ilPUTkhJwN5=3xC+-H^+@1^EVdK@9X%S$O|9~%ZlT^>v(@&U*rSin09MlODP~_8eqGy zIsV<0Mo7|dp~r3e6(AFs7L(V|#tLR#5YxbsTkIRQpk*`vL(x^XjKL;eX*Ze zW&G%t0usg~9Q?<^?%gm+Nq1Sad6ZYd>CDkESl)r}1>W>x_u{=a%obVa6}cLi@Y2W9 z($WY~W))XwWa4nEK-s=E?n>PApD}%+M{+dy*8tNCAndKsjyE?q->l-BEHv}r(PW8d z*9TcM-JN||lozyx1sk09JbzG0F=J=^IxHkgocW_<6%Cms~^sN|Us_{ai{+1^S&=wsexc>nl7Vfo3`oAf_ok01OMS&(SR z2j~zA==b2a8Ia4(!BvkHu=^?oYG=cfFsoex_>V5G{>n5k+wwt0bkjCc+$*Sh)L*`V zvOrZ}&hj0z@v9HP`GfUxR_IMlZH>=nAm1r3zimDCrb3Yi-Wu&7s&ys12g`*93%`(H zsCqIgM~rIE)Z0;()pagJy-il+G*UA$fwPj7lyp&_^B-Hq8SL=pSZH|H_Y=22S1p38 z!Hd`3v^eq=jt&lzi6048C&MMEE6EADu#r>GfiN8USdjx1dp2#5haPaeTf-T|2XQ`ecXc!GINgsEH|843#*sdGgq!Uas5xo7iK zF5byug3@fu;^z!xfJwSRG z7P^1zAO}t~!v!0w)uC~61h+4}P?vgR$Ocs>w8bCCv;~>GP#y5G(D@`b^a^jlFN{VC zRw5mZK@|)oGE7h)QSHGR6YWib&BhkVL?QK@+NKNGowBc&ti#(wQ=xV^&{f(he8d*% z#vE#)c!clepaNVUs=hVDl>B)Wu^r7jz7pFk!=sltqr{BU0LuO=w_aB=Y7vuMXYi~E zcg+!(P_Eq7`1A^q3jx*6g75;8=3~~%1#o6@O{8lE0{l1Z?r$1 zUR$>La~x64VXjn?TQYDw+Lu$V8g{jec$|-*{rm8GrTr(K%~e9N|FK5uNl*|9gjBKt z^FkO#bG5s?#Wyf@L$@{88(#vbud#x%;hud#Mc+g0l0M-E{wY7%Xo9aP9vJA%)>&-ZVe}2aEz{h#v5M|9jy7FQ$6ZqKMn! zuaLbKLU((WRSMt>$wdiMlB>hQP(-WkfL>Ys5uJDSnuM$UXP4t}rDb%4zPPkx9wS4G z3|X=XL*SGPB_blK$t)hr345`Xe^t)TL-lmO$T^s;c_(TLI01YH{dx++IJaD=eB z8B?NcCZ%R-YASkE2Mda4yRpP@+H4-f z0z?PsBgK6Ua&&a;To)A=#`r94v|sIZV`pp2YTHi`b8SFQX%0suAyiln4i4gN`)GDb zvquqeJMg&Gvti)xs&3ojul zA+RNq=sApTPD5SbVHomd?Cs@#Ipk61!P=ZWdq$Fce&!IpYdGnbNr0989SU z_w?{I!MsVcNxCw{0HVMig2(P~7M#ANz8D!^D1K_wV zzD)hw6hKciW>d$n?2A9makP<@)j(akq#Vax% z%zqAxMz=CXa;BsgP(yKgaDj6W@T`!Bt-)(qBtmzv*;Ni`}i2B?p~?^262~GaAd(t z_pgEiFg1#vINt{L^OgFb!A0TnM_3s^Q2@y_cVAw9S))~9XdCVE(0sZaFl7%!5pPQ- zti|m@g7Da5_?0HlsZhQyC#;rNR9Nmm9q7;z6K@A^OI&eIyab*$Nm~9W@rj8D!K$*d zz0`>n^ljE;9-sDT%2S9^sOt|J=u6Uq*t>Y|m8AGkR0}RJ<|DBu#ODJwX#C2G;4KB zNN_j0tTiTn<=Qm5cbOkKqFp`e#Tdh)L*E~X&y1zsA5Z-HB)>0Mh#S$3y{mO7Dwr3? zK+LchLskA)QdjDR-aavQb>v4mu-l%cAB)ySrRD{fcS=*V{1b)XJ3ev`p76Uoe8lKnKlmm2j^*p$_=xAeL}QR??|k4EK705VSZ$dh%ngdJ!NcsjSQteJOrgi#yLxg)q7!2GUj~rM zcO3S8%ER_uoiLmzxeOkcYfuq^i2FGcm7Vn-wCjUASldHRb>auf@hgplGn}bOUdC? zc7=*kcAga(T0(c^GjM9Y6nIhv8jtsOnv+IRd?7ap9k1=Vx^yV78frCpu3lK}PY^n5 zDm6>z)1#*s#gZgyBxERAZ?7NE^HQWj3q=_0Ui{?6&re|F*-_oK)Lhf49)#v{WiQx& zWN&$&RqdhMgd9QMM{v(yz-MjkNgV< zA7T7k%=P=u*9IlSbqn$wUqAU{OU$JTr_Rh-i|MMZ#B4)4kVIs!#cJUp8*ut2AvJR@)Z}(zLfnb6n!wMxQO%1>Uw@Hu1SM3jnFEw3~|MbWGxKQd%9m=Bpt z=FV}XTW)v({igV11H`@bl?74#$=e~rXlaUEHrB?-ex(2T9(rh8wHu~V;uEM|DjiKy z2WW0jtEN1!W72En>aBh>5*0SpC;!X;>GP`TBiBj_2&jT6|M(>_pUq7l8YNYXc zRt$V@e}1`8XMqa&6Pz`iP2;Qm1ZO-sDYs0aP$9AVfMbW_n&HE;9YX0Zpr;-3H!vZ; z-KdWhnu!K{Kr7Uf28kbx4uXv-TjLL704qG*9iM zK2bA=mZgDsU76p;!O0+Aul4N5j5pfY=9)aeUejxw7&$Rz;6pZ^g9GZ)gAg0+E4nb> zE=GY0<>+u%!WX*)1ZHrd(klzK?b*4KH~4Ri`z2s*`1Jfjw~k zqJ24bQNLarK0EQ{=M<3$0$2{Y&xiHS=c|yfo1_O>K#;cc{~^i(_w#74`kf1p#z#oPI_|L1F-FL%J9 zkBh&?pXFy{qe4FzOqv}ZInIJYRw|HWK(hD=Is8`oc+tjqM<5F8ZF`uYc^$ zP3a3ZV!;c#)IHympN(CDr3Tvdi{G270%lV#!JMk&Uf-`^u)x`Z86@Q7L*K?q?T;Tz z$}V+v7n*v{am#%+Ct9PofAr5(sCt8R4WoWHH>ANlF-}@4pm>y&r>($YxXNa`>(w3c zO5_iXX}CY@>fCV$?vM*e2~@Yj-qN-JCnA$BT`)P!hi70n@L>n@Z*Bm+gIsLEzXR0X zIH`MRQ5?N-J5_Wxyuw>C8CmQEWf$SapbWH%G3DP8;wne@gZ>oGWU+y&tzOF7TI5PP zIR{Xz0}0}k>hhsx6bMg>$<0&AGMJ=m#Ja)q!pa>(n>5~ye+H_0WhSW`utuWx?WMu4 zH5)wNdIqsZJ!%%4b!aph_z#Z{VNuP4?L`;v=vx&sDsvo=KVSJVOT6D<4AhJQI$K= zs}_=WY62(@X2|iR>QiPB$88SKx;5@X1~$1r_5LDEzY3aKTl<$=yq|Zj<910mkM;uQ zxc$#>-p;Tq;AjPqR!d{M`8qZrJS%8UajW55*_)c*-YZB>hBpSzGQfa}x*_X>fj4cF zwUCl3U?RT*Hd4NH}!yKvo#RMLVsM*=kG?4E%)Sc|r1nGM_>8 z3z~sB5{7J$?`Plm0#amRY6aMf{o6W37}AfcJmaut;ka6Hb12rZXls$BY~okn4azq0 z{@YeChsMX=Uh&eh4kQdGg7S`#kj>LT@-!bLI#c!Tq) zU*pii@J+c54fO|2lN6+-UPpBR$rdo@DB^OXtgO;J`;j5bf_mY{h}~6CV%mVvA@t%4 zm3*@epxoG1Z6G*FogVeJ7jJ(huxq&sgO7aO}_AS8N|PQG(4 zNT8LC@=JQtD>HFGk`2}SlVN+8ztU!grNT04F77F%2EO44fJZx)_qmxxhDhKvRv5PL z+)Er*JGMt~rd4OZTxEBsmJ~@Kj^$alWzjpeFnbWi>XFC>i}gayrRjqXcd9R>YHPa% z*3O&Jfi$aVD4MuPZ4E}Z>WROW8n#QI^9tc{y97y?CDZw#89YLI_ zdz|iwDy#+}PJUP#2kL#hg?T@Ta|z1RaQ1cJ@!Ui+R1qj3GX8V$4{+S9J&sKA2_ z33l|{i?Q0`{{VVa6HnHUMk*!+&DqXh=mrhuwIcU+VEx`a-`??s9o^qm$_$FxQxGpG z;&3z&m2(<^IxKy>L~I)l11T0q;dkll!qi{B2Y0#pdatoNM2{3Xv zPmgO#iLafX^J1Ad5}C^JHYJC7`5i60a-%y@K9`asJ;=X3dfo>{aLK_+pqPi@e*7W! zF4Ba8p1bdveuN+cjDd4NB7arx9L1HgH%O#uh7^4KS!QD5UjL(d-23U^U-2op&TqWX zi|3P1eolQPH8Wt=)1S=VOpf$mt;3?NhZNyxhsZg-!;Kg|NoKUEXw#faQ_M`Sm-aHy z8tE-#K|K1_*-5KmbG#lP^uFfV^Z^&_sV1|8I@(R4rZs5Lr!6n^`sai(7OT!6dZpBt z2EKc$A1R$WGtBMYZMs3*a)A=D!&u#gYM3`YV6}@0)44){c|PZ{k~l`3A+Nx8!<2o-RK6u})W7U%rxg&i1o~vtqRu;%sHgmb=v>(Fg*B9Z{qy zYjh3jw8{d%3Q?6p1P(LM*7AFz!+gs~>uCi*@{j`OC}Z4-@^0wycCn($;G;H|3-V3y z-CSyhQHN9hxn-TVLift^Pr2L`3uxTFUh(P)4cfQxSMii)TON(%U2EIQ7JVNUbU6{= z5N)`=2CGF85n*+llMbR35m-v=N=cKiq}hd*}2I?JqEG`5HNj zYE{6C2t*;T@$fF^RPTt5pU2m#{ChjXY|b)n%rg;sQ;_i}{k#IzXWPa|QLm{YoPZGU zpyY^tT@1%OygV;gVSPExgJ#u6TJ1B>)9K5UQE%7JA{y=hN#iTSR-qJfYUvip=}w?< zv=PI&4D!U}hfEnMp*@RS%_xFM;&m|!hEWM(K?>Tn6O$1mJuONNTTAs)nD{-u1Rdtf z3Y+FzOrA8Dj5=~5D9=Iu!x`+=bC3+uq88ek@Y0(hi>ohpgg`eQa&B^C4rKc+A4*KR zi>E6i%Yb@h#1hpz6Gia;?C0+{84^(VhM=QNrtzA{}B9&>mVU z$-rYx^n=Vrl+MR=nD$~DeA3g8K4d0ZdPyO?| zxp{A+fD7~v@U*w+Z$0a7Q-d*BIF%j z-Q(fsr{yP>3<9bE86mSbRnuZGTB%1QzO6vREmkX`Ci6VpHd-E=KOwWPM6?hf`%_s~VEcDRg1n~=%O zO|o`azZ)K|3)SMVSpxG}a?_A=SQaozcTv`1jYa}|zF-8`XlVt)Rq5tj`mA?oPP&9A zHD1qrL06r{zbtYs6o&;IN-b5ToEoOSW}|IdM{;hG>iJGjM)-jA3hzlUvIY>agX(S0 zB6rEIE`YN-*!U6o;$Ir2r{b7|@J4LE9sdbkBMDj!Pf7^DkUYoM;h;J9p1ZO0^V6W(tWsF+5k(t1Y*D0$jigGj) zIT=->a3Waf(XJKuYzPqXzSr^M~+U;roU3#7dZ< z43bC+Y*J?EJe?Tx$QADpT6_F+V-@sm6t^!-@Vn(3yV})28+s_1qa0&?&kAex>o5-< zQH+k7)L60cinRxF{A=e>IrcYa9U4hZtWKiV4-xgoWvs&a896I>6U0B2rF9z;fZV|~ za;1l}g1B6$8bAYPn!W7}qn}O;9Q}Saw9)z!Df;qC@ z2*s*$4Q-IhPiZ4P48bJK9~(V%;uid0_i=v^YrMtes-`)Xm(`EAyVqQcgkZWeeqw=S zqK?Myq*RP{Z@P>3sty>EA~L)V2dj4xoG!iBMf^aA&zYH>#2w42$wR2&yu_r^a=4GY zBOk=1!~)%YtH;WsbirI;A#!Zn+Zd+7p>Tb4B*uc4Spxrp3$&p-v7F_!=oB?A+2~Uq zW>e16g-Nc_59u5%5b?&KU1>q#1-b?|l1-fv)6!qj^zRdzzC3Toaq*8hLdAo5GqSj{ zYeNqE_GarT1m+77bOJ9W@m}RfzNN4R1!-%iM&_))DMT;Sko)abqrtWZ*Jk_dZA*9 z0Aq?ne%Nczy6IBISz%qr8s~aNmO&+EA^%EEdUZIXf!lsvWRP#f8xC*{-g{msN9rWz zf;T-~)bn&{((7AUour|mXe%W?{qP4@+t`1E)E`{lwTFVjkC$5qN8I!|E^Jue-=FMQ z(M91#y&7g7vh4DwAYhV8mXHv$YBP#`7_4XyAWb#B{gwF*SlR05g)s;d9DR^nMU8Gn zQdso3LMPBLW<=8#^~%cg)i6sNtsa~F%Vk$RK`i{H>3@vM-2Uql2W z5vOef?K9&~?lqI11}MOD2Mk=SNOibI2q#~@i^l#qO{;(ANgwf%dtb&os5kZxFF%st z?+B9uY)+)#Yn_JUmUnN@kG4MVPYB`9q{`1Gb-AeZ<_hanr{7>jC-gnX9{4_*L(?(3 zF8oaT7^t>zu>|X&b20XI#)EZxqzWZ#4+^0~-gjFzyz?u#(xH&KNxy8<$aN}Zw4;0( zk-M|SUqPf~rz=ZKQKnlmr%uV-?Tkp}VywV1m!@Lvfe*{c$5ht_@NPYRq`K#;MOlr! z>8}u#qHqn+k-3#@xDG!6;Zr!S{NhsWouR&=d5o(PW8sksn)n-CLfHwQVI`%?signG z-djdR`F&xaFpfHi2t#+5bazUpqNH?pcZ1YWf`W7j2q;K*OT&=T-5}i^-WTxqU-y2v z>wdoL-nHfn%*;9So^$p-JD&aQDW7@TAIaa*Q}2#d#&aP5$41KxXQliI)5g0oDRG0! ze++?NZEq_p!D)s#L?8Q+$wBom>C3E-QR0>4smQ1b96Mg*PGcNA<`3I^@lr|bFp>=&mp1uZ^zZ4Ht z<3j^E%j=~utX?oN4!Xgdy-L{&=$tS1bWD-1VLFip9CA`XkJ6eJe;0REzaxuTt?vJp zLKU}K3qIf8rtS#U(bPazqF-KU|D^^Q7K=?J;465K#D?KdG2v=KlamkiS1S;UFa$wD z*=@Ea8Y4jWF?~6J#;g8V*nb1D`2!^gKR>4MRrf4^1I6*cON~}#P{N@9UTg?&xcT32 zj0uNUT@nhK0LOj@|Ehw&q59DF`aOA48Bo-n#<@t5Ju2&!fjx;vbh=c3_ zv;*MkuZWt&27JFdb2}l=DR>GP;qiz2y*x|j9npmz#r(}EdER0-^LYT_ZNZ=|S@$Z?o|mH9Du%(NmW%bQD5!cne|0&r z`4FHh1qyZ2yAvt&z~W?9sHI%cU!?`}yBIC_IfUwU5Qf#}nh4_=!D;k^-!1~K7{{)F zd}{#T8u+~Xc}>BS?t>bZCELtGm`{$@?9OkP)0|F9L6OzE;&!xWxk#tIwjc#Mp8c|bIWA%G_#7je_qir479^ouomC3P9 zdEug2wGt$~tV6v(N1k?)TKofOO|*UZ!EF2L56O&0!< za%F|G&GFk;`*f=4>WYn}SWx{06OPqfVx|M94#ch(&x>l&+bpDdcb8~O9k%T%#}Cwg z?75Tc+%wRz-{A?M>ZZvUA~Ol*W(rIj%nnk%*ZX8s!HL%h2NKyOHc)->7%nY_m80RZ zf|A$o)wi2@@}0SNB#-Or;{&5*6d zAtgyo<|P?D%$9IzHv1NThOsyXgARudwq5Mkr@1#S@0hI7KaHZI8+CYggqaA2@|Z|A zINZnB=>XCZwTn##y-C3JivtT$!Q+M*YGF@n!osH|_G8=lc1TFBfj%?MV2f7(;35XO z!mNF}(xy|eNz_2lCT(uu?yVkDJz;IUSnuceNDZJk6-Hwe@z$nf|KB0heBr#NTjtpF8ly>#0$hZfF%bXWgHRS@JuKP$X%%b zK$(08s<;e7fX#*Mj(~}*8MfEa5iH?`RM_x(2rR!K1t=PlM7Qn;h=7ogF_A{IdZRvy zuz*pNr6q8G9k^5i8#8*xym5M>k@uSupI*bznbR|Rzm~}DE7Q-{9f15l2if=$JW6uK zi$cf@Kbf}rF?V(x3n1xC^U;m&B^L0wEB)dReheI>K<9UMtT*=FRi{CX|9cO6!MJ|Y zQOHzEXy5{Lz7I_Jg;Wp6iHa!z`GHBT*b2}vaF_O6yT4Pr1>lW%rniZvdr| zP7hq@R%X~l4)f?{R{J#DM&f>jfIJA)j$q$yCeDSqU>?x1*VjbC73EEj(yIa6X$2TE zhFz;>|KQ0%w5TOoZwV1P0qgx4X@UrMge+9z(%eC z=aE_TOo;1u-zP%uz~}E6C~3ge5p|kwz%yQ@063H!g=R*#Vd~B6JDcJTmI47*nT*sO zVA8%HDuD|qjV%x56aM!%EInf>=d0}K!h6jc&~K63+(=lxTg z-!T9s=N&zyQGxcbz&?lgttk9A-4yU}|JUh>ku2}Wj|&p9k7e(;x(gE}5COkpdxFmt zBM-|TXwJ3`5N;V((o@d>Boz577uxC=c?5t!&K4%XEkW$$e*5IjL^;W^xJ3Xtm!)Kg zVGD^yMHdv2MaHbiB8w+R5@0Ad=`>va=Q1y%9X;Ihb0 zBgDRJ^x4+bk9dSZH_zHQF2p;%7`s_|>YO&YFj7ap|HE422EyZ5mKLOs9 z(3AKew}7Quq&;v_>%wF$h*TY>Ik2_%Ho3VMqV8oHJcgItj0~(Y4$t*}D8wFs_nRrC zEb5^$;w}@V?x(x3|33t32w+$d_6vpGrAC2QJ+R0={;j(I7BPbm7|ns_iuO)30k8c# za@NN$?wtSoJ#YXO#FJC0bq7jaYh87%C2Re-J+XDUq zZ+{@}?X;Am9E@J792+ZDsrbu_?*mFrbf;e~d&6prA zR>`lc*8d=?da}S#e+SyI`tRst0#hoPxoiF>Y3RTxu_Ao`0d5~^4&ToKEjI5(Ge;aa zVpP%nfF8U5TM{@k#6fX)9^w5izXWd2*GSoA|LwXGugWl)&?={3~T@3;a7K%`*o35Mh&p%k~QM2uTM@+ zYRFsjspe4a8X+=4D^c%_H)h$~;}_Sz+%rnWW;j#J%i+OEGzbTW-$0;00% zeYY5D7Ee(533;_EK+2f~P5@dT6KJe2y^2Xv6`lkY-f}u1JxqFuruT%iU_Q9b)zOk( zTpgv^yRvZ10NJjhFhuTOi3K_0lpoZ9K~HPIOLu7f2Tff@zE6;r(8Efkf$c=OlluxP zD&w^CZ{kTAz-|%-^aKe zqP35NNBExH50Cl`FzmN7XDp~ubg&nn-M-SMy!*fU8;~4xGi2{%RHZkkBx8Ic_hFyj zh=Sx8o1ag4J33+*hOnh#G2b74;2X37&2Ld9y1R_4Qxka)7jK13M)gQ-O(yYxN51hf_^*c98pbHA`m^b)esiE>*d!Bj!SO- zj9g5qz62Ned|5Wr1Ws?bUpSHP;JB&B+H~e50NeZhdOQQ<<1y~-1DEpMz(Ap%#8l^h z=NSYjc*J1ghcbu+5e?we#-C2@|1EaL9WkxnV$?qs_y!yJv_`f!;lH(~1#U_ly>lQG zaj!sQC4f(3n?L+QV1)m#Or4=I=I?dCCVBY&U$A5`eH*cMHa0e<*N^q7=2^BXn5>sw zF>t>C2UXc%4j|jk7z2kHT<#A7)Ru~;=jRE68||JU1KQ;EwY5o{$$fW-)496waeNrE zFgI}8YrdZO12Wu09xaaJZw=UHs2;PzGp1)}sATo#f~yxce|`R9s+NkoSJWf{fnE~= z0s>)}6QBf^8D0R|Z%IooJrpnoQ9-z6J1$JMsAp%BVs)v4J)7F*94$%hrPe(y)_*)t zw=Mb~U(_M2yO)y3SIm)X9L^IBZqaNpU68MueJy2tZRtbtZ$oB)rrk~ z`766jSxHtLUb!;c&|s%fw!3sqK9yYZdHf5iYH17-CZLGIIqn^1G6>pYgi0+Hefj8T zm@G_6fvkCeX&o7fg=wwtrvj2Sy{1atfd$20QaR9FcMGy@@k7B)?22@T5$O;>!k%h~ z>H^kUO@)9YuOwqtRS_y6mEMJ4vlEFy#~KFgG)UZxD5x>_nLcFj(820I&*3 z?Gn2|M4sWK!3BC(d!;(O`s?HqOWg1a@tyW`A@5!QkCAMhr=4J(B98#V*8BSc5Mk^v z1nZLWX>{P=mqXZ?g<{YQ80_Pepggh2_%!DLBOK>>r#C|s%8luFU@7A-53g1f z^hzM4AFKVKLgI&`Z`KiW{~l*6l~HC_f1)UAsU)jJU!!a^$C}nhDkDV95ug-5|MQ2o zmNqrT%UMJfRJpQ;y+HLB@%&gp?-PVHqB>|}nLw$Nd0hi{LmB#xVP2soLP};kUPs1n zk_0LQ@ORqS+8jYFzKojJ-2H&7%d2e#y{`~Tc&sbKq71q!1BlT7-9X$n%LQ32%vTxV z89!+c0fB=C+@VqV?@A^Q4%bm96*<5vPE|W0q=KQ24a#!m+f;Z$M#5QwT146Moy`w{ zV$(^fwy7^Gud~~CLnpcSYHSntgpyjG+NA5uza~$Ezitlaqbcq3uF1Xs2lrlNEb zfJyDhaE}5Aw?)V-$OIU$5I_wXi+)y=iYd4a{^nn1?+iq`FbZIHK#eaePz*#n5Q9K1 z8+FYxgHGxq(RMY|e=$GHWR}rA#!sj|20fN%!8V9c*)7)sd$q@Jd0bg3WXyqAJUR^Oe+Qmj z;j4sI>I6p+Qj^(PMZx2lL}A6-^Hy@~)Yf||G1Sjv2C}EoV!u!uNyjm>zdQ+_N;?L6 z@zesUd9;Cx31|Z=g5&>jrb|8i`34Lj%AkbY>*Bf0Ph0=j<$uY&>Z3lZsg+3HCVdRz zEO-<`B`=aNe8&&KJbrRInIvM3lvicjk$nbvxfGs2O-68^*Byb4AVP<1#7RE~(9p_4T#vTN~jl}J>vh_x))j2oQb z(`A0y63TYeUqJz|t50dO;Y@(z;+tavV*<@SCZp+qqlDVPB7MV~;(kcC9&V(#y%dI# zo(fyF>5r=m)%sVt{HZ9=;_^X-pWFGq+s)0dL%U!H_2}y@dFtW-utjSiA6IBM1+ePZ z!E+&Zd7wxUNO5LH3_?`p+1bySlWS7MMkR3$ZU5h;dzuP=-|5_vP*f&1RgYS=!?cEl ze>fJfAyy#*k+Etkz)G5jkm^-u*iYwhE!h9mI|T~cU}k2S8Ri(&weMw9$Y8^=v1h6_ zHo=HSOetUM6)GVTuZQ`l>@5nGj(bLoSB`?R$06(I@kViIm6$q>86mIR5 zar#f8i!>KwLlr*6CCK}KzoC{<|Mq-a)QEF73Ae!T{gPaboi+Qp)aG*dAU6jNiqMQG3VCQ! zfzYA$x2YUWv94QPS(3C&N5Vcabh$7lviLsCdG6q%-a~?n3k5V=g{SH>YQZ z?Nlrt%iT+*`*+A}e+P* zRs&ucuf2&PTpCD=M5xWKTY)&K2BRxrc0)I?%4u^c#sLsA7WhL+v<7+M-tO+n#Y_H) z`KV@Q@kw*uy9?!EG8b@5BwPf0lR4RhBT2db^OfswuP47&aF3aDu7)-QZ{kU?#4Gc8 zVXh|V$DDZ#I%dBE9c1eNo%p=yj3Vkj4?+uCx0&ZsKR2CMsMV=-haaW< zm$Vv;Wj0dPSs;ARQq9zTOw%uZ{r#1^LdGc=O@F2eHZeMCoPv5|USedgWT?&d%e(N` zO%P9|ilzgy+G&}k=cV1@vf;*BTydkY=Jv2~oMQn6U>Fe1N%b~b!yg&E$ zv)|Jtx9-+?z#^hk%*eVehfT&Y=ug>fBssacB@q2-w~MOIF{e>{In(Fx$Q9Z8?5zAI zdk-eW+|$A!4b}zrKg{1$ASrg&V8<5Ot)wt_paYDZhLBlTBvf9Wi>@t?hGpFfrDD`K z@o1_zsn}jvAk9pH8Ws#Ki9>D}mSq;nHe+AvID|{ZR$MP8Cu=V9Z!N?vt@R0Sh_oaS!q@6UrZGR*$tg)2mF=ZCKa% z;U%RPGYySuLz8LOcze7#+#{}ZV0nq^oM*2}A{tK5N>}e9tNmNMWnBL6F+}#IWeA5| z18sEU_JXFg1_lNUZsMl&O9YsinO-R;o^hif%V0XOlGPTpS}UZfk3%*rLjl84*!LE5 zY`0|X>{~;8m+2R_Ls?@lM&_b)BL7{>XdmH#k6m1|S140HvChoC-dWol_fee;18~bI z!;saFz7riWp`~C+@x=25#jH0&#-UE0a6RG+ySVlcdXSg5H`c3$k`lbQ6P8?QVpP;K zvh%vIwhk)Ao}+$xdpNOo9b1q;EmUXc`&Ni z@N!vm#58P~^}Fn}D@cGv?W8!{mKh{}mMz6tM@=g?pgN}8g>G`OYr`HG7h+NB#S0MM z1ad~6wBCX}P-HKRkW;tM_j!U7knDE$jqI#pv9`id9vypP!hvYRo{Ys%UJ@b1MXoDvdmjWN=(~3yOL$-QsKUlU^D1yQQf7=Xjn(*GVOyid& zCsyV;Eb=bCFBKd*Q@i|FA-@{odYDS7;Yagz-5YQ{>16z#uI;8tcKsIn@{}g@sktWV zva^IVds1B7ivN4=s*6gGJQogC$03i^gQU|fn&y`i;i4jLv}H~2F2L1_XX0scln3wk zi7exuVWmUmd~m)i2>OV%!{}HW=Xt&vN z8Tz(nPuUGkr$A#aG*CB&3SRL_*&T~s<-3!);7#}VsL?MM2uEm_yAO$`X7Xf5Z3o^s z+ZZP&s1b-vFX(6(J~G$Wmw z-Zjw2iJZ1QgfkBNN9z5{Im95spTx|T&wq@po;2H|F5ldRdNPv0#by8<{V~fIehoxk zR^CV0#bM#qheTCtmrn}KG@1uc4aSb%tRY5F&EB9DtxYmXeuo*XKX$D3qB=+&o5X6b z2>+V5wk-&6#+-ABZfQ$?BzC1tdR zJr4x7@fdz5?3kWooCls~3WF6jU&jT-&yd| z!sk`EidP^`c+6J``z!LU20Dp`{-jd_@y|jn^%z=T7*qqxXjja%4^K~f@~fX`VM05I z`h~J;Gn2QarB7~u>C2m>K2s5Zq{p29?%W&(eCW<75)gLx7 zF-hB5p-Vbb?G8^Sn_))tl@U@LsN>G1>fxE)_HJZ9S}DbGEK?@@HBmN8d0Y0st<1Oi z{wy{2+$^6f%5pCub+VwQT|Arjfh%Iw{sjUAOBTNOM4N!LeTRyOBe}d{c~{PhZH+#A zeUv5ceDf4)l3Z`DlBFS2WyeWT&9L_c&EBavKH+RC%^1dl?fl%nHnZ{9?=Jm!?AIGp z`ft95B`WP(2YHdeANRG5dnvvNo4zRf7b}#PMetv(prH6fM!pdv=gAaDw-f@eHfzU@ z3W+w@DMi_kndhb~zKQ7bxxhTyK1p})x&{UEl>n|swY`3gJ9NnIo67!JUbg57Sni1G>D)d?f20HE&_BzZ@CpxZ0kzrFn< zUqWH*mstFFDI4I`%mW^zG9h~9#(G?fk)}Cz;=u1}%MZ-@F}>hq<{7b71lQPD@Rrxi z9wqGja&=tS7-`SAIup7`ui(Sz^S?!6Lp%;(DuP)RHRn-!sV8>B3c}Xj=mdARdC$4G z<63X;kwiSt^?X{(Le>)Ko^C15*daUW`(IQWH?ev6-CQ5cWt6gbHgWJ4-W35MzVY(K z75(8Eg5ETY9bt-V=oC#~E9#{2Lm@&_=!M_Br?0Q@^R zH#ucuj-j7BMz4-164g83HV(T3VBpgj~-G5<-OU zN>_nEA~#|=IO_$Jz^IoBj{B+OZQ=VC?~nR?(#W|}c+W^VMA&uK)lh!3N?+tZfv-M9 zyz`zQc34r98Qi?xJPlYY;OIz?snWe|Wy&ob9O#pO3?h;j46Hrc_H~)nd~uK}>1aW5 zjM{P5M~V79j;(F?e+k+TBJ!YPhPHs{3|4D%)HoC2uLR|PDYtlBl=SRVb7Oll6&$#E zNos#9Z=bGEX9y;S=6^>4uJI|*?uVU!XomnKQVSS!EnAnL*Z^Ou3yjI}^7q^iqEezr zg-;yj`=4^kxHL8(tgG!i@=NS7Sc0_b1-cfcLzF=hR;`^1LIb-WaPj2!VIR{d_k4m* z9Ud|l?G%2*`n=>O^8C`Vj!nmT&GeF~VU?XA5vo- z#_HaesD^Kc_+i!_=K3+_u?E2uJJQrLeIZyTr=dup&UP=v=X1BV^0(L1eTSYyr(073 zs{YFzpbf3mTBG1*fxHa{X~a=(mQsy5{O9K8VyT-qKHGaS=pM&7?2~^RXlRQ+Q2^!8 za-dAYSoiWccWNkSdIHd&QqCmV*|p(r;ovlZ9>n;-{$dF0=P+v%VjD(QTgX7O!eZvEh2v8E}M9CqEFPqGC`I~t$&F3># z#1>A4iSBXOnasOQU3ndtN7e2LoFqKHHJ6RWoBW$-py%o@7K%?e{KcXv&*hFAe(IMO zhuO0lLYqAQ3RUi$ggnxf^+QyR``e(#TmO)Q$w&hal1aX$)PMd$R)#R<4C@A;aw6c6 zu22l#g}kUxtF9&dhkcr+irsk8QQR@a_{Y%i z)|*keU%c)wT5i<`S4#Lgg*1fIGUEYJsHbced3qrT_ueuBsgOk@$91@>`Uj7G(uzO) z#gEn?<19}OPurHxOnqW>&fHelHREx&?9hCYN zC??|UTr}x*obWa<>ODRF)uO9N-1{*Qb?zPdY0Hi=HH$9@ws#{qlr?e~de9XhS-ZD) z5kEqu&IK}ihM&;1ZlG@DCn@N%(r;bZi1uEq;rinc!`id{CY&?E>%?WOcV}lywW8_o zJeil0Bi^+o4E)4C-Ia^?IFclrb}e;zM`HrUB5RLtEJEZ2x>PT@eHTHLM1#4l1@|$| zNuFLD<@%|*kQ9ir)B_n;0KqcTy5k~s#x%zK2x%n%m*dzDc3SxC#n#!fhFdo|y2v{K z#Gg58^&4fQj^}WCN1(E-W7t(L-W!d#4V6gKa^=RZ!fi!dM`lZM?xH5U+d1;1ETtF) zFV1d_YQCHwUQ?n{{vUn`meJr>wTR6L{gxaKuA|R+x-G2-E|1f$VO)%34X312EwJwoNRy?!(0~zsV5z-sZ4XtgB3UOhxyU&bOzm z+V=>EWJ_*U*Y{E+xQ+(FFd`la$1@mrcw)YKTK(yd1A@&0s_zZf6(JD`s!Epu;$7My zLkqMa`l<|y`jl>J=1954ebBpZ0L~Z}WdaiQo2MaG^+~VKBg|yS^@iA00qv!it0K;4 z=Vm%!5ey`|RoA6R!QOAfo^3j+X-m4V;0B;~(yXoz4%S1eluY_*z`VLQJGK#lK^5>9 zy{qtUgKh(qm_vMrG$fkW)Ue~eO$8SZkI&lLI_-$C=o~-3W!uE70Knflf!LuQkuK`2 zrn62r7V?9J&}CViqzy^-0rm$-8g*%Zg4bKpAf zosw7Z7RgP*FT4}!mrA2sLdlBf4gr;6YwBzR?H@Ii?1PKp+->zShL#8!@7$z=FBatT zZ1R$Rp}R7hF69*s7}KSNZlLxL=YUZHI9~hFncB~wYx=E%3L+*=Ngfrld%qbTA&N(F zX(w^E9;%oX896L`$55Y8|5EUBFnZnzw$Lo-V2NeFJ;vNvCXA*0F{xIn;j?zZSmBh~ z9MzZ9Uxl&m1G9}PD1RI!7?*!qAos3cNem+`eSBr-uHC)bixvaauo>CRv}PHi)Y_xj z)gsRyncZOy-ynew^oG3qTK#*RJVZ!)XDj~7Von69(}5u5O+&>3C;hgc2kM(Huf(@k zo)Mo^%`neXE}6GHJ@gh-LhPbPR3>iWpE1m}1@-cY$0`*kD562voEaZWC1^-lgUft= zR$vD>uuOvBjE#a_9-okuQxH&}2&gIlD8U{((X&T0ZfBlC$BbesxM2Bc@psfV23kVA z^7HHKol8EfwqHBNNJ{7<*-B!eu2UL&=Dyfi4HB_Gs|$li5J%6N|HKFO9 z<`i#xIeB67FE%wczC}sI4+?Yzh*dg#a?r5nZ0m1+fi0x`uHvV>Z|z7w#3ID6(|(>x zjYO_z0Uu+?e-SHC^q4KDG+7KLJ~~TuH7A$0X50cSS5Bt^lp)z2EW62qg%F6JU-c4)4-^sd(%htI83k=&9Wi?}y8eg! z+ZL5oAU|Ks17@fXcVxubkw;_pm`%}5ks2ST>`hsxolBAd^AN392nv)y;yinUGDaMEg`^MEC~k3&)(RC-LK{}cab{Xtb2_DJ zU%lK{XZo{iNVZn5-p?=EQ*U^ZV?tC*{<8GP-XcS@_mJB||4|Vv2&qGL=4(#H$J%7IW8mfR_p@?UI|sLStIq;68Sma)Ky7noI{fNyX2qt8BAj zg(bMDPIYogHV~{`PUSL3-|A2R8ZdUdKfw0n7I?1=geufpUAT*L zwrC&1+tSmx5)u^IJbWwPsJ=KX{h}r5i3CsrdAE~q=n%o5E7hj-p)%qzdbH@;A9k@A zBkewa&gh6ooc+)h6VJiLV0kzM>SOi7a9_Nno}k;)iCyRF*41o|89cgc-2l8CDf~EP z`5A1?bRb4~xw3)bd^M57{BdkU@Yz;b@{tvZ%xNf-Re>&;M_hXg7j4B8^W@xSou})F z1ljIW@IM=RBn%-l2~_gA4wtokQzCX)V4T5ldPKE%{haB*7-+B={gk}dv_M}dSK74k zHM@piuFSCegD=t>gkTV69GO03UiY{cvUYPQnDP=Q1>@B}Q@AQ)vF{fFsTf<#wvf>0}rcBkDuNknS|^(+!s zCETZd`;6A|+`QrwKOjF9dr58%dqI3+?_mLu#Snh2O1P4>eR+wp_ssN6d?60Z z-S)mELT`8%UO$nKzNisu^A&=qxnW2?>pg3*y*lUnjnwPA@;cZG4yH#9V$>5i2Z zK0jDhuk`!6@PNQ6E(W(S{;Zra$n?fRl+4i3jr)TQ2Li3X_e~!R?I6lQMu1EzsV2`; zTLa<$44R>n(9>y2CUv7M5O4YSL#f}81Ci*^VsF}iz!_;EOdcBeKlu>{BKYW6o#Wd7 zaRKOGy?J;<>S!P{g@JTeBzoumiG%`Qq-r_+dKa_-UZgVg%}T?miiBL3cw{#QGfk|8Li!QRebtKDEpuHtnPP1@Bq*PItTzTp#j8N z)Cahl-W|5!$-f8CdjUL7xqs zxhIg*5P(Qy`i`Q`8%S!^L&AB7<)Z)sJb>58r}8CP2U~~2&VSE?rv3~Os05jeXVxt} zDl01(-t9_Fk%>+>nv{*mN_3@abN97np62I)R2_}38lM8qW`H)PG=Vs3$GdYrr>A|% z+gdGQ8J~*-p%#ZaF$f`DJs`>Ey*-;UO^soo;$yO-BlvV48J=)cT>LL~1*C0TkXc^2 zdN_Q(xt$g^jwCj!3#prI(CUCWXp+}{ublq5vxC-#fOlXOb97c zEYWMqYITkr4L@(3@s&`urzlte*eHyKf(r!CR+8rE)!X2=V#gPE^4QD<&6so~W7I29 zWq3WMH!z|jH@%(AZ7W7-{}h8XXhBC?TNXSjc}4iEx83(;T7b`s`S$pqkowQRPbU^% z7MOxcRn?Nw7YHgiT}xw%X!P}mJLKK(iyHxaUwCs1grz04-7~APhQ@(+*~A2IDO}}J z$^WerR_1Kg%dazE9?PD6jngp(OF{J`+avSwf7-}Kn8)8+oCGy>zdI*umqq)O!H zW87b>L4${U?=-j8U#GWR&Z^e!lz?*3Rxn2+Xou6}nsmVSM;DG7!U0~>t5lz%J8*v3hx_1SFs?Og%gR0ixK3~b787fD?z^u&w zv!N_QYqK}-pdP}-GU7lpanpE~@u%A4q3QfblJaaW6b5pdTc2vtwdwynvrJINT8wNF z`1@5p<*C13$}mxYpBbKZYL8hmQ(SxcgE7-X@kS1j+RIb(#@c*OP<1@hP=ZJJyRgl1 z#TQPzPXiA86b3MsG5Zqu8+SKd;kW2|Pj3FudL%1V7SGsAysIgOH1!W^-m7XNq>;CP zW1fkUaH^aA1(D5;nSFaXAWpYuQ=%D-d#2u58p60U4F0I(qV+q9Z@^oH{CA$FGY@J! zP?d2P=j8!P8ug|;ffO3yjrqJlxC&TPrd)c_Lv?btcBaK{zsdcje#MH-@V1gx=?Z`=R8Wvs=1`NzW0kwR-I0F6}^ z`xRGYW@=G2(?BG+FSZJz*z zzWaQDwK`;sVmIPS{+l1nq|x!Yj(Nd`=!I*Mp|FW*%j)gMQRnvh7_)ua?DR$5!&P|$ z8F}SbLR{iwzGWO?8XP?{50{ANdi&dQ3C_hT#8HO+ohZ>p7g7&FrU2~$OR*Mm z%%=Tul-Jey&;$W{ZqI~lshilUHx`IxZ`-O|r&?Qz<5aul5D z!x#S9vL<4BZk!2y2O<4faCS}iFeb@}^axFC#I_$ql3u)MA3SNHZ4T{xjJuudORkkt z=ZQE8Tx(8*)NUEpan?{>$;nsB8vUnUCK0A>XX-oEdm{~y@Z{UB6;_Lu7NJ3ou<2?3 z$)}N~k;b#y{YppwkwPEQyg^2c8w+ZmGIwp6jevDLmn?lDB?GW?n1WI0ODC9;T`gxmQnx2Dyct44I>1vK{G5P|S5%-kx)x{sUh&rI%HYcMKw&!D zwNk=tBR8T#F>xcSHyc`=9XcW@-l-7lf8_gj*t4enbqiLXw8lTxc0&2a9T``j0`hE@ zA}oRHP2A8Et#5%M2CL|HCs(#j?HsTw==Nx+9z%~@4UNq9-_sp_q$`PXxnZjC4eWon z<)&1|AxM6OW!4ju=$p(lMX_F&vr{UUd}hYsXT`djngh2t!nYJxJHEFxR~fX{l4VoT z75#0{81<%&5j6Kh4PD*vN|Tvsu=`z53eZR+Q6j64afiP4RZ<{Ic0pWTxe*f+O95`l z&8mBtUZJb-O)OE@dm01$DlT?Td*WeP&1B8Vi^NNI`lTc?9-4}RTotCfEcu;=5b!@B zpb8Q05Z6TCsLwaQu&Y?=5L7`x-zivMH+_dy5&CShg8c*RoV>PoghSzgidkIkNAj$M z(fM&;!xqOiP+xMV;ex?*wup|q+?yfcdC(iVS1@kl$EuTu$vJ;IWN`jU2bwDs9$w&t zZ~fEo!svPR2*Xc$yHwaHvTkC&UygB)aneehO!@h?@h4Nk`2SKPZzL&9rsUr%fMz=| z-QI_fKIPn1lO1Cwr^5rn?b0e$mqPu;A6v=3pQ`et;CUu}eYvsLhCu$`zEQk!M>H9s ze^M=CCggpMIcrP3@kpylZbZdEqbZ{I@gq8NRyy@@>e~ko=8ZRK6h{w9v5t}cbq+~O zs~+ZX8VV$y>5-{`K)I#9hT#qS+Hq1X1?$Pz2ZL4Q2BLhs5ecvOdOFAWSOK=ih|Jpf6Q^_7%66RZYh7 zqUW7^O_lYSWZ5Q<&Wdcb@4=KZh$G~WIFj9Z1q{}GtoBkC#6FgAh zDxU>i7+vPaXji@qX%+Pt*1mMG%{Nw$xvV(j&pTNuhhi91#3(BbwICyEIW*}ssb+jACu^_dea(7nWD1j=_^t1}6HK+CWh>3_o7E;nu1T=jcy2*23 zj7zcL_>vgmd~Y0os-K-RjT&Q(zA&zNjMeT-uk4@Qrp%k#rQPvw^-0kQqY#2?rP`8G zzB}IeHU6bY^6as0ImWN8e^qPYAt#ytebUF$<^rLcjYFdq$MuZM$hWLXophCp;Rhga zrX(Xd^0i~p@hC5+JQZ?SX!j=EKKk;c1Gf5~r}9BYQ?sROZWa&BrVJ?lQxH43F**!3 zuZwG5L*f~+$MRJ0%JETIkVm0NJ_-`uQrN`pHJmwVY+u~EJ`(12n@nEt_j0QUZ9~`R zhAQb@7V_I7dHT}lh&ek+j{8>9ST(dv!FN&-A)SE@iWvN@U}ow{^P%{5RrfC^gGPbY zlXYnWO#xSNCzY}7i&f_cg2?ky2J3mZ$}ly~^xgT}+q0#@1NZ3azs2_5$e*2?zAy6T z&!}p%VUyg~JXuHp!xD;9C0vV%<2}L)cQG}+;>Ev|T7%FQYM3Zw_5mD(*n8r9!yR(Z zK8?D#L&kuz9($xCfU^WNoVK87 z=0=~byQ(YJ+4x-k6XC~rAZC7iSN?cq{s@+P1bQ6b_GN}!$-V;v8 zgDuFKF?n(DHGGq9LP#lf;IU}Bmz;(tI=bu7!Q;qXEWb*5Ew94+BdG?euor#grm~YN z-(g2VMjjp3wdP~p?A$13I&8*vK)QfJs<%*zHbm!;$hhgLeA+$!{)_Fc_ zG(ZRgXcYbg$D*=p*td9xg`A_03Kr0(?zk8oR3$O)xW+raF{-}TRLA7a?7=zwX)ywp zZU>2`-Lzi-zD3VTC&)<0<37~j(5I@Lml$y*stb+an!?aZt&UWo!91Pk`MiT)n1D{& z>&u;}lP7)7$L6Q|G0qK#OjSs|!6N8d;y9mHZ*&w~z{N|fBVyE&K<~`Q9RX>6T8O`&(iW@F!6dHFaEN^Wd==SRu7fW)#f?CTRi$F>}0AjfT?~QxO7L7 zMbLFVuo>d3)Wm;JVE3kHZ_wZ1;v8Xu|1JaN^VEF9Q$TB7lV4tqfovKH16i={>8=dn z1H#{2^|?4#f&R@Q>&ja3aTg83{_i0y?YVIs(HPa%XH+d<%2BEf8UkTu>d!oULLVU} zK6zW{hW#5d)>93?v(|3By<)!<+z!kzkO=$q_V*8z`VM(@fwR9Q{}^x70Xo7JCxFoe z#WCehUj=tJ1jd_or==k!TlCX$y*7XMZEu-ue@0($N&a_0iH+0Xo$zgJafD1mPd|zab-ZWY4H`EAH~##^ z0SQS{XfoLC2CSrp8q&Q{nPcPgqTKbr`}+o>2aY zy6i2Iv;|jC|Co;Rq-)Cn{f3KQGX-<`e@g*L^+g~j;q)T+6X2o}X^Mbo|Vu?3ny}UX1 zB;xjIqhsct0D4|yi(;|`IvdUy5o{4mHr-A)1zqvpZr99#DO4{);kL_F)LtY3{EY{Ju7;_{v2IhzzqA?B1ClxHlLM65Oenv!u+ zT|A6R{nK+N^?FGv3*}<5AGb$m^UIRURd7_y@spyaYkcd4 z*{gHFVQMzO5b-k4|Aqrj|FclT(d%fe&UbUTRFkAN-d>Nkj&&32DwtnvljQfaPOL>R)Wvv&t+@W>f2WXsOdL(eM*K|!92aU+LI_ZKsUAT zwA`KiK8`6ndpq#W*|)r^xgKRG+O)QJP*-k{z>%4c!E^9)v^H)*njR))W`9X78ISTt zX^0CebOdX4>;i2bqa5l^7sPhmKQxbkM%JFQ1MLvzZV04 zKdIm1`9sumzgJ4{JVVSWb9Z_*-tOkr%b$x=1aEC^ApdLg>W|%q-LIy!6!D+WSxwiz zRenHsTkmY8)q?Gp`{H)9t*^Bh4Cl+F)Dg0(i&fZ*) z(?wY`BK#W(%QRYbTex^tTILDd1;@b{!-M44(~>?z7Y7e?YrJb(v*Gh>lE>U2Yvz%$ zKdtb=gyCzYXq=m5-**dGjC4;qH`kwQ0Oq209)@_{P6gktkI)+T=@p8yxVtjca*b-@ zY{{m>re|jOd_zET@`{_o;Z6*g=ydA_U%$GnCqufkcpuwSGdm+5Bqb~(vSeXl@;~@c z=f2fUU5)})SF3#diJ{MZ?8BAMLlV0h?I(?UL9DUXhr?qIrOvbXUpmG@`JAqwv{^ez za+P}X7Dn6Qi+?Z-VCE&u4_K$WoVA0VHfmQo!k*F=_sLcO>&j>jyty8}8#t>NNFlPH zRs=8LdQ`>xqOB@ZozH0vR9 zSCeT0&bAr`PAwOofVZHY9*CrFwm(Cf@ypv=2imH-DpFzu+!C7;ns^0u;GC`&SG!CiA;}zzDeNwrXouojWyAk zgH$<2t#O_$|5ItVvT>L~uOl|k1#PFmW9!q^lf|*m?JI*~Q$4G|>Lk(t&vHozc%S2_BVTHFZ@zl&;ZdEi_3~r zb5{1I{uHb`!g=nA?r>J@M4_qpK-s|GMTx1J+eT2eeH>X~q^tV+0FpEm7DK!YOTN~) z|LH~i;w?V?Na=w|zyR6}u}&>FKBb5zHiOCkMj3xHF=iU<#2 zEF@fnV4%Gnh3_GQmI}MeaS_1VWWC?RZm(n!LzuK&cJo$UAXjO5r?T3)v#7g_&armq za@TrjlqCV?;rXjiWmJA+j+QE-fot* zKwi-rb-IrH3MiM^ej}Bx-S}Ca4t$=na>H)d{9|`Pf9&bgE=&o&lb2vl3<4L4;8wr8-J{7{l&pudZoX~Fbx?B{7qx1`WVJG& z)1$4^5ab6Mcf^hcctc=6o}O6|5B|t)-WB%s(x|`2?BPtbooO{iG8h(W%r8;K! zPP}|vvX=JpRv8p*D$pfD`^0zg&ut602?YYUl|V!H$#o{lM0b+06IC0V>^Aj3oN=8q zt%J}JaoDZr+2fg{ndMneC;CsKzC{f zai_!Wg!N~{8p>~>Vfs+Y*l|(2Q+^X(FU-#w%AvvHyAvq(u_})nBPDNHC-EOviA!;= zP)ifzfh3|eGqPP)+o-CjD^D->!bO?AJf#JDGQ_!Oku8LBf?n6!8m@6w?p{#5Gn%Dh zqO$UItRGv>ius#0_*bq?p5sXN|bKVC-ea6JkrPc#mO z%TO-CY9P}?-=xUko!61U%z;O%IqN^sDh`5#soYk4H+BqPPmAkYnlNnf?9ZfYkw+a- zS*~J^>zLSlpAZN(y;)B%!(uS8|M=F-?fs*z&vDTHG{|`#b?a*u?oZGJafK1FD4er6%{MvUpC6ca}O@A zno2G1?vET&e*tgBI$EK$z_*&@3D*NK@na-j!$KwVIqp$ zg!5jBV3k=PBME>d0)QWKmXfIH%^k+o6JZGH+seMyuX*6u_bMwZmEJ>v+PMdt>s`Qm zK$D`1{33g2M`HW+wc26GWLx1V+nwi^R!V**H+XYDiB32lj)f~JBP806h_6t3y@X9a z!9quRy_W!&>f*NDZo#Wx5#D~^2E9Mfbl154B3_Wwel*$Qf0oANI#PwjaI4 zUKCVpf0rM)y6%^ak&LHR9!!yE2sF5y+_TmXGJ`MecyCV(Q1_E6ToEC5+i>V*n#{)< z#-QpXO24ahU-d}>i4kN!+VY5|8#V1LgLP#%k^}5EZrm9v9M1TLve!7~J>?eczVB6Y zc#e6WaE8)+qwSs}EVx(->oOmP>U0@_ zw}9H?FOCtcesTUU!@?9R`!H!HYWsMLS^{nD_3m3zp5r>7+TVGhyM#!IrnG@|excXq zL@L4NUECD>4ll_tlY}=kX*X3aT?+nA_ApmATj9J26%L57|EzZukD{?Lt8zXM>2HQx zq7nQ|Y*9_#^ebL(PmhW5@bX-RVAXBn3I@bX0n&Vz`h!JNTx1o_aYJoub)+AdRBsoa z`1Ohl`@kr$V9hZ{dE5@Wu==ga$~_ZI(){Nfix>sv=11E%SiIc}F235}Zx z0A-c4I;5ExGrsmX6a-@|oacNyng6@A6^d$zead6Q2qu;!~U zsTFY@_co<5nyctIodX|vAd%I6*+Ip0xU9^si|Q5RIy&0z?r-tHnQjZg>I~TJUsc8h z6&C1~bu{uLt6mDYFCh@I-L%3@#te^Ib%6nU-vQN&5XRBVxMs4=qs5*RBxtI!at&SI;m`z&_>0KP~O6O~Qgo6=z-=))BVK#6Yx3*4YZm5rxAcPOf2lB@tesNrfb)oXoGBWon4Nt5AA2obesqiu`F9ZXtf&}*fNU( z)%#&LrB5)Blq@d(;pWGVaE2HF_qMjH2VB*}2so2C8OQnjD21`@FjuOha|IS*TbP}V z3o+A&+Jpr$PWdbG_t$FmnuIL#g;wM}%$f2PaH9bY&r5n^4Fc2o$&1!BvK3opK-f`) zgQIwcxPq5#XV3Vso`mXSL)bR54}XyvfA0+XIqBv-%EAk2zi`P+x_(Q9X78?z3ehtaNDHYXGfu|_{r>se#zKl_@Zio?Y8e6EX zrpb6;X;%K2DQ86ac2(w;2!`TZVs7mZIHvI9K}t-|j|cP+^uwtcyU;LngrKU?QK@Xr zn7LXErCTF30EbsR;$IwH2@bpcA;M^}-=s0$?y!i?EN1)A!qG(`SGKV1O~gI6dlHT z^6(@y!G)e}%vwUax65M+>S{l*v!!^-Hp}bXVy_&YrG+w_^2MGayHN&w8Fxk! znTSsF&|4X)h?@xWKfE;XpWZqFx=P6J$`}|+;0t$H(xl`aY>H%x&6vcy!7J~Qh9udb zk`L4c=M^0~0bmKq?C`8(C$j1S3$N>`n`91c3-s#*ao&R~rcaM}L4HDKj-)5xnf|nY z-E0Lw)J^C3A`P=$zBr$d^Ynp?&0>>$cOW@zW<$6>9-uout?$sV=6?AX+Hcw&X;;n} zmR8JP9X`D!Ys|KG{H~`0C^uA`nCj3!!!s{?&YoD zP6SaTSnk!(FYpabO+#QB77_Y2#%vpdDMB>+Iqjw1X9#3;&`a0UYhju;0DWz|UzoGcY5!*qR{pB&{Y2V4R4hRF1cF#q> zA-Pig_Ih5FF7E2uFsm?^cqN0($HS^mUgDF?o;Wi(d}(s2Cd3CoJIRX%wA03MI@}>h z)%QL49j+9_iXxL!?Xol3SrEF%zeF%1KS`Wbk7|8xeX0%KQER0}>@cxO)q)mxz<+>lN&4K<;b3nPxkQg|cq#DTI>T>u6e$!(@Z=7fJ!ps() z0d2#P$`beW;<|JgKY2aNVQAgY>a_m*X($b7z_HpWgT5ll^ zv=iRa((~stV+Y|7y=Yqvnxzvs5X8dr=Z)X2k*h5%g42W-5)_OXGce1~&lk@BfU=}3 z?hzMgr*CU99nz??6T!q_TPbci(9>tEa+n--sp|VaHdPxCOW{q?0Lb8*51_g?ZofiQ z?@O%3-9b9}ikWfVcTho(G%9N%ZUF8RTjmE~evD>JpzGorOOR-jTZtGZa;Pj{AzUS< zf8dMNZ(i=HSt4IjXZ)RBf5Fy8v~}jAq=|FNt#~cMndS2PQG~hDDjxU9hCHjS%)-eV z{tLmXm7eNzf^Yd3#18w308vb)0sWE64Ap z&z%G&Wc+}f_j+G-fD}^Pt5bkp1paVRq4-mYX!UFYyeM2p=HvA6`vxJ-3KH+;rLpr> zmW&DI`~vz0B@p$=DJetX1niNECg9U-**UIKmuuHy;DH>Jc95u8%YT)J7HV+qlAlFV zgLVg#ICPZtKc!aWCF8*-@g7VTmDrTmU{Myg(Dk@cTP1a&TK{SsQLVF)f90w1MsCh7 zbAf@~?cG_%h#OB}`4G3p-1kGVYUS1@hOLAy0(-Y&F8~(L4~a$+k=I1IeEic7VjAVF zRWl@7-YTw%rz&bcF+tHkZhs+0GCP@B8CzaqKiICF<#{_sPNgpJZH8d`F<25bxv!pr zuM@2NdiY|yF>2)#0{Z^Ag>uXcfb>EPiwB=;A%s8}D4#Xg>uCtj06=iPKI^&WV&+?9 zTA=5MiTUZ6Je}rM+7WK(Wku8+1BRIf9z7zBPQzzqsV*$#lmVT9Sv)d<+0=djPiYvX(m}VUCh!7hn80E;6)v(Lu!w(VTIr{NUM8nDotNZBf}f37)%saH`>hzq99jeAsj`O%tqbdgGQk6h;@}$eJ$V>0Z@Kg1wYC& zT!wrmIy(P6`!hZ)6&=K}j*D0!0NFzs^OCN`ELx$3p{0Nb2r|Aa-UZ(5g46!0*jg=C zLl&SMHvLJrBQT<#Sg(B`W~8@sIZ~bd#Fda-ViP<#B!+s<9L=`+zv5h-YTnNLaCtz< zye-ronNY9iM>-WKJdMOy{)-iE;(l;7bZkBIWl{}yw>vEc%MlFrB=h?+VYb7`BMn}1 zd%@Ng{%`cev&!zF^My<-H@f#j)o)JXAwZogyzbk+SSL9>pplo3&v zbA;G1s|r*BR^qyez_#{M<%L6TKXug0XvgDrq8ZE7*+2f7464ugwA-7NAU66{nqRb-=OY-D2-h!oL15G_`^_8RT8KdYFz3JA;wim=WkoDBRn>rHZin;-JiUP8P3 zHrMtqymUJqJc`096MEy&_dZyfQKOl&p18sP3q@Rt?r|~-$j>nW*2Hj;YEQqkY3$h1& zMMyYI(=)#rl)Z*yX&g{7NoC5w(T+b%bU0ixyuO;PJIzsCX6p*-k+m;r-7*pG8KO0wqbUYwn*kLb{#f$Lg9(G=1H9)7K&BnT%t2F|~+ zz8?EEZ*}xv%skw=@1y2c1Yvp__ zOO;jLdbC=K7B3G;6hwy^>x)Ro$qt{Fw-`>vnuu@a$*D>8SO5FQ_PeYN>~_{bu#q96 zrQwsF1-n(bo>oyq#F~Q4XKl8RD)1w0+l|kB^$Mp?+L`EE7qciB9{%+PolF4XPAp}X z&QVMoyMfNwoVHfZOE(q!Cnu3&&z$Jm?YFr}U4&N>m=gJGUPczINUrRvCe%1FzK8>i zzV8v{0OuO|OQi0i3GP&7W19u(vfys%jxLyXW!=|njyZ0yCe)@>1=gmhA39!1;H zX&&T#Md`SXa5+FDR?>ixbd}hOzgjzXu7{!^2`a-{4e_z`U?i}rdujbwR297)kz9w! zK$zS?de)IdG{jhK=uGAdpJ|lhpW|+{S{6;?5gt|L)xMB}z8T?9EuFnw2*ea%qSG-c znJ-h{fG&&#FmZqtI zHPRQ6S<*MV;0i{g{!8-oaxlp(C6b1h<9)_?e-a!AVg_N3UbWGWq*7y&yI`R+fg|@~ zqr9BO$WV?Oh)TG@}nQ&b!n&DZ~mMFXJnq;3SE2ZMeVoi|q|YiOY5s2`(V90U=9?moQLEqiMf z%eO9GUU+uRj-$XGr+WkPW9^V=@!@Fkxzkz1xlM1PkU2)E(ib889@PLwet>8T=W z|MUlCJXKpNumBAc8M;*-bercc<1I86VLfvGS@WfT^mUC1u|kjjhI^^wTi>EZ;b~P6 z4nzS2WlQ8l>&fbpA)lcpgCaR8(9&%%Aim^UmtA2bV4_LZpE$=eTwGy&FIb5;ld3=D zmW)577O-J8B;0dSJlg)16Xb5;>}J}7dO`~C-tc^l6v0O1CO6!AP--PeXWe`G$QbX! zA=YKEC@7F>Mr_Mk>dVa#!VBzGFxyOTz>A~pa46zRG;(t1kCs89EbXm>GM|HYDW%WS zitYpzKA6}ThD{#%A(g8Y+DB(KhLgE@Uzi!Ni}OadNO3@J$qWN4-3i2uK&$<2XW>3d^9t`?< zlq-I{a!;Y)QDjPq9z@24Y8=DT_wW>-9V7sCg~Jpo`C|?U(%?wSQfcH*Mj0zphDAce zLg_CP>8T4L^(yJ(AG;6~!5m(V3nGo(K-me+?kCze_o=@S*cE?S_w^Yo44#$z6{e^1 z8^Bd~=vb3`z#S%*ptH^O#%5U{pR*FM#px4<-n@32IkCam2JK5KUIX) zwrby>_EKJ9k3NK8%Lud@3{(!>RsFvd6b3;D)L2W$&<~F9uI#KPqN20Jb6>r}&Mjoz zSIA;xH=$s1jgfp4+Gn8SHn+V&7L3JJwY#~=o71J@0mxEIjWYoMC7y-!Ce7y#^?! zlY*h19-g7;tt?HjW{jpvC*(3zNdu#)}VHsi55?u0TVl>$|wdM|d5;Kd{IID{~>e6TC>*jzZ zKnFC~AOUV68VLX>Oq=}*g))b1nrl*Gob086oRAi$ksucGuTBE z-zyC&;+d*$bytFV59VosR1UF?Gk-xorg{gM`}p6M$SwgyVx@;K{t%cjV_WB(@;8>a z0856U^JB;X@Ivan9UmwpBb3!Ea&uuwmLPFuF8pEa{^dE1k9T;P-EC|CA-|^Ta_-93 zp)1qu+%k%_%jC))y60{)@J}20vWcCb?fz1Hr=Jyc?;qcy>!_4He!%r%%jxMX%LrcP}`C|$BXM;&Cf$}ofusK zQOiLE*?hPt?}7o;sjIJQ5EzuZbUj2H>LgHeX+nB87nQr9e&wXmn?7=2eE;X@lFhb@ z&|24&DUSTG`70>B6^pmV${mrN17%%s!n|rWb%jLL;6Q#3os3aTIVR{ z-m3L2ecA>$mLz8!>21o2rnjA9)6VGqu-i@dN?t$sx0qDiV)O zkW@s#i$(O45IugstoXCSRMuLE_=%~FW$#sMq2z%sM-vL9DPoB>8+64ponW<$sP(OU zxr<0`K5#B-8mMj>+`3XrGCS-kmbcR8rO@KRrQm#ppo#zZu<}GeX-X<3I_o2F%u*o= zcoJ66E!OfmI!h+0+A1uYRJO3Q!-K?EzJ7uI3A${cz?3cv+wn4l$5as&JT;NJ*ca}==3^OTLw)bjSGI~VDI z7AZt>U1+sj$9BBll&&-lD*Fzk((&RU^g}1P+O$QKBYy(`DaZm$TilmghA2npOT@kR z!qnv^z1NWEg{wf%P1HX7NRF`Qz160Nr)N6DrP0SYMGy{vWQ0^la%jYs7!Q}@=IE%G z9;9Gv)8oH|z%s=tGG~nfGbdp6FA}6U5Xw)0z_z&)Q|=xQt>@!e*EZrzECuok&6)%< zh8a*4vUx$M_Ex)Wu5&0N%>FGvwDmt44vr@{E#p5q^kQp@;?@V4t z+8MSIL=sJ0^k!wnt*(bz90KiRFI?eBD0R!eMu$2Yk)Br>V8c7KbO`p=9cX1yU zMEa-FYl7?zdc$A623}+)AIV-eS9GKn!Kf7T(*p4Z-JETz1wEfm$MH&7way;yYS&ry z7M_3%C{u>whh6O!Wts;b#5?Pun5jeOaF?qbiE$*?Z@|AX0RNVD;#ToYkD!70xVj(# zTBfiq%F#~YrBHEQ|DX0OSs9rGQ1c_)p6($UVo0Ah*9s31sbXIj7PUg|&?Rx?V5_iC%8M~GiIRgfH660DoJU0e(Dk6rrM-eEr%=r~1yz5JO?twc1S^IfHGgA}rgK;dYkKKJH$ zT^(`SFygXWB!>PRttCxlZP(>MvT{Jzx|C(rfYw#YacWErmCHV+D+gYVCMO4M@K2k5 zocR4hyxDc`DBc(G2!*N58=vkCj^C#4OXF_t!>jQgl2+>U&pSa>Cb<lSU+LDC zY|6>`VsGsfPk(LH)XRO`YN>97y_UJ$*w{meLN`er@YbO>E{CA7vcV&{TBR+cam2xO zgx(PqC2_TZ4|NeWOG+;9+?=w3a}B0D@vQ-Uw(Udum|<2iB`0p)Dh>c##nYyW%t zQ42@A!t7~!`YYIMWqx?!cKXD|k#VEKo7urutuDK)13$8_QVK`P$J-lw`ohM6s52H? z<2~|i#O)fGRwb)#(&hMKkgJyjr%z%aKw_J(DMCq`_*BH*C%)LI=ip`K_Hk3Biws`4 zkjlEr@hVk)0Wm^)2&0$_?15T!+>XqD9V9j$)sA)u_2xR=Zh-s4DF#A4m_W<;Uo3!=3rJ!nF2O;Sj8m#x!pppM{A`I@ zVh);gl)8b~v4AOtH(}H=ka9$uST&$<*=QqAZU6SI`cbod>R0;x6zVsd=emZD%zZw9 zbW8!Hqosd!y2_1%c`=hj;REGn?Y2J~MVFEymMyE`BVlWIOIp*z5+2zSQPD%oVBvXE3h4HL3)z{oZA_o ziMC+1W+52!C*$kJu`+sTA0F0}>I#Xahr+2!%w$6VTvgys&Bay*?Qx&3|FYe>j&>?xSbwc< z6-3aOa7*Xx<*t9Bsfp7+L^k^Ux0N$J!(v^;qk#cbz{ESOT;74q1rOJ*nE&ovRif0- z2Z%$RGi1Y!rqyjJuA+dT^hX;mFeYhT@>h!khkwm+-rNR;+V;}fb}1=9KN*PanHIYS zf_bLsK$$!7J#52hEX4Wz?Ya>+-AZ4_gBVHLRB@R6fMWxF36F1cLc~&}$-&-iY&1aa z+yBzAM^0_QZdt5z>w&%O`FUUHr60pup2f-ut2SihS(OL_OtD`T#1|_`Vkw29$Y*&*e~Xe;0p-aHd|aAAUu6C1w!3(efmLmXaW+ z=M53pbw9`00H>BJ8}3dF_V>@o z&>xroh5+#dKvyE}5&$WE&p*BKeR%ob5JV+l<|H7+;yJ(xe1%%R^52jcNfclwIN2Y5 z{?Cfw|BC!KXf6E6XRMF&M;iFLX!r}V9Df!5o)_pjvI{vBJ!UE;WeW|Ze;7tSNzhgH_0qAyB z5;-UoY6oeGOh};XXttLhWv*Vx$eEcO7Gr7IW&x;@y$?|2jzAY>e9PIx<3m@7319Il zr-tQ(_sq;pe?z9?wgvM);#C7Q#pJ~WEq>+?`&yUjAW^1L|0IBRzqhA|Oy`<2!ddFufEmQ+jZR1k46rwA~Xfh-sL~Dl{pPCU-efWy-^v7 zxV%>Yt`D4@jU8dyhYtm2$}`mD;F^!}uenp8ZTJzixonIlkVxJOASwpkNWzUY4}y(|_wU!F}UP z*yzGBfLaeNaI@aPSHN@O{+>E#Y(?CtID?v@=- z8|MzylrrZ3Hz6l*iChsCevmmjyXmB7W)d8J^@#866%Ljqn-<^?n@W~Xtq%0a7=i3~ zl>fJ$Xh4w%^S>r?K+C^c*2j@YOm1EICYZH_g?w(DkXHhc4ZW(}dQ41pEB!ZKCEPch zt0~s3XiCXs?(l2aB}5{5=7autx{u2Ynzeh|1jbZzeKY&CmUbMt6*iv2b$E z-qHwE@nBopWw*mWpVd{#NFyy)<}s{^if(J1NjsJm4p0P0_!mf1hc*8_>-hT;oRFr$ zC!JW-1v?PZ_Ssc?BNs_8L)omsJNNi2ucf@7BNJ~70g~d)+s=20Kyr1q#UN2x|FLTe z;)VH0Qf==4$R-@%qH{b4fS!5u|I&;8|0${U|DVlN+&*`NMK$;*gDPptg^MDFwL#8w zW45*7T1D>{mzMB>W?enPR{3?d{lV4_5((E!pO_ z80w8SVXfHKTKk;P2sF(w_>b&a*!g|C4=Ge$;?4z`}Y0PU?St1&Lw~BvStqK{!M-MwHLLrepdw&11o<3+;y9 zu#<3YTDs!X^z1mI`@MBrS#>)vfaN~x3Lt9=$+bar_z(%i0{-|%{tfYwlatd2Jwro+ z!v%=f?xU!Gww5Vs-*)rt*M^KQdIEWYW}o_oOG-=tSSMN5o$u1k6qY+=2ETk8pV#sZ z3M~J759D{DQ9Vt=PJVv(*3|p)m#58<+6RC6Rj+0vLOIGm!+hhaJ?u_RwzyH`00qI- zkW{h`w8bW`gux8{9Q`3^gnjHdI`c*4E z*gi8Wi_uRnT9KpN1oP#~i2>lvJQ)`hR=v=85Hz;jU7jt6W5m!cnVwRaf`pq4+uywS zDH!Dm3j^S_!b@CNBARrDe-XPmvUaG6_02rLP-iP40yS{&3$&(lrx6_`4o4{^!j4y3 zgBt5IWG+s2e*x7Ap`$~!iz=qJ$al`?vX-#Tj3!6#KbE9r4-WxVTF2ctvW5}S(cy7f z5}hWtcpe@e{gGbe)BGUsi$|~cMh`o4madda;Aup%9^eAU8;*B-VET37eN{g_xbddd z=i&W@iT9So<9(&8i)-?&&ECdv?^gIudj4C2<+X>;z5d(P_4Ns7094l6M4sVIp5RMr zaS@4d$6FRsa>^_`pmQ3tcn_Kje_|EjZ^QsFuXw8!AB-gmnmcC=m_#8 z^uL15t}Lh@8S8ZjVW53l79a5#p+&OEZ4w9{v0yA&AszTY7Q9-!kg?86fmm9~K8fb= zxYPQW5Gax*p_W4NYylai0%ygn#-n|%%M5~YXdTy<8BT^t-Hq2aR##^P+EQqW(B$`no&!fD-UdC;J&B+%~YZ|1<%`d15vqK%EL0*=d# zUUe&1>}d;pT$%`Tm1ei4r4pH^6RU>c!s+@jvJ$}20C0{_PrkUZf3bz)n|#H_{lwXG z#h;T2b3c!d0nlUvlTajUYFs8}S1Bc02$Qf&$dgQ;<<}cj_&dOdGia5)mh?k@hFX2R~UfbAAo>~W>r&6B%+da8GS6VzGlp$bNol(*eZ-}#XUepLjo9rw)6`yJNGq{gg+HxQn!`X7bUq3V zj16EFjVJ9niBAIuED5T7_N-FvhtDy+lvuD}VH%l(DK^g41a3yF30;DE6A{QSx7b>| zZyM`Dkt2k~-u%8VGQXq;!kBogxlgE~m~ezV8=g8KdmkSTjE#bDNsZA>njNdPpsqRq zZ$v`=>8pUub$IMJN4aCt|2bn7TQJdU?Ov{0o`cJyqa*s)MV&|{OWemiJcet!JwcCe zO~j04lAR#Up$Dad0X@nyTjGFdm}VIwW%y^&m90)BbI9X>9-QK$qnDW(4-*H ze+V_nEo}CshL>228$Ij&L)GUs04qCHI`w_J%Cp?IP;6t`)tM-5I zwmASf8wbeQ;jgb?TCIAc*05#v&aYS_4ikrms>R5jiCwICtf53weW`6jqoN0atK54% za!t|9*JQnVj0yWf9GjP_N8pr^kuvB+An zoxPvdr1vo`grtkF?SDoGw3$8|su41h@DwPMXJlO~n2pbOk+^WGv-G=yq%bSSH5aU!Vtd*k!KjO|! z1QFXIO*`kln#&*N*sP^>o9I!t5bn_KMZn4Z@6r+gmsXd~I!oQq7d!pH9=n%nev{t- zL)kUGi;e(%Weh#i0^4wio1RW!Hj-#eJ>Bm}?BJk?L3SKUt{>~Mo4v9W_57dJL)&k_ zW7Cw^9YyClDy2OmMoWA&y#3r;?G3}y#L~Vf`1fXn}FunOgRklQAQZy1x1w=-rJ*_Qs4eC1MUlat^}*^H{j?{gAcUbM~M8K*;# z78Ru&BvG`1?N@$V4B2Sz^$QaEV(b3ZgVvUowSd~;L{eAv4{q7G#8@1at)O7+|AD$= zMp3TeSu{p7{Te`60K|S1KlxMG+YrmxTW{<)#j}by(ovCDgw4)|rp2yI$}+ho0NjO?4t}`#i^}{0eZAhkmDg!XGL|MYON~YTCnygZ66d zSV++%-7d^GDvo&K-AugR*f=K8(>IakJD>N#{I}^3peexB)~>bL*5v{HB8jvhkqU(J z)1DDxlL)N2kJ#=gj!@P%)sjif){5w9`i}6i*%XLXz6axKJSFt&%06u2TwhGV*zgJg(`%3*c?*?Y2U54go>1H! z9`$Rqk3OCWcwp?&_?tbECd6cKZ+j{0tvBAo@P*fEK<(OO~h&)0+~5_lpZ$q$lX z4pjl;DW8;Zg-->BqOjTE{ zMst%A&1CS)r5f{@ec%fmz1!Kd(Du#Ru6XyMUTC*gA9MWYv4DEB;GU|q0rZ$|2NP|r ziUfp4>B2KJ6FTbV{i)Ph5W9c4P>pOM!rS3lzYD`3c^qYZ!CX=|>9p%uZ5DI44fonS zZWRyrYBpHnLBz@d(iE`@`a`HOEW`?~^Y}t1KkJpmFY(&yo+;R#mirbEn%_t4aqG~; zBGJx{{tfXyzK)=$6uB*HM?0?st_L%GgFO_fzNLkEWOQ`0^O&v`rHtU+IYO1M^|G&K zk+)-Qsl4P{mJ+inkJk9rpCD+m!_luDC$jc8;Emy7=kytcB4%&(pR2#pUjzig!p|%5RK3XK+?)7H z%1ZLRS2p4{E_l^iIlS7M>$U--n-IX8@Cnn>l5zGuZQR?2A(c7*T+U zfaA5ED0+I9A>Px&LD{;f#r8bJ(lMsL3+uIw9Ou;dxW;oT+B#rTCKP|V^;_Wj4V`PP z8|j=Kz3slh=0OjAXaaP38xi6J8>PPRk|E|rm*z$K@U{RH^~6pg(FFls9*Vyn3a1~a zoCw{W!h`;H>5q~^9-p6^Q|u5PIF0ZBogm7UuT%GJRRDEy_4AJ>0%g9APPzW0J<}ZY zz=!8oWKA1xxs*_TSMH~aJx!Po$32W1qo3v@%S_PibNqiCg)@N6t1ao&KAa^rS8T>J z`2iyvbWi$iYsr_$p)$svazl9iJ6~g-JiWAdlbkA;jDX2xkR@v+6dCT;rk3`H!RT!B_$)r5_Pvf9)1QO%`8{OGRX=gO4_vHz1LV*^r?NktZk>Yq6c}yUgtV zBrnL;q{46O+3KO1_SBO+!jySf)Yu!3qZ)f7qKqH zE#~UcZOHtj%+g028T0IX9e1@JFNw#NmL?XPak0ImF7ylwRD;177?w?+=e#Ls+u#xs z((Nt7Es!Q{aeC5^;B)2fC2#?hK*wE%CTohTkIB$%yvUN1^5vkJC(-8Bd{cV*?s1jq zAlwFLl}Vy;BVVJ`O~Hs5g{g(3wgGg{os~NmKA4crXuwFFcgH2b4N{O`P25m}bbtTV zdb;|eGquY^&4jq4TazQ4C?e^$(jk`c)rU-|u(?Vn`49r4Ef)?ZYE#Aa`qv#h3P~)h z(&knP@*|07Q!`Hu2=WR~+*&{-y{@le*DO6DDGhB)>`H=OylzhPwcDK_jOr=%bkClmOz zB=#J|1-d`stvY;UyM{shAZ-!dxf}#Asca}oo&=HKK)`;M6c>iy&<*zm)aX}ad0q zkG8cRx_gNTBX*y2Ftov4UN_So=Lt9j?zNz%v0;(NZfdEyeVJkiB~k640IaC2Eg8#I zhCE9C55Mf1`%%`F;4Kh9D&6J9uaL3DAKl0>DdnxiclRKRxcUu@irEB+6A0E3kkz#& z(zyBL9>#3A=+V!wMkMXATjO@odT``^Dhz#&L-=8VLW7AkKf4>heEihmSWRB0ystAyF1XJ(c2Y>&2*Sc@-UF%uTdY(7F!8zxA&)IR#-k<&1G{1;FN&C+1`?wyM(g(z**%N)h zAEqqE_Ij(?_`yEdRnx%6GLc^w&gVZuhBPEq`I5fqaHRu+EBjv0A4!+46AOLWQu8$j zJHyIl-=vlOz+p|PG`_z*l$;a0Uxvu6pIyg`WY(8?pxXJX(5N?&1MfkNVb3Adp7hwf zPJu4d@lhp6w_~hA8DG;1xSbo-?2?y6nu1*5@S?+|)pMpiOA(b3HK1jD?(_AniJ)j& zJ+1YF3v%4dsSTM|`dzVM6KgVIvRic^_LS&;Iv`15TltTBOEmne) z;OPgtFqI)?ia|tT zgU|hjax!=4eI7^d5WD<5&w!SG1FnL$OxakMW&wRMm>>mx4x@0s{!`%g2PVT!9zr<6 zHm?5)Xmku^iNl?(n9C4tvf<2T;@A4ueK@eMQO|H~A0{u^wo`7Ua%a96WoaGQMeA9GH-VU>6LYFbTLL;H>Z}PDdv`9(Rw6-$(hEA3%D@Vrt zoYUI=%z!*L0^n8!>pqNJu)D=umF(au$~entjln|!P=hONs+Dkrp)#97h!RhX zoOT3DD5_);pyzHK5}UJ6sff7Vyp%xJ>R(^iBO-A`ufzA7e6G*FT{Y#)qKgk6r};iz zFW1S=Tj9~*r2}pVG~diLTLEJOS^R=``ZSSSS4DmO%uVT?o1Lar0PDHHYPhVft-7)!qc&Oz3CQc#yzD%8$d2wUN~txiqPxrw)_ zI#H`vIIF956=_#Mnot0-;v?3x%^!q2e>ER+f`$6Wc(;g%_I<9`d}2fB5SqUwkSxDHE~fJDn7OSd{7<@FYlN@oE8!mvuh9NFE_=k$XQ`L#U>+lxhewl{>3uuc6}_{*g)Dj359Q!hfx{Nrdk%UrnBiB&rYGiLf}DC4LHue`^p$$yQ_-KX=nVZv)Ud zK!6E=Ea(PkP61P3>oQ%j#AlqprH|fVF-(;@ zF#|FXY#5k6)ITOe?%DB8n|{?cyvpnn&>dT4eAR;vup1;}G(WhiowCi`z9tpxYF?8D z9*~{_DvgiYYo_6!1-O(G9~%cv-#>{`Zj|5w@*5WN7=1~fz59u}e&zIc41$I7ETBI@ z#d5;o?{G6MrfZ6>p&7g!hc6wZ>HBN-UH>YHO5O&4uV_7st|!h(Y=`bUy7&DUY1c;n z{s51$i0wFj)?On%KXPtHhNP91}elZ9IR^(qyxOg0L?WPhfshnzdS zD$d3~jrdZvFws-K!JSd)=k9nD-VbsjRpa8`J$QjgNKTA#OV&^~l7c4}+wS4fr zeLIX@myMv|S$s_)P;*|$yE?^^JuFrvp-uX?f@gO0vqKmibv1~T=V7}eqcdn2L$(E= z&cH~?$A*Noxr9$GrL2m?(h;LQAa zzb5@lZ5`8b))+p&!lAp%6yxd_=a|rh(FJ7GfH*i%&u7MgG79Y+b%@Fj1*?sdW zYA}hSK*?Oo{9kXj@lVVbTDQMocts83ff=;p4_nX9?HMgScEos47_YFN0yK3 zF{__R+NLZg2i}F+v`-{>Zyv6c=iM%DPsA?;vS$sk#l?IuEF+;IEs>R0K!WXbbYFZF zy1zQ1+)!u8h1zlN09u<2KSc3Or#Q#tqHbfxfcq69NdAFAkI*b>u%jMHN*gcsdiX2* z)ZxC{S4U%2x7YXwny#6$*rne&=xt?EW!D~zy$JcQ3eDoVfdwdCcd%$0+6A41cKt3@ zSAc9Xuw(`QPGg^Q{sX7cZ$Gcm3UIqk2B0@z&fv+iFAkbJY5QXwTmZhyYhbWKSKd(i zy~cQ3ryBPCwip4h4xT{Fo2WiI?-X-1dojJEC*j>c){s=B?K+cgyW3^6}+D+e@wKVT$%pu7@7 zOcRkE#n5X*8E$MvSW&oLGh+<3bmn6pfifWZA^wul)G-|$zeFc^OhNRxcGVUs<8JW* zF;n;Z;vuGa(J~F#d7e~^@cBrEF7J6CEq!u)0l%Uj5qNL05eNdmS%p zz<^8A((ywV*RZjkcq!>gIOOEQI*oR$kvHkk(q=2^fZU1tm=_&sLko@s`oHfpo(r8UH&&6A--?a5 z2No-$XkdcL6#avXlL|FSvFp-5u<4aU_uTHyZB7?h;deH_VJrdN`jE}XtwI9!oed=- zfrj}_hn+TVx0}q#mNZaMH$+$i$qpE0%dbo=han2|HaT8=_wtkeo zxBlt|eJa4DZ^DqzK}r!YzILa0?{@()*GpOqn=xGsJY%kQK}9pWGbL+mFZfmdi5T)D zB>Y+4<6bgZSI2~N&;-R+y62AN?uX}Zz;0ZV*llTK5&Diw^quh;OjoY#^eD7p1?G9d zz!{4b{*%@MGV|DGg>8(35*}^T!tHXX*!7^IrFUShu%txv2k{w+2cJ?ufMi6gQy5sT z+!tmL@Sx={M`O#Y6RsQNC5&H8_EB~kAeC8L!w(zD0iZH?H@+fg3&dMqg zGCGYVoErLO%lHkMA3ur9bo@%Sur$DqImt0T;lfjx7P+7I_`&xjT31>X)vcHh`xZ(D7b*6FNs)9OpI^xuFaxqKs;`n1>@;G_%ry%W8(h(5caiK zQO=sP{Nv*tV-Jh}#$>X{v2^~^83_;%J)jC|ciIyczWp_ld%wHmt{}mjPYVi*j(jo^ zAM@^KZ9{#jx6W{sQsXl^p{alRga7@GUl}+VS8Dw{(ULy^LH+SK5f^~T;kAY8^)VkG z2K^R!&#phO`)#D!#hJ?5hn?epa@WhiS&d;_W@BY_B%9pByR(+r%1tSLe5dR@@nibU z3!>WaKkktS#cgOe(G{6P)ts66&q2c_Fs`~w%1g|19;y{CIEU=IL%4{gFdj`q*X&=X zr_M|vssYy7sJ?n)b)FSKc!=sfJXoSs2mhgY@HO>7B=+E|rI#Ihwq)qL=g8v~NqmhO3f2mfz=xmQ5RdVY%7{+@r70xs+dZJ^_ z|LmC_y{`@D>$@ea+EV;XIlAhp-5|N6Jv)>o}j9 z=6=3BF~uC%-B@70HuOmqWR*d{vdTQESI*i6ZT>S;CZP4Z9F>~~OG_=38K|KPFFMS; z*vVsfhy!g1rwab$i+53Ci$xdqZ4@fh_C%BFh2Ep#%+NtYow-N@W68DV9`cynA(z}? zeJjiwe%KHq3&6djZIPcUj>(q?5r#x^RxPT=(Q@p@>B~$+3x6F}rR=Z{Wn$F0H(;+j zag0|wg)amX520gv5SAv3>XIMSLaYlsMlhS9i(iZo_BKBe@I_d5+fCX`#Gv!kcqo?Cl z(z~wB{?t~~r?Ks_U9;S|L30BDniQ^p;nkxz&ZUwuwWtO&V4EB*B3B`t?8?k5XqcaS zz(ti_9qW~RgR!6x5Fk(?Dl*X17~XAW>9*_r9oEI#q-N>CgWk*1QE=~A+y-P%f?ySQ zsb@)2cbTWcDj@Gft$|%X>_C3Ij{3fVp}>wHNH09e|Vj7y+{3@-3CFE-&5>?bZe6S83LeG47j{L z@y10zsQ@r8kU`_H?DLqtJqe(bCKlq&CDA`9Xdi%a)f-Dh)%~-}Z-D1l{wcfetx-q> zMrkNy-*vh*^b+~N75MeO4&ru`*jR!5u9nW+78>?R_ zbKvdl$Z}wmq^gxho7*Y=f8Ya=7WujV+iWa9fVk>oMng$qp@{C`!dh^I;(;WlUTn|_ zH+tvd6|$$di8g+3JR11@o1rzL^Tn{$iFmU*KSMpoVhN>I*3~^buc_WtbTafiqn~of z4$!u7xSrS$>}qYjtrtMvvASwjMmAlZkj@d?tW#4XTLV;((2ot6E!Qj`>^pgA_->6E zjiDbU5)U9WnGI7#>h|{k5X}R2q9`MBe-GlEDfl?hNwUnx?v<78ZU7Cj?3dxkWS$Fz zT~yT6#QgmH9VdgzLL6|uuHT|8NGDs#EdU_$JX;D}>M(7%UoGVdo0u*&u&3VL-DYGZ zGMt^9dn#m4k!W8q`_%jTR8=?Vxoy{pSw)IWa+9I%ScVNV4u`*oo4u;8{mhtp8KHke zbx=TzhiDu~cgVS73@vO=q%jnU%VarAN}fu4P8&9ygvlYoQBtnJ-9B!@%znk|_?kj@ zXwBTb;|1g|0OZsED4onfPYrf)F|QGT;MT&{XeKoK&C9NY3YSp3QDMKUj(hD$YUu9m zA=*XsZsnH>C~O-a*O0BB4b>2?jd0nO<*$vC)`XeMBsW)BrrtmGU@e@Ch={19G-NWA zrLTk>EY`REiCh&q$lfLSET7JzhN;~B-$N)d0^{jw#Yn}dJRFx)azF|fH-HC^Z|Tsk z_d<|qclV@DA-)H1*wkaL%Y(?mzt%y2->%8&R0kLFu*ifGEe3DGCHQArG_%du%oRS` z6U5!^aQO9vU|Y%iQ_dyL5-R0@e<|xrJ~Mkk|KTG5Y@<_+)?6}t8f2Kaj(<_e3#KqZ zo$qnF57*56RxU5k@3n_@A^0lwL-tIvFnZ;kq47xwR19pDxrVAfiH3! zdgs1jB+Y^nZ)M;v7+Pa>hF^QRGh5H=b{A8d8%W zs;}vpmT1aTKaSVKFULlpOl0guGO+;PP+b!$<$R6Hhn9LPV8}ZKrAh}wr*jAgWzAK zSx|w_&7ELPy7W&wdI6^_T&pBOOtft!v`)C*fND5H30jxp~INW!9nX7F(e=@Ja#Y6>J=6p`~jILGE^``RHSmM9-J^P%T^4{<217@56QyU2fNb`N_$qkO`9E5c}IOQW^7hK za(pqmLtJBslO=0MGWJY5ZqopV70K}|Ul=V!Y#f;F{HUUxptPjs3SaJ{;6(|B08-r3 ze3{B4wWZ5+31zyb_`W~X{m70_Epp{K<3?MjQrDw={T69n$O<~kCbZ^RC}UV204YZ= zR_AW(@V9W*6mLUyfv}sbmm%AGTa%xF#N{WE) zRRWWYKP@qY6DB#NUI=aiY-fhnW~xK3-?7`iK>iqAEqXT|%xyNZB7a*FSfVci*&jg= zHq{OpfRFCw;!bWBp(T%kZHN=8k$g(qN*)$fGGI|0yRQaw+dT6C-^61u0~A(22mFo6 zR??RK{5nSvXE(@&=c;8^vmhyu;72_4k4O}+>Tp}4N5bY042^ugLO5Dk?m;Cgr?%CH z?<=D6H)!_-j0u-h2Qk%6wbB5Xp_8|ZtEO(pgn`~7LkY(3`GRbWo56N=^nN6!V&seg z!HU!3!lUtZuY1o~&1&iz5K3MhD%%{6)Gx|y9S2qvGIF|ZF`h~fU z%-P3wb5%}RT=oh%K5>V3Qaw#;9&wTpKkkrKB75EP6+@#`wGbV#@cV@m;M5l%*Vg(> zljDT8p=g~0P;noH+9?L45D&Mt9rbNcu#|8mZ0s-Y~P1M`G zVYFmZl0k73Sr{~#=lLt)vO{zEz5%^o{0v4@d|E zgSRqNfUrF`aD&hoD2eyv;9Oi>Ik{xjxwFl};cy05M9zrFaM?Dm49T!%0Oue*EwaHC zBb&Nz-ge;8Z?CP(r<*dB&*;*Nmfc1zYQ~F9$yxaOgb-!JpH&ei)cv$Cg_=F@DlrQ!F<+R6(frV(#mHcgV)$53fpr zki|EOL;;QAtwvAwFMmYg#vdhz{C~Lp=W`SO44Q%>osaUH;_WV$rgG;AQ5)#Bj`&FAgU(n##O@0ks8K_JyqXTxDvc#S5B-Z6zq`v1_E?$gZU5z|*y~1L zN6v-KH$1Scyyqu;`HZeYb@xbcWfNYsW5$UD@GA(nO4TK&U7XX@)uipIr|ZY~ z_N253YLK4&R@c_}OVJv584b>8ItB`l&e@H$9y2XLBP~3 z3pzjI>NsDSx%TqNI!2NwvSPj~;F?{rJS!8YZj;71rhQ%C1EwU@c^0Gi#uuAxD(a9K zxd$5i+Ylbob@k~}W#pRlo($v(zdqR#RHdS($TiT((~$tzdcI_|bs%u1-;%wZl+{%< z(>3ll1wV~S!&y-J&2Oz7@aFSu>VQC<6s|@Q8skX^4tv`JvG=ewRv-*4wUzcr+F*Mkf>TdD~8CS73V9m$q6yHz> z?En3ngFrMqe%Kn=@9TZ{5N|GAMD{T3RiDX_(F1eURfNcT7Ah@GJ>=|z0}xFS$=}`G z4VG>E0_7M+^(uO?`gz~ja(=90N!Z$o$Iq@d3T6F2=?Uxl(j4&0PBKy+MnV z9#gb5X-TX9OytE~Ny=*FtX@Cka%{LkFTyWN=x>enSyMmCqp3s?in-SD?BtMa=0?X1 zMSj{y8=KnTMnbZZzIKrM+ZoGM-DCjehrxeerFA=*CAdk;#%xCN{@hyL#Oy3Q?azmr zF=?hd)CVtnnF5lCue!FC>s8LW7mi?$69^6^qzMRF(_%;QO@&#D+nTp zsOZ#N>(#3OhfpL-R4Ug0zRf*-V>JxhNLPUkHiq!Yk(D?kI1xx1ig=k#bT$$tLwzs? zpy^Zrj!=eJcOZEgPR}how=(k00!aT52`f2S1eW&_X>H6N=vbRLvm1lU@Wca({ z_H2&!9n|*T48*bRW*|Ph`rIsfAyS;r=|q=~ge@vffSUHDWMX?jL$p95vC$BK@c*$;lO2Yt2VF`@*KJt?1exg*nK#&UJCRww3c5aAF_^iepyBoYpFY1#e`= z(sPyX#gf312ovFg?%fr!q*M0nOhkS@VHUZnSweley@(B4;k|FoOobFp4*T()1ApvRS-Uc z+1Hh-!-OBqt(TsayTf2s-`f@|hZT72PAr`!;PPgX$#$^Kqw1jj4$npTV@F$_I4UkC zk<$^42BNEpx61eI5_G-=IW04t62)|7KxR%4hkU+@rI{=ZZfHY4$~f`Q3_+}jG;+Rf z+%Vc7E+>jbQO8vsM=<;ZTkdD0x89o>DcbhfAHZ*Z)7pxhYu?2*wi*JRUT8H})5N=W zgbYl;eZPx@?~TJ$e3rad{ixv1mIfmB-mYDJ3GBLJ6(Q|F9%KJ$5M?C&fl89tMbY(A zf9C$Lc;CLY)3u>Wd>sDug$F#gko#%Kj(#?w5O!%g*TqyZA@?kAjAV>}Z|BtW&AHft zKs8pG*;EROPb(ALOXr)s%_(aYPG?|*YxD&Adz@*q``Gj~o^IRZa(qqHL1qwZr}VM& zDCT0WZhNA{3#uKr(w$CQypm(rb+gx5LLnUE#TZcs5B8EZaA>T+x{QACGK9>lM8Tb> z;?mtlYDuB|OjF3Ze$^gRjWqI@CVhOTKf&~~$*OCfJUjzbF`4)MjK&IgQ6m7oQe)D< zzyaeP1?G-RKqbLdp=L{eeN$~!3Y+qY{g7zFgglvsr=aZ~DxjDh^cZK(B$hHS+w>sA zGi&YQJYVRI{q!NN>D$60rymrUO?&s9%^$-?L?6zvalB0==L%iClJr~+O(a%7T4+i- zaI>afsWgINgUY+p@{dVe(ht`%#F!%KzyD#16n>~k)iNkfR+6yjjl)KO*&t6X=6Rpv zmp0i(^ttmgRWAyL+GWE>J%*S5jJn*Ot}$XadM4(19$)CNv+Sudl=D|>B_B(KwOlcp z1JuDl9-`fRb95XcokN^LnOXZ8&KpG>u=SxTWbsD2>Xhn+T1U=4B(f zmo`It%C|E_;7Fwt@vylklrG~uIWe2EQ3fYm5d-E;O{Y{tfEg*$;2>@e8+7E4+x?2- z^zW^0pl=d+gj#acPN%(Z!KM!?ozNKnilsZASRm0@ON%&L|3WMADIr|%rTsGWGysUC zn{u1@ilsNYmWhViH#GCv-{E2K6I+Pdue>brxe~?!D$K5I?a8h*XJ-Dk70KP~Qu|z! z+Ei6RSNa}}?vEXa>Vx1fd@nZJx}rMdW^T3-8XE*=lj1up{?z-tTu+Q*N8xVi`!AdrVW=nEzCb1IY3MWLiN7|#)VrsRs|;A{+2@}Cf3zVU&AvZu)A8{3Um}f!+Bc?Oe7Dd#z z@C(8+Q(--x2J1fqqN$&ne+;Z0Pi^>nXT->hNc)mAh#q&w**X)7I<9{i*kF1!kzjY9F{Ir%v?IOU>FP(IX z*;14TiRv8xk{E@7x{KJo!kAJa!SFq5Cu%V0Cl!SGFR_`7NQv?Eu>u0J!8OSKIWB)z5g5;KvH5sj0pVtjt;{zy%8Y1XJbEj^^(VEt8O1@iT(-r6-iR~Anj z)?}yHsIp~KsYAv+&PPhd1Pe?C&n57?5el6ON2IedqelQ0rM}5>XrgC1Ml3Nu zYq3FQ&bNeQT5Nuv(DI;ntDknbBWoL1Xg_BFyaqsG0679axbp;WpuzRMtVx+V?Bz_? z7FPyi*W$2|Fx7Ww4|YoUD+0w<&ymUHKwpBWeOleYj|8Un-gS46XMSLeSIj<9wJiK? zzvi@Z*TgWO)3BeNe24KoI_|WS(EgMC@&Utu2hqw0J*(@_r|d(n7|+EY!9p{<8ORL1 z=4GJ@BEY|1XrTN$*g>Big)enUpI2()O6}EV|LGWLJ?Ol(b;Z>cL`2Kib>7HUs4i$`FgkS0e>-# z2}x6w97a>^jf*a>KoWAG3(l<52_CTx*rV$=Wh}PjIS*18wWb$4JQ~CUs~maWpg;T+ zd~Q$Zb0n%q+sP0_pV@9FL)C2( zQvZX`x;PQ1CO8dBphhJ?|6oB`{W5#3DU|E~yp& zKoG`u%ZSCQ_y?9s*j3}7t{+VO+r6CG<>0llS-rnYnR zvQvo*s#&{&U+a-$DjRO^e~K#2D?NITp!gm~9vTYW=6{eai_2upM2NRCrFPJ`AqO&;7;qp$VH!d9T4><2}G9Pvo%x06}L_$Wc0>3lk`0O z{IDQY=FTdy&*7)qzY+I>wV0-S1=H>vwP`liBnI~-+4~^Atj}`@?^7C;yMV4V&t!2C ze~HRGaoDK*v^9}}Cs@G;mPEwj=|Y)nd$JD(LpW`2j!!SgWa_O0#{G{)3YIpvv6DLl zI-v&Cn{!jGnLwoUKG2yOE1mUf3XexT79j`wF!C3IOflg1k54X0NC=oClV~~1*H3vC zKJ*qU!i1eI{ArhRtoF9Xj2CD0g>MS!N^ZMdOlA6PqsMu!@hra}W_wKcib~mc%&RJK zZ%>s1@)n=ic-<*O1slPMX^&z`BuRX+!Jfb}sCUkaRjph{r<_;cf z>l342cj-*ao;$Sq8(luWNO>ts{E>-g8f68e>YykI*@?2953|*8dL&@eT(_?-`j=36~p75bGR=emT zFtbg&2ged?zr&q-APK`rVVW}t1yq4Q(cT}dYYHKe68XU={9~Q_IvK0}OgWl=E#k=$ zM~orG!O;51swBWqH4(FPfzO2kUO~3B=#lBpKCfVB5N92--ayxk=Roa_%=8iqkKnV* z#oK`rdb;WI7e~YzByWA?SyHN-ni`eWCb$S$=%_c-8mJ(vCQ=RfTVVZ1;$LpuEIkTN zp86GQo4t2H?7*Z5Vkp@5%Q^ zq4Hwf&SiQ3eR0Rq?EWifyS*Jl{HV*u?llqApuLPR!KLi%eDh6o1DkhNCjF{25SG&h zTQDO>>g*0v#4vM4H-hCy*PkTIN|C^(#pwjXxRc2nD7Wx=?r7Kl*5~!3eXZF!0NqST zaD9ONcO^_#G=FzUAPF@DdnKn|y_AM|2BaGMV}U|9#X7}Q{xO!P8(NypG_o{h>QQse zDgmKQX8AmMtfmo$p#17K!brF~J2-(>&5|ovKO ze?(Ip7BNR@+#ZiAj0dE<9kMufA!0eP^Q*-7BCGG5SY^@5vDXfWx-4ohE#PF*fCGd5A-va=j{lp(7FY{M4qr1wm~i*B7xZ_nN{gAm3^RKm#)g zCmH*RaUG1k=$T|{mFSW??5Q4?^QHHO2m2jKKvgI2M;V1^^A|c4I)aLywsOmT#aU<- z0@}o%iAePKT8rV`MYCl5hd})C(HbUtu39EjB0YK#t{yTaGE*O~qNSASH!&ATE`$|W zCVJg@mCn9UX(SIG9r5X}jI-Je(xh)yXlH#n)eA@>9AN(ft`3FWd`CrtrBB)@Jqa*X zBkaz~>r}&@Kg3Men3@W!%5EdutrYH%3*k`x)u;y!3Zx5di)rr)ZpW^dv!O=4@B?TccgC1OWQJ(b=+g( z$`W|GZuf@S(uJ{lIjqxR{Jb%EJq-|EM*vdKBj2ElMPs02XvnR>ucl_k|1sr}odSI^ zg!8H;grh|pk7cueK5X|6OdOch5ujla!S3!;2Va#=4-=;|uRgvwcWmaoYCv?^3!4|D zdqt2?rxz`jZ&{oHp6vjryH5I6wC0=(EU+R-AtfiW>?uyr3!C|gX9Y5~XMDPHbCDPX zq!A=|+AV)~zkN1+8q9NW8(3AN0}5+j&wh|Bf5sNcoRhLBhe%;DE~PkGdmH~+f{69Wz5%preon?fy*#Xk9oK$v@*jx+ zz=5m{V2dg0bfpz2s8K&QBuZy1+mYhDj%_C-a<_3zPzd=r6A(rI3RuW ztKlXerTi^TCKH2mEPU?a;mreN+TiO-H7j>ZtZ*n$t;TU7FULwOK40ncSvSV>rHRJ=mmmCR9T_%o&ete0C=S>-9K@zd*X!x)!1?;c4 z&-OA`$E4J1MlQ6*SWvQeHE<%9-#E6+${y}`|7?#JDUAE?UjFl6ImYQ2Fkf~7s zQu(n+4(YOxC4hcEbqA(++EruQ(Xwa=(NAtg1S|&@qy|Ws!;?@zNPmfU^<&e+zGHK? zN?(bRE;b#_Ux+fnq{|9}!^{A_11Zmvk`gJ`i?(d%HvGA{No6VW-n3rw%ixAb^OAIE za;a5GK(Vk_7@ywZ`s#B$q$##%j>u6_jvPsz0Yaa=Y>=&rtex1ZFcG>=&1PZRN{@>R z1&Rt;k5JAo3;D~Jn>rnaS3%uNFXS3hd_Q>`w3ES!?RVg8<`Z4GSOCiNl^6hvxO}F0 zN=D-y-g5P5Yul)iuAME`ju4l@pu-HelDy*WK55JKWfyf%V1(=HD8OHGRaigqu4PZ7Z55YoaL14T)0$BlWq~Z@Lsh- z%!yX5Hp~Pp3$|beRaAk;>4+a@o(!^LmmJq>!q>DM#Kib@cH|wp)I5Y zEgurI5CH=9S?&IFbY3DFDFvtraSmxCPbrhD| zjsvt##sbPmhT*`^fM`P>~P4y?RKN>gr+Y^^`!Z>ckonR_Yc4K!*%~ zPs6hO`9%Mr&01Ae6^NhL3+btcLwifarzr>QE_bzi=y>=seBHSXtFg9Bl{akw-_m#( z{qeoPb|-atvna}Wx;R%aPice)==IwA5(8))6JS@E7B6NXNAfg+_dnPm*`EW}oB{KT z{*y^I^%u8CNt6K`!8*Ihr!8XvRbg39%Z@>e5-mVn6s3Uej}6KkGyN5;_{eeVq*@~6 zAGnK?6ySGZUaqb*=kkPL%7y#~uQuQY7HTq+c+Mt+Ag<7wJ#NJ+!ZXcp#?@;;ZzmuI z4$g`mOvY{s5qX>SmHHqK0C(idgNb!I07>GwV^(_0BoU3AhP-cWh{!U(1p@g39LWIp zUcf-ytrP(FEZ}pS|3CRxgU^t!fzOOmdNgg@fMj%kvah4$5J~BzV)j#TU0Lhz6#y@9 zQ-e!1Gchysv8ShwH}klV5tDsE`&n8-BJv1_rU57gVCQpl^m<3rU3@0uHMsiNPe}q- zAa3s+NKqLBmwd&Qy!oZZ46ks|BE!+;yK15A8g)JCKhct@udxz zoYA%4vwKNCYypThJ?tlzC_WQjDmJF>Ai(B%r2QL96z>oE78w5=K*7P9WW||E@t5kG z%3}1QP^ZA972v?62kt5RQ=_ct*8sXD$17jUpU>5S@H%i(L{WeiyIOA&0!Iw2>;Z66 zeD4_w9^anwe>5P+VgC&2UEtivcw^t*LJ!fyVsPlCxy$}Dq;~+5@qnxc;KBsPK`sFT zKwR>&k?xjdsUN%~o>q zG&HhJHNa9xIJc|MzDb@HdAMTz;r7coO+mAEvK8?gtLh=P%6M0;ZqmndgbSNhp?v=~ zGzL<5#6DZJt)|0^uJ0!??6^v4?Y2YXBYIrrxV zRNzECU)X$KUteXO31wnQYFAP#_wDKpPQZ!Uz7?nCL0{2V2(&9y0V%R0+5XIgIWeU4 zrxEhHe!v>o8=yvW%66T|J4_15oo$&-sQ|GI2PV2Njf*#VS{MaZap{%_>eZ4O8}*;2>~_M>)CrbCFly+P)jl%J{~|uq``PHNBc?9K*S%CnuhwFmKeY}dN*`5{!AmSV`pdZQ<`f!u4O<~ zJ^54fcGRCgUj-t@H>WI)sQF_}!#T4uGlCGi42r}_yhc$~;io|F2360qgWS`-Md`AN zin#O4E|z&?;w)bRdp2)!k3f7)Zjg&CtA7zd+j7qgGW?aLzJN5Z5`SzPVAjD`D_jI1 zu12;lCCJ8sJqEVFHZ@6wCfC=eXO5f9*JN~_&dx+@QLE>fmBpDF;=sfI*pkN*0N^!9 z&>VLKIn|LRt{X&;;(imU#of1--x~u+r^}kk)IG&6FKJfE%P9Fjez$f|AW$8^Me%Z+ zhmmrG9|K)IbUklQ*l~_pTKp3C;wqCIzknLjw|Cwu8W`fxAVU^x5T9_;$!d1_KWzl^ zc~D9zn;g#VcxzTz;<+u_%+10trG3vtG#@7NOJ~^09tsHwz38HC{dxr%Os!O|wQ1r2 z3glh6riKdu?eUi&JDj#LOwPl|uaVd|sbj%_e^%72`IHkH2v19ipB-(e$Pn7=P2>b! z?d+AV2gcrndoR8noSlrgyx;Gxc)`|MdvA}fGG`pnxJ$Zdrte1AtNLk7X8{WbQkrfL z?s1-(E>iZVS!*_iSf>siTzkr#LSYY8Z`>|=NX!+}r3T83I`$F-^rCNg zP%jtYti{L)vO5sVe19E@jmh|nbdiE%Ruqvf$T3bYP64HGCR`3WJlQ`uS(gQ_*&MGe z-GTR{1pYH!q^VYNd|HwIxj#(1^M1wY9XxDu80GAPt#q%v6()eo)d6Th#sSbV`A#gl z%gsRR$A9s%t$gd1@WrOaIQ8`Q)+-G3NcSyP2ZyPuuvxJ$euF&idd9x6^4`4UH3(Oc z2A47io)GGh7w4M(Ol@Udzn-)7D+)I@lro0Z6c9wC=2U|(F1Aeh&&u7 zpni_?swcj$4TN`3DXDfj`s;_B;KaHP8FA-kCVIykzf0@b{|TS8okCBrSA@W!qmfwv4lm)deV9KRsO1jDbNO-#y6YR zNJBd&WaVy(jf15nPvgT>0iBY~6zDXqm zUL8!YK7b$-Rc!L=%u{2Pk=WR&n`PujN2#X{El17xl$5Q^{Cr*I&bDOu0bA}wp$=LT ze(jqttOr;loOUWb!DfeW9kJpjBcM|+3sj;3cqCTo7c)a`ss_M)XG;Jxu~VyVw&LV z3p6T-Sa^bN4=+bkYaxDhq$XAoj;Dkm^>#&6Tft`bb|B`}exm;JP1#_oaWq zLi86c*QNO4h!9Am|H38S`K~bey!)^W!QyI}ekoUky#}yBMl-M($hhhqldO?>?yQ65 zZV03F@`iZPZH-}&(r!sAb_yaZHems&XJNr|e?z=8QC4ptPp^hhsEqH5T5N}^-_O$* zaWs8{%~yGVHp8nDG&Q=oTZf&rTujvqAheV?^3m7Bjbmw3l8uViW85EV{wut zd_Y`j2?4PwrKd_aEWp`Lm!si&W? zNFWV#RXQ%DBL>gXwz%Xbmo8%Gb9~6Jlj_%HJiV9??`!4FbZSFKLw+@!C1zVguAA%`!Uj%~eDO z?^(`Mg0auDCwD8;!EDIB$(<$(g71$o8SW7u{WyPB#;_r8dJtx!ns{bJH=(FVb>Qvj znDH)4-%RP!9&pB?=SeBnzqiaVi`{YSu9-?@z)++1n*4DFwysCAqM;3Q7D4Xs2s|JA z0uZ*URqg6#A86b6ymvb~P6thA1f>{5%@1_%04m}Fp^5*{8qo)b7gpC0KYb65xPDt` zs5{#B^%0~)P=-#$lHw^{-yd=%M9aaaE^2Wxm3A&AFR#B#FuO-bz}vH=8%z|7;gttw zFQfa_)1%-_OKWyd9+XOADXg@VK2lNf_cehbO>_@F6;qUCr0gHJ=dM)Pg_h4N3?4W% zMQK@qs?n_@yquUyIe|7V?OO{AoB_b~Nk_9;K3E?1lYwzy6JKC%UNOW*I;W9QF;$}Y z0|Z^fKmE&&{@05LS>m9IU-R`3cT1iDw!3P2sEXe&mo8d&ShFp{oxY%G%;@bG9<7QH z9v+iLKt@n>&!f}>x?~0-F(W48H=@KRhOous05Y0QD(98Z&aT{=^N;gk3zuI{jU0+ zfGm9U$&^)IzA>N8Xdg(xGG}NQAWA7xaw#?ew`hGu4G}bqTV4oebr6_#xi1NCClQ+S zsOuYbX4;FNb)%Y__R~S%j5z@6X{*0f^jkh(5*a#UAERq^IhviFrKiv5QmsMI#YO6d zP)mJ(#V|E}AWG7Lmq9Qfy|ZjR`Zi0;`w1|C5fMiN7c^Kk2t@%O7J@3(xX-Ap4kk_R z?5WJ$=ls>D+DF$nLf69%?fvH8A`qYsY#zzrkFCC~jgF%kA3!~#QR;uGyfl>$>P+8I z@;+~m^En(9^e8AX0u!$k9WejkyLlN|UB=KFwb;=wyKv@>puf8uv50%KJuFqs7ueXX zfWKsidhG#-?kHqQQf8c;cQ|tH=P}QKD17UDr1}Sj4OJi$q&I-3aej}0_FF26qioa# zX1z>}O6MM9jgqpknz?l(&Ft z@HB$XFZE}mt6fm?TWfnvY38AI&b|6VLeQ~T`AoN6Ctmn$jSXVv1Z&4S00joah3iLv z*6u3HubaMtvo!G!C970pK8-sMK2O+7S86}D?9KRD?TLzZrHGHuYl@V0qQ_soc(uSo z1Y+9^2wK$xgED^Ejd{O|_iV|FWTQ|SHn7?wlV zlH)^pwFMo%Y~)8N|(}lX1MQ%GgIYkC!EpNRtV_p*bIE?%Rd* z>|A*N7}%Vj&u~Fl$jcP+L*d!6XDe` zTBJIbBVE;Wgb)-MxApgjo%j3e2Bu6yB%7ZHKsvem!+=1^NqML3ou4Oysuin%W_m=E zSR#BE*vpP%U9^%q6~V^a9V~f-#;^freo$Gn_K+Nk9R@-A#aVT`0{Vm9jd55~t5~Ae zt?S!f2lZUnmtxVgZuG_<_~89tLJ!dp_u+TEg9|wSh^4Tz?+M18s zl0%1i@v*hX8N-SvbXY4)Nt`EM2fY%5os52=HlxK0)gPRx@=0dSPnKR3Ft@zS#q2a~*hzGwxmbwQOCJNJ$ zwxY~4KQ2_b1z9o`tIc(3)T8tE>keKy<$Q7x5M5mn2@5JA=Vp7ukSKS7e6?Uzt5wB! zJH7NYATulDTWtaOOMx*TUPk8C*5*^qJFhkUaXXK?`ZrSh9<0Ln z=VlJLS)GNr2ThKMmGuf2SwN!h1R-#UauRG+mN!>My3b}3`=|1mynRH;6xq!L=Eu&uPa1LCD8McSda9Qff)Q&?w&XLlQ+|Ad((|XpW*RyU7IMT z%o2jFkYxuhTj;1y7&?=)&}aOzc<(ujwTz3ZkP#?jh-mZiW8fBsn^Ev#P}Gb~%YAA_ zMrQYIfnVnCqs08Bk1|N3i2B-E257**=v!}}C6#ZC1M&Z!4JO{(j{2$%=e+eg#K-7M($ z-AnX{>&FRa{ycpKv81yXdpI6oJ^Jno)(+P1*xLgn7kK=zD9S@mfBT~RsE7UD7iS1w z6i_LfG}J9C;l_)0BC$Tc*m>tZuA;S?3rA(!HP2*ZyiS`N2_G{usEqr2=H95`q6oW? zT>_t7-ceeArJlJ(=N#5rc?Vmd&Z9g6VbfV>{`q7ZDIFyG>_q>8IRD~mM$=>>-iFMg zNeN{&e$@f+lmWsg`XPYA!-&ubUTiyUR({OO4|!WT=Qn^w9m(Lgp^Q>|UIaiv8rCCi z-Nqj>gBAf`axyYW5selSHxT`k;PuPGYsSZgfWZJup0uMxAGh%q9rJ44?Ox;1D6rY3 zV9!^P1eag?rqJyE$h}tTc2*RW!ZyTy5_{%xtd+6=fTF+TC^VZC0p= z`w_mGL3rWFnLFCWOqke>(+{a(9yuVuch+b_GG&KPUtP@<-QO5V+|B&QS3sx!gl(#W z#qC)MTL_=zVtKEqqgONKZ-xh%CORJlQ2Ih&*0B7b$P3MeWMlWYFsbPVyW|6tXRv36 zw>S`efBnU`E~xXM4xO|p?!Us7%#6sD*AXiIto2*dXG&569H%V}|44tV)pLnBvl#n% zZ8W=|##!IL8`cc{v9ic1lH}JH^EqfLgfM0(DrYedU}MAuziUvg<;FjFhK4Ql`n~+2 z%;fkx!Jk)u&c))9j?qx=z$^PYL=PNZc$N@3*EPHZ$^&KN*5)e6!nAt z0m$LA2v$H2%4>@zBQ)XI{GVc4r}CckpDt-+_8_fdWM%rDkP{BER+Aqst$15m+6Vsf zoxaq@RF6xi!VTcBU6;Ld+xUVwEFF0lY z=-VFu+X@2GFOpO7Ym(BfnyX7(bo)6rR+71kc)P|zd5#rPTy*bRFV`~ur})u&!P}$UyYP|?Z(p6k1_)jylOf()uiB`2oy<|EKibyI zkAi|5l7?jq%2MYSJ7|kDLsrV_b}hT>w?;eao_1a>!)qb}xLUIPesNZx3-2Or%B?9g zW~kf0rVP}b%-YOE2p;_TW7b0+c_#HcSZMr!U4XuEG_;q$Wo!XOyqdib*?NOI`qqr(IWnem zSJY=A8wJCeC|ffj9|qOreZ?Wsc-rPjxPVAvk`K^GzXrJ3K%kU9?_WLn=a6!~wvdE?Td5ztIO|7g;`!-S}G$@&YweO@UKJv3ClbiCA$J~m} zfE4gm=0Gn zSg=sbgQKnk0T28r1=A%4(ao)I3SO*TCkxj)W5E=GC-#C)N@uK@II)pn@)s|9{;2A= zc>ZkOPQXrhB_xDtXT6J=7+O+hW3u}yh@u4Nr<+r@DHwCTQgJ71=&S+I8&}{%=TNI~ zRJ7VcYTgw0$o?s{0WB&=lp=_gS`N;t``emLZFx4V6bzyaXuc)Z$l7$St^_2XlnjYb zdv2>fc9F5cnY`kyOEAQc?EPD!u2rKQ3`XIev->uY;7MiLFKt~-;mynTvoVh zS=aE-^i8oYJ3LSmoL67NZwlQjD7<(8$cyQt zXK~mQf;Xqe#bs@pNq?x%Ig~V0sZ~;)`7Cut|KT`ki&K$ct_-?h21E)3LAO6gv%2}M z1+58P+DEI8C#JczXhDXTGEriNoG1N?o#&Xz=!_=Q~{DyAE%@SAx%qlENSL&o>$GG$dXIYuvf5 zOLs-3KNF46DK`lCu%UBjjaO!oDU%3aOW2#2$Hl^fNal8d`^2`-CVlZ!+1F-g>)%mK z0ucuuid%azzUXrSMJh@9IPd0nPNys6c&49c^#A6%OeE=EQh{S|MIf6ypHSUlNu5D z*08DLFYORxh}DOAlZr1XWqG{szob;0il>Wyg_tt32Vb|SCD#CECq4|pYxq8mMLn&S zhYzv)253&!eW_`Lr?J8V%!OxLxp*B}lXx;_^6nrZ4JC5EuLG^(9E;R(4OnzTg|;atvOj*_Rg+wSE#Lsb!rc| zPdt-@FOX{rD3-uW{|C=R5Fp)m;jQfXiOm{Fn$2mS?Yo{UkOg04hZysfE%J4J1Pe^E zCcZlBI;KhdMkq30CXZ$-#Q1pn03=c-27!qZ*;Yt^c(fTTNgKDVhB3^vA3YMh#x}{u zDFnR^wv|nfI<1Pj{7T(;dKcJLYFHOezcgXv^0q(d!ddrMm*4-P6*C2d5i}+ZQCR~v zR5S-dc8SiQ7peXg>0t-XMSQdeg=wo_EJOPD$U(@c9MiPB_slrJ!PbD=Ya z|3Bj?jEY)L4~mnZ%`J=DGU#7<@wsKJ-%!5SXP3yC2i~OZMxU)$ zn-#>|0nAe`a?SdOBP_ubwuM5;p3__s_GEAmauKzz``Fj+@5ljx3U( zC3lAFXz^;p`!$+YsV@+t#D+Ih{{oo7bnjChosP6L?U^5wbiy9nIFeWu%2z||^4UIU ze5gm+EGq?cB@ytX;nhLh!588$eAE|eGeT@L#Ve5oP(z10{(?n=4J0g`POPE}$uMO0 z2M%bOc8S)kmi4O1i-LX{cE!ap{#l5%9?VLb?DS;v-P4%i59ajaZCWQ5<0%P0L^kdT~NIywBpv+i82f9|ynccE*1cXQRq*Jb6uX?bsLQ0IikXH;r88 z#OK*JgJv+8$68j_DO8#b4g3dP7bv}Lp^3Gr5dBVkkvySG#j-?k+!(VtmXK9Dnv>@0 z?&utklnzIh*^qMD-mpSeKIdo|Zs-Z+Lj?jR>R`}6Y!@Ge(4GQYEcc|z1k>+M3%x&% zG;`RS>6gg1<8$!9HbEjZlzd{%vUNA3a!*u-+lzE{mIxxV6NS zT>beYU{>rF{R>+;!5?oorJ~8BXChoxKK|@wN7&OQTeQRMT#xjBd|(O&@&J=5eX@yc z@D}j#d-Y_9?j&(HFncaTlp~|#1{RC#f*-FN`1jMTI$(S7IZ8F64{HK^lVHk4lH1z(%Um+~VMY;|-E@qv> zu^UXS9r*VjY>1F@gd6j}ZVSL^4irEZ;)x@H<$sFjS;Qx97{8Cp_>wY;~@bAMg zPT=psCBs}sd!P8-U0ixE|Cszo#11SAbce%A(lnU%f-4>}&z_ivjkR@U_s;uC9qob1 zQz%{(v!@>Zr)I@}6uUqj&t;ZlZT+FOk0cC(sH=UgZE3-DBiP*3ESi`!S4h<@>!~j2 z=_y{YFahR*&#ZSzc<9;iRGpojg*R4L*Hqy(mF>86rkGG-pg+PzfTY=S2u+&Ah#N+( zlz}o>kU@tK*d$DeYEMzhclMcGiJUNG_U15@mwoglj)3xnwTpT22(H)~IR@Mpgpb7lXWhd>dPt#l0~#2#GOylUnd z?k?}gOB3{6^m6@Mw{DY{EtYTQP#Df_)IYvZ!Pc-ql-!c84LAU@ z(@I&M&yK{=XDj6)+Si{d3@SWak5W#y#w1K2D%C=k{2_3XN;8PMV3p9dXH9k0P0)?) z>#6rndtn`7OH-y-zyw#*f&zQhq7RW$rw}i?e}}$KU4ATdzxmLwP=j25pMaM>pfpob ztl?kgG}Rv&8MXd&A%3Y;JZnFtnyQ@SccRYl=}ly6sP#JaEdy)w>SS|mbi>W{#*CYw zz^i9rFJEl_jdHU2tW$XNe)k%PcT%a9nmh`f2H{Y;1&PWAg?tY=BHWfOq>Mql7g4g97$e|At2p!S8+p-9ba! zrM!TNc0kWNSKLZp0Q&UwpfqLXVDc90pe_OZ`MS;ZYW>Xf<`SgkiI>-V#|w?eR+EJ)sj}*~d_eXK!fjUB%$_;fr|>_#<7==j@qw zB-HBMiM-ZFHjB*?8FiT^AqB=}I@|>2f8~r#43yv~LZv1jdn92!r`Ui8|E5tJA!$8g z-FGZ8h-K{m$=QY#n$E`>a)M5D!OU2f7d4LQK^ykMDw%%!)K*ycKMxi^NtgyX8N3Gg z73LSjYTxUtiQCkU8O=$Eq3_g@ju-AdYaLl}?FMUgiuH2R1`@Fhce*;-X)tk9PyG-o zjWxT)4f+2mEEtQA>@&9ZfB@-B9vmaK#$X0&q60Y-hwzJpG*|VG@K@OSb4{iS;{+8n z(0XR8dmYT@NEYzhQ<)X{CIS}erecLm&~p3G$%6Q?l)bb9p3edhbzD1Le$E7xaGXAk?I@X{HNaHvxL`yVgkHn zpzfo%V@=D9Khat&k(EW)KjmG5H!Z%c#n&Nu4AJuGDOUZJu0buk*LK|hsSkrU;CHg# zkQp3_=Txmh&orRkA<`E4F(&oWpycEa#_%t1h?be}qhqZy3R&tB7rkznb8@||w+k-y z5`scjxUZ`I9ygG-Pp}sms~LEy-+f+M!u=%*F!ubb_NA7Q=FC-x`Ipd@I62lHN`jNT z^ixJ_@~tXh{!@n6ulI7ry^d~f#8U#l>I8fL=`(C3Mq@@fSM>l0HxCb=P;0u1Y)t z1_KM)HU%;F^!$T3gNed4NQBfH37Dy4nzDp%+Fyh~aqOrKNs&k(V>hX}ehw=FO$Gih zp@&_!qQw)N9<*(Wn`}Q!ujk@ht*x!a@jsZ?%bl~+(5?*p%6YBXvztmmU6=dT)vx(2 z>#>17hS`JYT9^|l7diPqX;fwbB|r=U3E1hnQepkJB4Jcw&Vh2ooG^lYDP&&5*Q>I$ zl;1VRHBuy)@I)kEZnr3)I-let;X%X=(zJGyIu9xFT?`g1$uO#`d5ooTcb{`^pT7(- zl*s~O@JmD;WnfVUj=!e)E0534DdOUMAQR!mfuHzGe+_)*6+V|ykC9g>5a!Gv%5)T! zbt9d@D57uENwg=zj$@m|&;^ClgUT0eriEgi*ggg6Z%P*9c`=a%UXogDO%Oz2nsu}0 z&pQ6MK8w%6GnEyq*5A1YN%zybs0PMAK6~eTsD3dlilD&n;uU(>cC8G{$)x%Uwi;R2 z{vPN)Knq4AU}rJb`K9qoW3o{awUu#0DFZVqGT|Xl{L(?=5CYLFwmm|6bjkrRL(lCa z3$}&v)7u$~KI=T(cq%fxMV0%d>i$jqNn_~BjoN;?7i*hoPIUFPACag(A?KeEySK2{ z$*|3u$1Wsi8u~V7LJwzUGpr96E$zBP_F*=!u^JPT9z94v@_|hMHZq}MgUOJ2T?o;I zoHz%(d?bk9%X64pm;$x``bOwJ=I&bm0k4RAVkcFvav?YXAB^Cxu$IM1wDe?uZ=>4{ zXgy?!c8KuHBlvN__-J6kmvwfoHdZf(^*!(Fc85y(h{-%PhPh@D*gNmS**J7UCX%uA z^y1tMggYzlha0MlV`~0$!Op<(fXOC>h7&y#UxHZcZ1_t4Dfg!{R8_2;aZwg_K}}^0 z-On!lBeK&zz4`WeR6F;uKgDWoH44LU&p$mTpZT~UJCP3|EM_CfiQ8gpAy7$=l(uKfG}i4`xXmu4bEr8vK8J5``qnZ{oy@FXrFdV6h!l<&M$cq%}R;bK$2x`6&E@n2gaFq zz8A*s>&r7aVl0;t9UfGrBVHJ5pzm1gPy3(z<*5)Rkb)8VpM>J=M`Mbq>&&t;#8xl_H~-+1Wi~LjJK!fOg{ZMA z;4fblIRuat0IEwLL3!kX)O1#-PS$%Ldj2SBGzSF*K~PDHNE_jB)^n&@qe=^d_2wrj zG1q5rwK$sAJMKEdG>i32RD4-=Is&1ek1)ywsF;`~4Af9}HXh6PfCpVN`xKuo$>*0r zif7D^-@k0BC%2lC_*2(W7iGbC9m&$Q>Dr;WW`-z0X*6CR6q6~m*i1<63>ak%b|fmO z3zyv`FJ)quwkugj9plcw`!9t^FXS_--AW-&nx?gs={a0dvImYg!VZ0+*6(No_c$It=B^%mP1Vxi5#D zfi>%&+rUNuO29JcEw)g!fK8Ir=~S3pU}7vd;!r6Abzw7c{x0t3QfLHovL?GT^*S}+ z{WyO#O0x(R^-MYGk^?mv6vDW56SccR{qxA?VE zAF$*m=S+W4UcV=jo=}2q<0OovWiYuBi>Tt;o0gdZjb+j02%Jyc9A00?q5csa-%_Wc zw75GC&!D*ss@K)g37k-TD0{4zT=`4rR-o+&WvdR3XjN&zmK_t-OW0s5fBT#gtRh*) z(kNoQV1N&$GP9$3Lg@5?zi=?|KVo31NOd8rWXh5xLg8xkW`D|mR!m?gY6 zdV6(#-n~N=2AQ88Pi?GpXWO2u_XVwuC%e%KfJV~>@tke(N{cC>) z&JNXo9rZv-_>ov$7( z82!bO%95Z2!a#qZD?`n^wT#P!s7HuFH~dyj^y@a79xSH4Qr)B`9dUK&={Y|C!9OQD znZ>6D??b&QW@ZDr25c!PsHgmWnifgzZ?!*5NqPbtEoNj=$8|;S=r=2$|8vHb?LiY* z1|lYvsAh#meC>0@)|^xleMgF=Zovn2pfYQlGVa_RmTS+csUuLMW0_K^_~w6np#Vw% z#!dfDlC}uMi%BN3Qb1H2h{gI1#C0Tu^gA^yx_R8M`%Eq2`UL=Tgkpd7M-D&hsa=dB z7cyOJhDRiX685-1484mtwJA58+X5f@fQG^1Kp~ZqkmmWM)1AD*J(Au@bW=6_o?EY! z_+2;1YzxcS{lNO5lKTviN>m(Cox3;G@Ey!mnvH1cTx}&PucV?S*k;gpeh-ISvURb4 z@dglNd_Q4qwf*Ofze6(&f9sJ=Zx_pQKI15&C|fxS6Uo+6e?x@Wz4H3%6LuIDg~sU< zob_~1VbylUjFco|tNX33%Pw-!11DUG^Xm=TYcJIH%A2~R_?EO*AO+*u`Vb5=3fo$+ z%0w`Gw$@C9xu?q|{&VXbr-F-+4e7hR(7LBeV*%~~|A34WkGd`@qGWk8VpssS;QM{E zPAf4)=>yHkDv_5O48?ppyBHxWJwM~<(c})XAd6Q;TXCaLo+=g9F1Nt%h~sQ=v-ED# zHxvNVASX=WmE1CH%{}${q+^wVYJy$y)X39)KkoUwJJzCUi!Z$sdQFOKo&Fs0(Vp$j08=F>&p z+JqQ(p>}~JU<_uw@KgACUz3j-ilqv)bK7Eddj^q)8R?Cb*<25qA4j^!{lZ61`ndg4uqE*w@{q^J3zd&${s?2e{Go2vo;Qhi*8{AO@Xmh8 zAE}<`*A?$5kNi46DpEUF>Mi2@`jl2N+(>qs>y`n(x|TRdn(=x#cvviQFi`gi*nO;H zB}Uw*3Z^S+sNk6U=q$Zbil5$=H`wtSnyiA|dph*#+~HtZBRmCck)Rq*VJxv)vYIKz zx7}!Rq$0Q(*eYx6z^xl1MPak=Lm znCk}*m+t2PvNqLU4_pt~8!J#E5^7xg9YHQ3Lt>{ObS_q+Ps+r)Ep@52g3@=^`MXPB zs3&gk%SLN+?aN`7AE42rqaY3WoJ*;5ExpGqez^vc7PbydbpzBYF?d|a5FK|zei0=i z&itZ-Z`m`^Akh5HyiRT5%<%ZlvQHdV5QP=L(NA-gIX}nddrUw4wtdHAgApCunNp<+ z{S?Yu-J?xILowF5h1_>pmzClV?>Nx>d{(Q{x@=bz1%JLXKs8@;c* zKoklFLo6QSROognTVh-haiPqd zUVP91jX-QOSKYaKiS$Zb3+h>LLxL|b)e47LrN1kd`=D{?#Yof2g~2k{a(nA=p7n5* zwLEHCqE8%^5S#hl)wqD1`eP4nBG+j-jylD3`T%C2zxz|B^VeuR7@q4{BAz+mzDcD-GkTugzWmUf-AD9 zY!Q(Z`|m}c&DFIGh~|E_9njkf3B~i(m`yU?GR`jZecHVLjBWFxDlp9VC%eaHI@huU z5*K}0D(LGdX83A;jEe5pheeaUeeyrMQ6I&W>fJadxYC=1b}Yx+TmkyV2Oz+kF?T%c z!G7NE`ln@|x}3>=c-)blsx;Om;o-F3<=)U=@Q{(&3XLtwJ45F~f1a6De?b^CfzYiM zB=_XNOVbg?5V&^fo=X{N^$U4EFcVjd)nUpJqNUI=!MYeQiHPp6(V?Xy+YWCRW9?*Y$wDQ97AK#lso-y+70H zA3*oY0_=6#Ln=Q9;=j0Ff2Qx{m`Xw-OSX5KHy?j#o$v`90fSd5ac zI{NxRB(Q7ucXNQ1)>L{{90}Cay2fz#{Iwo@nsd`dAcC;e;_Tu6ME}09{K704e?^8I z1o?D26{sQW!h6=Sp1yXz2qAG8wV#qeD0f=w>$O) zGub7P)PM(y%WAM729vG*@ST{5h{u5{-A=54_x3^;HANJ*{(fFWx2@!pDY=C?zpL;c zawc3CcJ*lNpRgWgXVch1C%KATb5duO? z#7^3rX6$OoQUD*6-CIpS_Q0(8&xS)#h$FxeE;p-1>w`KPV)MgKjib^M^yKs`OvNHH0GDg1nZg@5i9QJc@WE zI#QWNLQMGw5WFFarhSm|E(r7u<3|)7T_lYQQ)bTTcZt=b)sZw6vaXuyeDHhJlkL75 z3ln1g^Bsy#Voo<5$cEHU@+lyeLRoapxa0YC89A=}+n36}H5eR7p(`Za-uqI8U(iR^ zJ-g0bgP*V4M*-dd2VrfHDeqag2MD_E>tFRs_y z;IRZZOV~aZMs0VOr>E2)+bC7a@LbPLf?cidVKk~%RBI&A;ptcMr)}~Ad`JGLUR-u4 zVqq9-8(mr(J>tTuwd`0EzL&2pufH3gb>w_U_mukTKoG`rXe<{Haj3|58!hN{PilOV z{LbI)6%gcvk^2B6n1yXtGJS)WM%O(%;2=%W?hpQ{) zn}u*XSt$BjZ~Ple0b(tiBfn<@@5c0LkA7aP9}lp<^7De?Aq#wzJ6KDLEEp!Jc?lW5 zH9RueebfUUNNo5jCaj4sKw>MNV(8B<82|W|#LiLGMj1vND=UAOHC~gM5_{RFww6hp zQ{=qg)C3y7i#wI*M$a6=Bp1539i-mnjA+Ey@-%?XigxWXlnmd@|j0^k+3lGxHZzMfv6u4LUqsFzl?Wj&s)} zag-&w`br4^fydYu^L=~a0Y#-8`&8i%z~Hi`fSczRxcQ%H5SZqBHsIXjoMpy>Ab-5= z*fai!S1S0XxDgr9C*qfSdJ6SKQ;u2dg8F&ifr(Ea!r|N)@RHkF8*8qKwQWtL_ZhPO zcKU~6<~;bKJL-6-5x=0N;S6RZpzx6ap7W!%ns0XPMWJeI0{6+vt~uq#?U;8iqi?AW zC>I!?T%4Dxu^Sd2SqT*zH9aQp4eY>dxxvl4dcn*WPXlK=vB>8+f4fmOgE3c)01rlg zCk^%nKH(?EJlCm%X4LoE?s&VQphACv&B$eIX2w$fU1ecV;&M0j#efsfY@)1ph4&TW zQG2E7MgrPvC+vW^_m)J=cfrXBRM&>o`QbKJyHTquzCYhCw6z(MQGDL3jn#$-#7G&g z(uO*4&rW{n#u#&MLqkipYhtfJS$7WLkFQ^9&s1<|zy)aPioKNSU2AV+SS*xT<6^6x zmwbg9vwKKUc7t)34*tyr8?Yl(mfGoj9k<(-y$sizw-mr4?X9g(!V9OlmAP=PO^nbM z+K{7ZMUakY#|$K@60~T1!Gi87-U$8;t)Qia_hPzHR?DLV6$PIF!F-{tG1u*F*6wag z_eQ3&@2@!~gI{0`7Dg#fDr^?Ln; z2;q86`vWR=30ksFR~jl}9RT#aa0-6lNj(Y*VrvH) z1j*GDUtsJ=*66wgFWofabmJtlsU3#+Rz{|%i(D*Ma`;a<r1VzM;RKs4Je01sfw~LEE2&M(~}>(YK#C&n5l9(`9`O(-OuYKtm_wIyooR zpY3}vHDKvwY;p62v#KO!P49t8Xep346kbQgdNJ7lTB90$*wBcq zU#*@ROH>G>)d{;zvO$%P=v; z}gNg`z~sH>*<-9 z$&IV9!w+B@(BIIT4>E97(-6+SW}$|LXaMKvPT<=VBkW4>X7!J`kU{c_DZ5wKyNWFq zFp2I>BWiMCrHyQ9Y8uJ+SkGN)wuEoELELNOzKY!&9I6-;GG(GB<~AM71xYIvDf(?# zA(F+%M?J=Md<2nH#yJmm=YPQCD9-sj{wTzY={ppRCFZ4svC5Geg+e8JF&rqUq`#bs zy>;#f@4m@m2*b@Gd27Nk0oRqQ-Z*YMikEx;1YBUyh_tJ0vt1A<*=+%}Tpmx&020YDI{5c8Z;Utb5B+)YR& zKzfo5A8ZZiH8_&+a#W{4VPJZ#oGZ-Hna~)EFtuBkkl~-QDoyGDhvSHOY5-O6l%%=% z9WTBxMd2(k;viXJzlS;dR*Yg*EX$_;8NpxbJ9e~w3~z{glL(6XThI_}<+2K~idjXE z^%NUWbrVq8o;sY@Yw;x#l&+vD2-@WnWs6GFy!y?qJb|Tk{M@-}Xqj^=QK=}UAt_}| zl*f7UR|S}>2ii(H;0J~;3lNT55eJ?bZKwKtV>=h=gDMf(Z7&lkXH=VJWO?4;w`t7I z^1m`+V__(hY1a0plNob;!~%GT{se~Y>-^7mlWrkA*T6hR+IZomP!T<_H9Mssm^O@G zxd!V?rg3P`h3AG#zi_!rt;U-No}BO{^JB>>Nw?HrIbV$V-RPJ26M5utRm|iTAqLfy z{Z;Z;Pvppub#aXZ9bSMB>wGIT;Gx4O^7ufT7w4IO?3z4^MV_BF{CFCGo=;<^OaQcT_87>z6!zajJ+ZF$nxR|qF--fa(+Mz&pgFL{`J2(blEPOUK z15X^U=7}h{oeTm5y_je8rSGc`0rW|qrGoc&cHjaA6s3JX7ryegS9USxJ13xEWnjaX zHL|a+ScB-FYX`lFQo=-}tTurzGt<5_ny8CVD0+qpp&Jyr{9ATb_pn~SJ?Wz&b97-tf-<-NO zlD$v-54sri1drV%$OWZ^tI!{~MylVlqu{PPTjKSf^@HS$?A=cVaK)ofvc+XVgJPhm zfV0T3jOujtN`&FC#sMJd@fC(>z0o%*e-PJ5hy+55NGT;`>3A=QF0w<1AIya+V#kPW zFcN&@L7(7KO8t4lTw_Hvs@EFTaU_;?gKcjZf5{T((>=g>Xj0zpS5@==#7ZwITYu(v zuk75Z6Le>w!-PX0oyRE>(?tG-C{sDq<&1J_Qbou@!aBeIZJp2Sa)HqjY`th4N zT5W-EZMM}8W;gc2oRMTPgV39^_+fSJR(Q6{-$Y-dl=rMtrT8NMr}Vq{wwJTz)6}it zXP`lJ&0u!X!P6)hhc^QMb4hQMgya!97<+7h(?+2<`zmM4CjuaHXaJ(Z0T0MJTW?ro zev(xqH6m@NJTfrNO3u;@;H>Cu>_$_%`CX9VWyHT{f4zRtllOlDMbWB|rhdvQi)(KA z`VC8)I!umGQoF{snsO*I(DTdk^RG%E;y&U^+2dB(*nH~d8i5-E{x?^d!qB=m zd!A&q6MAGXpI~+mfLgq&5WLKnmHvM6B{0ga=}>g|D<-6=wSPSTIZ{GipKbAlH@C}4 z!m>1)Es<86695#xQu`F}X(=I4#S#o8Wy3nB)NFrvO5!iQ|B+;61>_j9L0$J#M8vJE zrGhms4oO`6<$*;>8xpK^65A)Tz!}Ck*8$%*K}%5~cDTXnI{qbdTKpuC%LSG=t53DRp zuHYUEJeFb25TZA8ys5jdN;J53iB+t>4HOUL3p8YJip-k=A+C2>-o@TQ zt#kU(Oj)x=Q9Giixcy2t9ZgVkgW7(8!{HluQ@{khU=`N#-*#kxlw$6%0QHdBqe$iH zSh0zdX-#9e(J-5uKd2&MSA`8D(;iB*nVIEWR*;g2uGx{>fzzvFgsPgF3xS^--w6Y! z866xGThC6}4x1XUkbE`0TWY+8{z_>pk`YZta?H0E?Hs!lIX+CUzC3ZIud8ni7o3=% zpU2V&_4M%QwdS^QDwr7B=Q2P0(&_S16_eS`c4h<$CLtNC@q`#`40vuuCUvi1Kqk*U z410(~b{M)rb5A<;AE~$W8Z_4k(U~iF$x0MNlEq#jDIHAU8f~shH|C9sCR*+Y^-O<-fCP#Xo%sNwqltN^ z@t{$5#(uJ|gJ$;qwKDX*&H{Ii|Mmx&U@9KwVN0UA6JRQ$%$*`n)VTv%AZ zi0O9sZm6dz!i6a2yetX(Y`sfDGNYx@=*lo2){|$MbT`Qj0LGlv$9@&Gzkq4KAN7J2 zv<5RsuFH8Hh72JA{AV;a?{)S4eLt!y=sa|Hn*}ot(2Oc!P?ZA4^zJmx;b+YbTDOs8 zym`WCzbZxK5}yoPNAyMla0?%LU=L7)Q3;{2^VtS>D8ds2N@2oLx0Zw;=$looX3n<$ zL2_8R8|#Ep__}t|;YaD@Ah<;eIyrLqHl=rEMeAn5hWc@1>Gb+zL1e2xcu6)7h5hWo zUW|OwH^L!a3j5G-IO|uQJXf0Ia~Ykm#g31xib$f|XQ}G%rKmqOM;4!b1;%S`@nMPMxYqU7rqIQCJ)WPR8&tnbB7h0LV;5E(kG z_c^|C+SM-0PU~XA1U?!h&v1#kp1nfl@4<9ateA6!OM19YZ#n+9ZxNDwcUrvbd$>68 zLQ(u&;AWn=waVHx2}n5t9c;_fQ!BH#rgUsdg{01)EX%QzsvJ+xkCtWHB#X+lwATFi z@x#Jp7@t0u%}GCK)7G$?056DoZ$H_{*v-sCPA%34wPs5g5Mpxtf3(0OfF?a^{Uu>r zk-Ov8QxZZG*1F_IOEYl!BMtrv1(BAOwxBn2jd8+D!)gr&Ucg8-SAeZA?r-d>D&b*> zNSBinz+5zN+;btBOt4L%fzLw3nL)vX5n6H}nGmAr^%i>3d1|MM4!X0Q(|p{%TX z+(+y5$53dkLVUT-Z}9ss75MmEIr5^peNT2Fh$7JpVc=CpRJN(qhLyteKV7^LLJRMb z5cW>h8d~A0fF@9=f6U}Rw#}l}P~LT;3$?7XrZT{GRlnA6$NK`@au#KOv-EDdrbC7vEgg-|t6G~i;JlV-5chkw|p-TK(@ z;$5O}r7ua*qHYS36nh`i{?;3vVvS$u6CxDB<6X@2bqCVprqAWJ7~;O}s5V`Oqt&Z@ zk($_k4XQoS-cvi@?kK2}6e@80{a^13z(8TO9!tPNjA$A8kc}gt&A3s$$FjzukdyqJ zVmoJJJ5DS7gW^ItSJ>I+sUTt_Had~EzBXo(VEAUn2gKn9WSwT<2=Y+Zthb&svv|Gm zb#ZYa1id0Am>zaS?Ma&8CRVsIWj zmJj(bVo7%dYj{&2o8&dm#_Y1n)l?tD6KUsuYRpD-fAg>9kE)YX|zs*4YJ#r`_i z_RW<_aGlk?$ZAChOMyc5_e(LNPTrkbm4*ec2mn_T>!?4SSd0Jm5q|+O*>UysB!h3EZ>H*{p?j_4FD<8B zp+CB-mp%xf@82x85;p?&>9JEOWh}q`$~hZ@8nI{Of?D5)ws(K)Y~r_p2^n8Sg}*HE`a8Si=bhmNcmUci4%ZnZ#~#CzUUogcziA2!5E9rBqqxHX4{j4_k! zq_y1SdD1d*T&s!@%m66V15_QMil7VP^`ZIU_&$4+9n0;kQmOm}%3C!F+vzoFUb z1SE6-J}8(dpO7PxlJZnsXhygJ%2s1p^rxq7PsMJ6zDeN1@fGQ2so~z?2di^r2AqEp zG#WPQ`0;?Vv$u1RlTD@NqWiI%*1WO9%Y@~Wckc(j$x(({dv?+lVG3YysPWt$v7IFb zB)?pUc@>ZkkhtVEc!SWWwtlp7bm!=bxx+TLu(@Ju#iKJGsh|TMOy$4e z9>vto4P4s%d0O-dAV(WE<(3G3yIZ*6b|90A& zq4~FsMAn_=;u!ZyX$xNKu|zHOji{fq+0r{%dJ=a0SvA9Igb+qn6bTu~yF%?-%^k~( z2g(8cmqC>ja?dPkb;Mf4{=5oD8|q5?{EMR?XppHa`FL`k#nm$-P)6lBh%ig;AhyXN ztzE$Mr2ek8YH0rYNT!HSi$BtoJYXTgzf7B4aNdSs;qu636ETrIlHJVER1-Atdos<{ z!U83={XQLP2;;J;4z6wqC22}6 zKj-z1NZK>j^||uC_foGLDl6Kd!d2>=fwb&hDN)x%bm2oM2nyAj#lL)B=^lk zkyN?gZeKMykA@JdvMznb;);8`jq|>?dEe9@bLJ-|2i;2S84Y`bOU3@-BFA*xs$dwN z*t}LTd@$#Po!$I$^CoVd{nC~-{SoA-LgX$!?{0X*N%MogHEvO3i_4=QRoL{d0^q1GaQoXGwo<0A9cNsoSQQUHP zSSoSpHRi>YvLuCmfVcR@0xO1GMsp zdqx(zs%O-un-_NTOqhvo%!$F_W;t=fZs*z*?U7KdM`KU)2dH0=>Qosb{|`^eA#v!d z3xJPc3GCK}1feEmiyBrHr=PGXBuIzaci*nCO<#l~jgFpAn)X>U%WsM1@QhcDJ>%TQ z|7Ax4-(EuL&T3KNv347~-_5%bM`^UO5Q{4VWK~_W3z2*Ul>vpUB3c?eX^$;|Ve1u4 zyf4%PM+QD=JL&|DqGQwATBx={f0X8-XF(HR+Y81L==6wsZk~6I%D2VXGH< z(tw~#a{7EtwC}iTDj5BPk;v&~VhMyhNLdmCj531wsk%)wrQ2=)gCtV0~$@F+4a z3KJ~g@O;ikyn!r$>u#f=-@)=!ZE9sf6cnQ-ZnhIH`Vpd`l**_c(62ZvvSAC9r*Olh zl}>by&cfM*+%S|GylO+Vj2}v5`4s0u;!!e2ggRTM$U*)OA!45&Qky@%i>oVM!q(*E z4~aFZ0NQ>>Zp%unIYUV$Wz^upZrZ5sw#J&8UsGi}Xt^3%qtK12Z}oqDPEI+y&Ry>* zA$QEEHu?t0|L~{~)l0rIJ*K0t7aKQt1&98;px=G{L6~DXSb9^uu1fT5E{!+XnDmDX`hm=ZCjc|&izc7m0+cbFU}mJJ z%LE9sd_I5YUoIGfs?_A1z5eSF@={1<)453WOb=vw!rbYv@ZHDg{+B2p$-2egmhE|1 zsB{KDN4K?Mx%x+)Xe2J^qLk2k-LcRs9=qD%;>&c~{?Z;{yfn!Bt?JEd@2kFt%Ku_py%qn8KckCWq?=va11P321z*aaz>Bkf z+w%aTZENWekHl&T@CuB8skX zvEHnKtyS_S*~UCVu`zcxvd zq23x0XNGNdJJs;r3>P=bM!zHqYNIIzt# zw2>!0ZO@?zHlb4uY~(KG;gd4^qg*K3vvV^YhQ#54#>z4011aa+k(x~?t}uV0dBm04 zH+iH|BPb5R!6uV~jBtQc$ZG?=u1Hj^WP3^aR6$H!XcOecFT9xW?O9=gkkeQO*axQa za-_sEbr=&uskq8!ensOa`rKaT-sk4|{WlZQ{aZthFh0tzlhTA)a|y>%R{%1kGJHuP zgw0Qbg!s52yYx>vtowp)aT2&J7)-B~LlnCCeMO@zfYw9XfUczmWu&3W#trPT?{!~d z4)4ElM3EBm3-*UOhDI90u`w~BO(*+Bn~Qq)?cS(tnAl;j`Zfd&2^P*#-I@_R7#D)1 z%9?+p%Y;+nnC%T<04EEgBhO9rnFRJEzV2gaT1XWDB`Ho$VyrIuQB^x~KZp9uX}Oh> zS&;X78F-0XoLYDNjX~Y#3}qAk(Svr7JwtGUo5Rq6bE{Ru{NV86f`0d>)@SnS!!eQN ztIJr~*jTgWYTny)h+#rIpb4cgs@=X=@)oxw13hj9{5|E$ZpZoy^%30 z=u5ujs3iFbTko!S{`k(o?8nh?sr$OO-$Gf{p~m>nuDUhy7>UG9I-t?uJ3i#d$D>XM z+01u;yc=HGya*BzB8Uo3R=mOP6kF6f|I2=PG4UHmhPTAK);?CAx5xXsu^()&W-~xF z%ND!MH>Ahk*2hBL=7wcLqF>+w(K3bdCyKRYXTZ%;T_VZ_Y99eXRCo}P7!B_%s9=NI2PFLvc2 z!#lYscl1I|TtrOcM$m5d#{1&s;rTq~Binbub&YEAz_gJ(q$@s;^eGnDFJ55J!J6HG|C;^7mhpQgCmU4Bq_ocV@EX|!FL^oRk;~NLhuD2CGh|S&l6E%t(l==&49v_!_MZ_msI`1J zc5nG{0>oF$lH>Gli20rXa&3l{mx|JdE5u7={iaq%{!#DIs;sT1bi)4SrCW(nrf@-; zv6AmRPdO<^+=>j#qUFA2J`US=q80c`x;5_XPr}yFG)4Yv`urEz^OLi`;eW}g)?9%K zKtFrzyi}x5Z0aUWKjiniI|}$96jJwWyf%=$`(alE8n}X6BTGlB%%Cqdv|-bYXKf!jlEbGn`2{pKwA;? z>v?*x^Zuo1Xj$1#UaAj2mr$%-;>qUo6f6U6Xy^5lCwkZ!p8UVJwiGAkg+qQkIlXve zStT?FTmn1=Duz{jw;&3-A3$yrR|e2xXmd8b1l+d(XmTn^pwr|T*;4o@w2UT4I(O?> zUbhVReC+DxjJz%cXa`9hE;F`qO-54<-Fk+7xA`4%?Lc>Zc51OwU;Nd$^KOOX^T7{5 z#0{_xEC~!+j(^azKLdqWqq1?REi;xVO7|s^A6#6#z6uVt{~k375{O7}NT+8fMb>O- zKRgZmHjb-w& z*Xs1r5!UdHY+s^vC(uS2EKxGxjQ&;O%Gqp$H4=Z zZ+2kiDQQN1mQrux=^DN+!xs!v8Mi+KAy6u$0Bl+Ew6wujex+!z@`*Mr7XCP=y7GDw z>!k`-E>&jGb#i5oU24>6xMq@`bf=@8TQtXwse=Ox_18@`Az^;>F!*E{)YSkBy&nD@ z@ya6~3DkSrL(*c=FeH(XbA76QmvZPk1e>6X1;`Rh&F4I|6N!U4PH_zv{s+WX>wYVBHxPcU?}2u{_T zU`u%_Ob_&SBUnhHaq*+442`SdBt?C1*uM&N0NZ)Lw;_lk%Yn(e6zn6jZB0fJRoIb|VpE_g1u3}`O_7Q$A{d6F z0F~Pi#(E3{EOsJ0Xr^g5U_0qf6V`^hoe+S74wroKnttZb)^l&yU)hOvYBUYMw{BUR z+(eyLTREU3HEGy8RxhhWsoBn=&sRH*YVt;&8eC4^jROKe05EiU<_@QPCMNREXvtfn zL+TLd&kzGtR%(c7S0kx&VSyT`DkM%Z!4hX)NIlp|;hw#lW~0wrQrmOQb7o*$V=UGH z%M4WGF4>^dgaFfE=L3%8cd4TyB3%F+C!|H7C4z+w?ckLZK7PScIcsecRp!aRHQw19 z9(J`mVXDy7>W6c@yGw?)Zw&3JskHN;X+ssfEL&OmxuttZ_H)y-1Wi5wpe8j@S|}QZ zG*WB(Qs??EO?vB< zb8|^tn^Qb;S#vt#B}HD)2Yl?^l7{Aetq6QG@;oXE(_UQI@MS2Q{^x19EI*c-GR8;d zRF#{M-lRM2o=gGoO|rmA64kr+#{X*X;AqIjL9cN8Mj_zE$_vHnU23AY)FDKiRx9Gr zEa9^QsaNGev>ds#-8dCagYW1hIp*hu8`OV)c)TCNciYoYA-bXYUo3!csxlEWX|U{N`4(=}5wUuHh3R&eOwh7P~h-ec4R;p@PS55A8vfg+CfWBO5i@n=q5z^iG5|D5=owA+3 z6Es;w+cZQ0DP2vwg*Jt_#iEcol4k&SWh%;L!e}QRtL}gs-Qox!JA7{+txazE1IALr zi8W^LLrvtsR6Nv|_AHXsbvQJnXMs#jZ>PvVC2bGI8V$M%7*BT7;V|&p)S*{`jY|_B zN!%BA5@rH|_rDcA7)yPo%>}0?EbJIH?x~z=R=5RmSf%P13zVUTMu+;;#KR0@u-O_8Yo~ zx6A;NvOWhc@QysFkM)yG!W?h6XUFd)N)#nX>dJ{eG2daJ`$yq*&~ z+_Y|Whq(Dw15``xlFK6f0gWGw(ZPbyg@gK9Ouqg*9!fPYVVD&gHo%5Q0A5I9u>y<+ z*HyGd{|Xe`3|#ABT?m=l>aqSN{8vJy3t9y%4yzAIZ4kl-2QJWL0Carch%Grp{TWd4 zDh$9`Urztx{)Y(y6#*tjvHYO(5OV{7S->88=cS6iBElbd3katKiA^{ADh7z|fS(>E z0BQY>$Nm}O`3}ef`vR~CGRbHnV1j|U-gyIK9aTqLJiH>)m-qr27=0qIi54+0kShs* zgC{mez{LOkibAW4tlc7YN{4uC1VXJ0fD|`YE5wKwEFces5@2T#&ri1hl%?GOW3AfI zjQ>H*izrQ1An{$uK6P1C>Ke*}PISSyBaZ@rv7JW^)m0=97$($dl}sL~bNdaCM_f(soUYD577 zpw~@H{ob9i$xq=t7vX#4A(dCbZ`*{8wXhl%w39w$y0OR}C9W z%O1``$@%@{D}M$v6oXrwg;AK!xP?KMn;Jn4%LCM>+}jq=%=blJ9v*#*r+r%vzhqK= z*;sh+4-_g*)RF%X6Z*$Ey4C>Wc>Ph*a8<#Eju6aAv_Cv*mCS%=&}wIP_w)b3vBGfy zc1vxkhyLSDpbZML_TJg~C?cx{P=yGqs<@z4fcOR8Vh=Dfo6Gg});}p&lK?<%7!Fv+ z{;_5)z?zBmw_d0Jh~ofwv+205guufpA|##xmeV_X*W~_hB0fN(2hnayI?G;zS-9Pv zE$aQgbVdA$kpWmxz*OKS3wF1eyuok01k{7hOE+gbJ3Z|5cPV@%h!4RZKD42uqhs>@ z`*-#F+4LGznyqaOQ8NPzu5HG9pn4Z=bZQc@XkZgzzJvxup9Bcl^x&H>*EXG23S;H5mlZc0s`R22;fHYY<#R9EZFMdyL_Ym)3tJL0jVlGX6k9v z6;PB>#2=uaW*|$Qs^$w`j|`iKb740@Oh-Z~;p!!>YGa)nnKTBJeBwlPzgXq zAXu=k47LE?co3AJ1t=jm{HF=X&O&G>dxUPy7lb_=EV~~a6~F;8L1&1>3}CjnFhD!O zb{D7qXJ+(+m{%2S|A446VF>MHjyc}-@9bm&gO`}|)eDgi1pKT5EWoPfQN#1^S2;02 zA=5tF?fs{L83_R?shw)C1n}Px8^r;ZNoQuN^X-AzL~4PtdPm8NBL4AS41nnL|F-=9 zsQkd#d_;bL-0vJ7axDJ?HTfo+$pp(nF*~&8KdNKkwe@&ZLW!)P< zhPtK?%XC#y4O(10AV38#m)-m0MCwO-_V)M7M@L67cweFQD-=&GJRn%<`U7Hw8?agM zQ!ew^mcmc1lcnXVAAe%aCOYgP@(uFM&SYpGs{N4KqG7>tJcR0&IlVS5u*cDWg&VpHM!+|%l;+xnkJM&C&K78|RXlfcLDrPNr&L<=67NL+x&=Zyo+22=B3;8N~3Hi94k}_Er zgkfcAX-IO_XZLW~`c4wqGINy%%68wYD8L*{c6Lh2U;Zld2{{Z(xCU^2f0ZToX}oBI z)&o@!W$q-WmH>`x*9P_9#P#(_wcX-PR|!{}d&=qg`N6RYTd}famXPj`K$Zg(ag=nH zC+gaqS#I8L>1pYyJ;PQ;1*P@1mH11wOy~*wW_zn2*i`A-D7SqyZ7C1vBwS)j%Jn98+Z*Rt3Qyhb5)HmrEVZ9EC3K;)w}Nd8=dr}?~uY$ zky8;ypL;U98^M{5>#`3~kx^y+{ktXF40b=Df5ykvCOa>UoE;pIPVdAdj`M~j~DA?vAvMH+S!3z9~_FGo%`HyL2Lr1 zADoIc1;F6%6F|QlVYdTr5AameyiL--bAM}d|8jaVp_BiU$dCB=nNj)4n$-KtL7(5& zHa5$mNUgWx2^R=sT6}+H12i{Ltf?jhH?jfPj+t2i_3^E0I6so~o{6ch0hOOwO6U7N z_Z~HVCbRpW|CHsm4GQ0r?yoPbBVvUR8%a} z@wuhD4xSm>-eRdjRXSN;=mS_X2w}!S37B58NQVH{Zhw>K9jSg*b9J!@gSYbWzCq`e zBEdyh*EgZ@C4TD-mC%FlN*Nzap7}6~YUwDS@&anch-%>nV`6SDgJ&A>UZWZ^xi@Eh zw)s7yY_!t8C?yOF7eAsij0l&>%fTy~qx&59+Y+LHR$kW@V7ONG%U`U>;Aho)ovVTL zZ4wwv9!4##qbgka1>Lf`_K|zr?wR)pLBlvrYPT2!!ikX!ye1G}fc>78rSXegToaK=6 zaH`S`0a1Jk82J2gn;$FDy8@PqL()*dJ z09-Oea4wI~SW^Kk>B6cs)+TGt^ux7`y7m|s8I{ER2{itqZ@n(A-t-Yq2Qo80q9U*P!oVLtGmx$i^t{Snhha?+*i$SGpw~%z z1ACaRyto5t&|g@Z3u<@$QI&*aX^|7({oxGk8xB0Z(^!I%L++^M;Ia}Mg!B^y%;Q&6 zP7mAqPax^=gQ~4Vf~4=*6YRbMlBw3eExGwx(#8P_-Tc zt{zuYA9hNVqnETytakZrW?xM$Q9XZ_eB~9zgUc+AU4rh;2n+LIrw*J> zTFBom+{MaBR(;m9J1JVM$qEZlJr?J>S(g@_xY)kYjj8=R6WV7n$JYM z8lVjf8r++2FWJ55GBzJ|;rAyugiIC`EJO#!zS;6yTwLVXdSfqyYt3MS$OR<=RB6~y zq=62~63((Q-RtVlpl|aICLa8nY8e~sXxQtOg$^oU4mqOXCmuJ424~{{ii7I=u6Npvb)6o(c;e`r3H5Q_^gy>fIU9b_l}R$>TYS2~ceEh}FqVf^FR5^lQP~5(-t-3h*AeW*v_^9wRIu zT^w5i7=ss#>QJcrI(Y3vsB7;=^N;Tgb!ew@K-=wn-i+a-h3dGKL>sr$X%c( z?n%yr73Rr0Fi4HW;$Qk4(?B`$Cly-bXlF?rmB2#F^#SYUPp#T*fI94QpuI;3;v@tv z1oVEyRb)TsIA&OmA?M+Urz_Xx`1E0~jhrX=i1eNjdCgB>wcI&=y+;cdP$}xzz!fgb zFdf?yWN+7+@rvkvBB@tB#4RxWWcQdsXv9Z_16O5A)kYxYwxn?WXI0L&6=;=C7rmyz zimNjvVfQBsI-(}p#YMHCIzdv@XEW@4rnr9Qr5*x@aeY(4Ar6i~(=9#4I zkUM?PAFU6(1^@z#2QU&kd%~rGkj}9dn7lM{-y&hrBOD7R5w<9E@+2yG&|?*&J|j4+ zyF1ug_v1Gs?ESJ>oB5^DdI4%oTC$g-zbY5-7u+ANl5~f`Gf#lFX88S4dFxVItfnt1 zWWdLHXhZtso39d2@-F4?1Qc+xRiqZ&8=uP8l)BF1vvyPBK>$7r*O&A6!!@dG>rooc%~vrL{yo&# z1!|u2X{@oM$yb7w@0^pBM|h*XC4kp)ZHAV4OdlI7x9AH1oXO>*HaEFrnl?^}%`RP3 z?rqSYf@0oLHuo3S>agKsnd)lZ$;-*fG&M{&lbfrQuIM|3xR&>zYh; z&-CwV+988)Ap`8LLZp13QPf9XB_sk~CT~BL*SNAy#a63wPx@s7m*nhrqYq$1EvgJ@a=eJ_!qgsD$-KwLnp z`|{ni-Syz;jHNzny0{w`y5A?lg-4Xwxh(qYw6s*z3=J907ahw6dHxV(GH9{1cxiqM z=8tPF5p554*nv;F!x(Hf?(co>Ob)yEDZ&69k6LG*`$WQCr5hqsml<5+wMXs8?3Z`+ z*F7EOFU8j1t~DtE9fIYL`2>a5&6U2}&e8->@`@PeWJPEI)YoxvGRj#wz01=ThgJyLs>R5 zJu`TBhQ0_s9SqUHOlVRo5z%}SAJ z&|$f22LG@Wf^+QnCma%A=5Sw*&CbqsrtCS@3MPz%%e+7ADzqi-COP@NX;#)&y?oxm z)FYXK*KQfZNVC4dN~0XMP3FOWsuxZX>)yW?7_2{qRTkQ^(;N4h9!*9BR8GBsYpiNWlE6kS!9F}Wscv_7s%d9$ z9}}?8GbN5T@bmMB(_v^-2uH!Px&(G{Ff@{XOMw7(w9cDwKH3}b+)*j{?=ywTk{t(M zA~w9Z3?=7SL8%jmr>N-X9@S2;Mr#C(aNu#iAOWUUx;NxhViKF)Czm7ZrjO?2cS|}Q zww>^PXj4y&i;;iA9(%=VTVMkll3-Gzq1u5q^Oc5Q*t0_BgD=>L35SNkdaWI_$Y?Ua z12t)g0l^27WCs0DPOilME`-z{B3Gy07U@CW!$zRF$1)@wsE=6>biA)$YCrYf*}Y3I zVRw{VN;W;$j&c~5h9mPuMn*DJ)i6MkgMszQDT*L#ACU-btx~nsn7zp2=xbi0^%f2i z8H(C(%*=g%OyPVFBm%zz(^)UDD>EpDK#Eqkh{j>tk`iuQPdEu~+64_HZSb1!R@pXl z#kXDbcZ^FwU{XVao0I}{cTZc~$^k%)$6xgIU{jK!$B@OkG$U%C0bkn$ zv0uYEdkaO&G;;p^GGJq`tCJrW+*4)h-!JGPcQk(K;Jg&q-^1{&p={p?%n?&?g|GB- zC60$QRN0OQB(ML9q+>&fnb<0)R_lx@$T8I@OW)uM=SBa!_`yN-5NTl+eZ}e1v$Fvb zH6ENnITY-f`w^Bv8s5KaZ5Bbz~${EzEj$g^yllWH^ezh5a`K@`6I#| zZ~Il$x6XF|yAH6!>V|QXaOaNP{bj~IS0O`;2ZMxr+)d(LR4aO%2qx$+?$*0WLA$rJ zC?2U6>S`=4z3wIq4XluX<&DoLSlRErZjZRp*oRtEsPr|lb1Dc%p3sxLW?qEgAVWVK zOsA-pHJJGfEQ>|C3u%)oi>O0eqs_LKIzD}p*#_3DGjzL^c~RYb$Bp8pcbh^>>30V% zQwt@WR_v>6^ni|y-$~b2ruc$p6gpPbKn;_eq(JnmSYsYF*yG0nRT9BfWqv=7FpM&)nPc0$7S zp*xTGI#P~~+$GKGdSf@*5@N71X>T1dR^ll$Hoa7Um?H)G6gJ1rj|-psjQjeFYoA-S zn(T8icsnSP5(7s}O`6JJA>viOiYHea;iGW&gD&lwk)(ZiB1SA2AdV!~ACNZqG$<8U zwDa~xGaN$_$U2a?I9^xkbb>}%E(?Rhtxj?kX0f#+^;j1r!#ItyVLlRSG>-`uHSR8> zd?cn%RSu8u3A7@$sS8Q$`61uHv?YdMyal@YujMtQ0r9%%)ajT}&%>gc@6$o>*W-53 zU*Q1`-ghrUXT18Jg=_Lw=i}4_V&U`!lE6>*s|j&!KUVS4>`giejGYE>-w|1jq?ukz zIwtikGEe#56J%=%3OXq#(n!}6hZQ`L6#=QxX5L$UW>4f}nexMy?1+02t1-kQKd;dh z($z1gBl5Vk<;V-QRMNKD^DcENa?yV}QG}8Dd++o(U-`*eC*(=1u^NTP&7 zyyS&Uz+u|`GH{F5Z+5c}V6K^IeJoIsx}!m;XJp{WQABitRHz++KJ-*5rW_`0Bl!A@ z`oD#OxEl!chEcgxIawD9v1I6-DQ(d?j3~puf8WL0O!gKB3zd$DyS0cUHS(EN%+BIcZ2ua&HUg${JJo1az8vWvZYX? z9taaO(`D%FZHAulhc@Nhet4CZ#ObC{LN=#Jempp>g((4B`>1^>m*Pm=(?Osuims0b zq6O;kzPwC?S6`G~q?M*&J~y~re^t03wNtJ5s7e-?O(X)9o$(8SZG`nNPCS&Ml}|Ez z!7ciwoXyBu38smX5~0am8pa`VIHKy?dZnBy*h{^ovp}6u*4pcUL@!&F;}q|v477`< z+ay$XOdW(_iS}?>N@TRZ2z@ioUk+aF(NASV$xrZOw`V@B##@9WT=MV7He-J%m^1IW zzQY^ABk#&2mf#<$=B>}qzrNB$ENK>%vBjyLMov2&k_JVGhTJ}~1lrOn37-5y~bQ{s6 zArTz?-CDnCZicsNh|qA6j?ym)YvEF)A>fBLz;o`iQA2NW@jts+4K}B-v}8v+*q{|) zAcF`u2VA@ytaSDJ_v%^=S5gp;UX|dR z=X^GBYq9|?^$MJKf0EP<@{XJX4PjYo+D7aZfneDw9C?g2vGAeb!}u3kpY0M2mYV)% z1eeC!m@T7m2!(S*xftkNwKKPT%B#}?^~xa~c3v4VP8gzf>+-((n6xD-f{a+iPrMK& z>Tu1_B!39r$iH_@F+!EXS@Q64q2PMt1v%5dUF>!A(r9e|;z)s3@Z9f29`%rWGz?&t;%knQ zS08fJ{37NHRpo~WcN-g4m#p1qdDt0Tz5v7qlswKK=~|hq*mQo#!fAy4lwcQB)sq2b z>ktR{`7r%O~fYT=>T5r3jz!&Ns&V@cWq9Dc`AvG(t|6g z0d^Es3d^|!Tv@~bQk0oUQAoX7h;IP@HA0<<^#A{_?A6vX7%3MwH+aiL!sjpfXU$0= z4Q$lB08;|;je`ZRMOq&M7_hrrF*z(|o>q$9$OC7+;+sr66K4&WLV51os9XoJDq!2W zl@~CNDOpn#aLll&#y3E)^f%r~H&`Cdi8m`KgkaTDgW*50!&%9!25QF$0 zGTN)87I`pHsUc`%Iwi&M(7Jm^uu#>)beyxBdZy3gnrNxN6v%GzI_3|vi*40(M(i2~ zY6Vgu)GdHQpc0P!^r#c_^GdOzQPjyHkl5d`zt*p|e!5~HKgX?|2)8mZG0FEDZ*YJ3 zo~eKz)6)YDdy4t_c?K6QT<{02?(8pO1?9T2PuzygJ;V6#G(@?o>be+#}F}Wzv-AlkPKL#DY0MZ zHF9ua@|2lbai^fbF3;33F>5wZSKP+k_#*2DE8#(@0SEBs0|*z5eaZFSR%gLk%GHH> z!dxT4hAnetaOD_mgq>&f-&2Zikzh3qAf%FTRpHI%tNDbz;3-sKUB`^Q^FJR6ZJ7Xt zUmQ+OPkWHPGSDWBBuTDX+})t@B-2X6@`2bQd=OxLnM~j=dr@IQ!CdEg0Ii|+vyIaS z2xKt=OTWjLZq8bmC$M%k?jLRNXwccIWn3~X1J4Xz7oO?P%<$@MQs2xnoxfg(kaj&jtR&zAJ}=r$^lkHu^~vQd?Krj{Q# zS62uug`?YL)(}yZ zsHyY+p-LW?Uo@C#+Xc=lEJ25h*LfFm+Ae-ADbOwL*Ro{1Ro=HiQY42dg|L7(%FP}tuN?~z6sWiTncSGj#PCZ<+2UERld|Aa0`OVrG{}qpOE9cyv=s>ixinzF>MP_PC$M z`7wKvpQKuQ0$Y{)6Ku5;o3Z7)oSK@N6uIa*ez%t}J$s4+f_)qA>@Sd;ALQk)J})tH z6#kE>Q-Z|N*!@F|k{+*wY^-UwB`bBE?a&Ww|C|qDb6dp*DzRASD^^v{ckd!rd%wU# zc#m;>uCGpWZH_b!C00&}_trbXzD|jwM*qeWVFSjqeM5x(TuU7KM7;o&5?Qk`0PC>x zr!fU}{^s1@9~G--%#dw9>wBP3Q&td~rvY!bI)w+#kMJYJE0I+g z10qV(uv^$|J?PKcL3<1VA*}C*jqn^8Rwr%l_hPALLaY@pp-0mbL{~9Ki~l{AHAP)h zbfW0xPp9c=pa)K2u zC4F!66L|Jarh>+^F>+BcQ?jogco?vNO1g~5-=HC@&K1=-cBuip5@#H+;gpnlNg_ML z3_ay4*vL)WVx-i>ah+)QF-U}+;F_i_O7C(`s@4>93`H;`efmLzWIhK6Ig6@H%B{HD) zA9HeO<*P~c*m_nt*b$7889irHc1JQxByDo{D?o9_FegPbB{|bSl@2EXlm}dS$T{p_ zXuT@++@-8Y80`}t(N|&`6t0y|E|K&({t{k{jDqS%bNdCt;7^0UX8r&ua5%s zQloE`IDme`w7DUjyzM=#xTW685e4;}-H3(*NsnO>rk}nEwAYm!J6*hdm^5EH^CwsC zu`>?lp5cuYfv#erB>NK>2Qz+iH@4`}R^+!mC)pLHYc>L|-KLwlc|M};hQ@)#f2Izq z2r_*HnBv5zF~vi-8YrZf>~U-Lwf?+)ChnH751@ukIcLKw5y& ze~YF2xUu&j)tP*HQE(QbajuE5h53Zeb68zCx)4=Zca$9mMnfrCw(_B|-)m0F$Kn!4 zdd_oZ^i!#PPxkg`JJ__Mzqvg>ez049tF*p{u8ywoAYp6ajukOB4w>2)j&o{)2}mk3 zQ(76~u4ZA90d6S^ya{$y%A5JU_SGr1ctd5^So-OS`AwI+l&04a_$wdNEwX_kCZZ{) zTY5Ia2P39Shn6YpS=FZ7fYIoVnqBmLug~w#1Soad1N+_0W(eDwU~>{ok6|jH_T3zN z$){SGNKs2Wit-4F`&r0bL!cqY8cBZgO=-pWa!S>FNoni_>sACE{*=!@3uy-~o5*5u z)av(d$U}dj>6?#Y>>Ei7r%J~36k~jm#QaR{MOF$5L3AWpY;z-7*5{V8NEu^Gm;^ox zp`Uj5AZdnbL48Br+waQ)PdIR6mNawsZ61^XQ9M$AULk=v%d(D^eDY@`E@py6k$g5) zR&lYl);CzgE6LB_8#fr^T$c!U({V(25p^e(e!G-{PsUc`A1%HNyv16ubc>Bb1Vn)C zV1JH$LU*TQ3Jj!HjO4cxJMBD~0OpQ>f7}bL49}xSDrF8f&plg$&Y_))xXCk36koF@ ztEzk6|JU%y>u!Nk!7*j_i|+Qf-U`&P{*S&(Lxe?jBngra-&6(M+6K<*DfE9P z13S0n36Lgoj4cLKcG@l9(e!NW+<7eL(9Gh@z%h&Fw}TM~e? zKQdbad00;gClC+C*N$rEJq+|W6!6Wz*XybOV-6!=2`mozjqe@?%ELuQsZn%kFZ*Zw zdVsK5ZB5nV>%&0r7(h>L)AoXlq7l~EFPvX`r?-rJe0WPj;qqPy^ z`PE_nYIF1O(Db~!;Ztu`QcBZzDF0|_V?(I-I5;=mucjw^u_3ukZOIfDX z)13o*)}`g;Dis=quW1cy>h`xq`>(zt@osyoYar-eN&iKXSG`{E5NNST2wXk=zM948 zP2BbH@Yp0KH@KEW-MMY|Dwt;D(Z60>Gmbv z0s(X$9$qSzK`E{#Cg&e5&6eqq!fXPPF`G*rv5jVWb7n6FS~Y-yOQ(Kk&)K$dw!@EbIL8_*Z#gP#QoUz;XPbIc4F&D}W zmM@wKO*?rc@GPq8*pM}$T?`E00agEgDglKQof!RsSx76LWKs1W@XJ z%|FMT{gvOeX;|YkmI^Y~#q8K+TRt0x_Yf{3ZO?grDp2qD|)2Y7844{1NuvdYdc&>FcbyB!%u>n6qwH=6;s^$+JCYP0SvP zq3KFrLa!$R%?O@P#ueGXss&nkHa!pU!}2DaKiBGoshXER+a~CB;`jfFb&yg5?fvlB z>SJdrs>xLRb*=y@oe`yf@=)nOJN|8>z-?sFAP-87(0N-7Lbc`5APdVQ_SKzm0#kCqq{mvvy z=%}(6_YnIb=)DB=7khIoThT}zX;$$QOVyhO9<|%8&kJjD6m83eDbxgRvc`d5AL*mY zLdMQm?)1xL)r0hO#DaG#FaR9gcdEPGSa|?gE0;Ki&_38)3 z(?I2``63_3uh5xWOr-QR_WJjWg~xmNNP(GWQ)g?2xUBE!>*$9RBZzP}KH}e^m1q23 ztU?|H=O-bQwkZ#CM_84He^!+NY~4B^Xu2s9Zg?E@i&bprwTTd$*dQ&YV-z)InEkjQ zQ;Soxc!CmOds;xKl$Iex$ci@7wg0QRuZoK@>fVKMz(G+M8bLZFq@}x&20;)QN=l_c zy1NySR6r0A>24TW=@OLg?rzTp{r=y%I(O%H&gBsA?04<8)?V?fXEWZ)8EMH6e`GD` zu%E70*_C9%Y(LQlw%5}_>lvThr{}0!QtgM=ud11VvSr3>P;=^VmsniJNO=0Kq$sts zV6;ay5jN;#=ILnPxq{jzt(N1H{#DoO{4a)g2O4z6pH;MPv1A&=1F5bwn1yb zzHIElWxs@6L;Psjs4Dl;eLB5%ws^;KU;G)1X_x(Le^vyAu1qIOR&ZF^AC^32s{X`m za+ECd#s2WZ&r_Xj38y`}@O3;5nsdLNL+!P`;!}GY82%ot|N6Z7+e@mzOW2^1psA$u z`0{gwY-$LUieGPR+Zt-Y6mgBoF3~g$y%nU~CXYa>G1D z-wFali$TIuI!J+C;$YNCc3FSRS;Tr(HH*w%=lI&*eYLCIzjPGHt!~PA=vaTLSJmMq{q7@k% zKyoG+==04$YCiyo=WbRC*56QpQ0`QCqzPuV+aNn z%br_9*#Z`W@qaU!uuFi8V}BE}BksZ_56&KrGxcp9R>gNIAIFKX+Hd8LjI6uxiLj!U z!AGB1ppG8)YO!29D0_P38_D(Anux1<%JfT|ExlHr%0E;NB*j}D za-inZE{Ubw2GAKvFeA&&%d77{1qZt%Vo8{sg#y1Xycm2I{9gHC3`Do1)+q5ho?;FL z6zfmq4AdL_QOtNat=7v(t=2anTTUBn<0)({Euo53V;wl#y-Ye&r)b`LY$~#dttqef zU3Ye#9#3Z*B3_gJ)TcF0`leDpwc&;9!aebcRd|LIIysC^+MX3EH?`{`A;uxK5&5aMSJ& zpsg}UH?Jwl%{13Yesp^4M7&A0>8oN#>Ko)d#69u&>!gcDeC=^hSH_504>=lKuqlv|+G;LD zFCy=ZgrtRzuQ1w@%!TEKSPDXAtM{_d{(u-&n##LPPN=rJS}8+EwNOn|GnizYTc0YW z^dy?kF`>_XSf@3Lf-z2}81cLD`BRt1V2?r%tv=8Ec-fT>=l9upI=j`iwaUJED90Jg z6(6WY1FEA!_fGeh@phfVRn^x72Psj9oZ;X%p2>P)Pl?MJtJ7?y)CagTx*%I`rrh~bF1`l)kwKW; zN$MOhEL64}TrqTI1#gs9|7P?&uB#^r%Lg~nQcH))70&#k}$__XG3U=6vf-u53R!0k!^xna%E*{oy*m6@>U0r=-&tYB7Cr7^b#oVd!tn9YB znX;17V2f{Or;V$=v6f(-vE&KY#CTP)0&rShkniNTv}csESO%CSg*?>>r+@f*lsKz( z1m#;_`r~&AEVpp_6TLI6p>^c%Q$5mjMa(plEhRXySY+km%_Pn}v1g>V`ntZJYr_*? zkQYH@V&+Ca(Pdaom4$htghu+TI+yErJQfSbm3Bgn0#K&^r2%&;d4>J+WV%y=0)qsm}6prhsua*WyXjC7(J5D?zL-B zbml}MVDyv0MM}1|s;e?C@+SJa>d)5PnJqhcR8@aVkE`Dq3!av=-;?$voc#2tugH2g z!q>`>mW>wT{KeT2kd!=bkik_}mtE@kh_I;dw+zi6QO2`)oCm z6YRjtmsmQ57uod))D&*jefbX&D7j!No~sCbv&7BtlNts_6XSSn1tM?c^5Ct&RZC0ouK88) zrWY#cett$zwzqNT110 zSX5=X6ulhi>xgoG;S>*wRcT7>Edw3XUQw=>Pv#zZDme0vrhcYqJ>Qb9@|QFI$wNkQ zt2N%W*IO71z7DU=l63ki=ik_E^7aoSvedXXiBCqV`s6JC1kW-*Xtrc-s1OpaL45n2 z$pUll4-)=cjx*d6A43AOMA$c5hWjT{${&vZ_98GLR(ZxFp9Tj!hr&<+E4{cWS|}iu z>7&X=kXjiEs%rILPJI7qe9{xfdBwQq_{7#qlBW^I_JYvyqht)>2rF4Jf3|CULGJ?d zcq;7W`}2#{D6T-xj2Dm7A#ConSa+duvgV8)XOhXB>iG{z$?&RLtq{_qV`EcKE!zYH zB#ooUa!%>73*I54;b~U$p;=g0i)~WhbYQRE-ovWV&ElpRp>}%xK+_wpJtqkpUNA{n zy!fmT%t^k+hhR-=FyGIA-LJuuz58izlCQdM5c(Chm!!RyNYTqr_fFMqOI`Fx{b$~PeSNtma2RsdE}Su(`~68Ild&u>%WYLP>zu+m zLG^eB+$rwfp+ZvoTTd23@Mb8*s>jcvC-Z%%$_}*rkv?ohK`tt51;H+S&r?(xEeh>b zD;5GHc}#Wt>z>SWQ`@GHw#k{8HZI%f8#Y->)0#RI=*A&VYY~uKX>Wej8eijz5^PZ; zp-71fJH5{=hq<+v74=;lA62U(;y0r#lVZkJr4r93?hGsjhxO6nNseR|o*+bF9ZsP>%b#Mg0{&zC%#A#fqA zi|^va4?jmZ%g(&BTyH671oOrd)IyZe1!=BgqKkp-A9&)eL}tXQB(Yy*!%;6Ek69)Z zgdaT^88`}ssr@MWYSA^znFEXA8HlN+{Fa~UrL?J1Mm*5zcGQBEQ=hb+whmb~D)Je& zA~hjhaz)oG9H%V`hdR4R`RlNc?3vUd)truwE7dL))rs1rmQlKG*Vr7Rv6g46Mawwt z?+pdKGm~UGJDty@vOanZsz}MM%LKYs{`Ur&@A(Jsp$oogzLU8bD0rgcW5cQX+4*%A z6Kb4!g?~^_<*4T~BQo^Z_uS0sUm9ESf}g!QOYh{nYHi20B@tr26(r|B-xpiu&~J%nJpB8LY^rB)Z18f;{F= zsRHLaQiZt??z3qqSZA+o+>{|$$5?V~F<+%JiMUmB>2Y$C;{z=pMezej&%p}|l zYV(n2<)ii0(#JZ!eeQ^vJsczyF4G}Hc@VTJ*3|G?C!E9$+b`H%KF+oLl3{rfllDx~YqtqqC0_X!Xd`P~c zZ>v3`&mWC>RA#JGEStLmsd?Te)bfPhvt5Xpei6iQA3x}F-}a~RN=FB`@U!n0njDfK z44kZ=oXf@{SIe|2|N4FL{G;cw3GC}IZB-c|tcmb8JkpkO*_m)fj8>j*hc0u}1gWTvMHrJ}t@P?}ob&>IuV zk20(obE=J6LE}lra~RQa@Rx{p^M>zCh0}WnsC^Dw{T5uS6dYAiQ|8EL8BL^UXCm-t zNuL;MaA@&!;u?OSd#`v((Q2~O-XxE=$9sCri1p#q+r@4CliCwIOcqC9!Cy+q+g62m zDmYjupfB7Xg(9Xd^{s1|9Z^!sl$dbe^#Mg)osD{9w2Fws+`Se5gr0`g@>Y)D*P+@X!4EBdF}^uT<1it^ zJQcJuUrDej&Ua$*OHk%_p+4=>XR&m_I@@_VYARRO&ZX(GN3oMmKQUC|?RGSNOIZlH zD(HS8)Q#nL=}RxLZY%XBv{^F=?Q^!+`@v2%EKqTnTd8O|$&0!aXz*d-$R9KH@YHnC z(X%fS#aAvfExpMD+^aO7ALp+2%pv&UEyFjPvDUR23q1KA`^f^QsszjqRP5seblnm! zwaFnvb7sOg&QU0bYs|jcCrb6?YTdG{wlxu^WOas^OU2}e;bsuukEx4Yh~)>g$cgZS zqWii2({=0vzxu4jhe9If>2OtFCp|=Eyv;&`6GIZth^&4&!6U4dL{meea{Aqk)UfYV zX;1G((=G?$lUoCsshkBz!-^Ks;X;}aCIys2LW#P)=1-}F!R)HNMC!Gy_Rjl)6pPy? zG9!;rl{}in9pnVdM(4ynyT%@$b6vfEf?=>e_DJVj(c<1RuYoVwpcribBh-d%Ra%g z7Fyp(l4pxyen}Tqsm>gTZE#V+E}KCtIkUU39E?EQA(6npdFZKuDRf6GT2s}%daE7A zh9#DVGZnihan=Lv*?lV|DloelTy7BuExB8R*Dcp4xj3IPxHtnR)bPwn;+n^Zq8IgV zWJmYvv)a}0P*DgTY@yv@@zE$$z6YP-cuMd(?6%{Tr@hQPCD|Q4;X3^>`sp`LhOeN} z9pra;Tcgi?vJD4ACCPr=ds42Z6bB!bAcXmfk43>>Bd6nUDpPnET$0{hOiPrX$WQ8t z`n_U`Jrzp<3>aI}aBI3_kA|wd_yE)@vM5(#5JDytss-6LA{|k3r3cQ}l?iJYmy-8% zY{P5RFih1MN-LlMXMYBtS56AE6tEQH*axO}ZSu{3Oq4YSH0g*EyXhv|y`+PL3kb3- zpcRje%jDFT-J+N5y392r;3JK}W?8F6lM_+YMK$|bE|$xqljx0z4%;;APyHckmHSz? z4<_%J)0^aJj;%x)^WAQYFuG^fWQ@nSC+1EM-vA4M|nWCKg-vdK_!mOdv4kV{ZoNE-wgP%TFGt zU%(&sICp6kw}jesGU@)(`spCzS{dQhx#-0z(5WD@&zdTdZMb`Xo*#Q!svfiMx%4RL zgm+1#Q9^XTpghcD%F{K?G3?BZE%I+UYjc#t#=^2C`;zq=_d6sxDDvWc8NwWO8e3ueEuMTvXQ7fm#}pMFH_5RsznK5PpmUv%GM0y}~Ni2zWf z+M;iR5u;k1aXX3MmPw#^!yxJ zIO;^qG4%oO6@OrZ^OaSDl)w?->9e(S{dRI+vG*asKFVDyPW3P5GL10$!enS*hmv$! z9XWf9idI7ogEwIY1JCXLIb_0sB%RlNIGxRFOCdpu*-KHu;#P|oQ?C4vXP1^LrtNN7 z_mTyP@eo}+G5esKnLz8at(>Es(pLA}7saE<;z61=3Ou)gLJ><8^BsJy6S<|;P&Pgn z*-+iUD15og@F|}1DO_EUcB6~_LuMC8Ryd5e$ylo&#(RE*yRoVl#0R!B_jrdU|&d5{|z-JWG(AS5?6 zKE)Gz9{VAUNm6U~(;T_KHh7>1#v`Q1Zk4ST1opgyS0_1#NtrCm?$>SQ?S0cZ+N zIcz~;wJU#W3H8QD%;3C7!Yrepkj`}d!n-2g76@UZ;2rpIt2aULblyb&-DXWmmHk2QN2QM)?Za~5rC*&=TW$a{Lo@)v7_$_*jGuJO z=x}gLdf4WW%1)cYECSZFOzXW*S@JpS$DT(8hhQK{lEcn$>fr@Mt~>*3GOFs-eF&iT+W3==E#I|Hy| zqGzaDwN`g6uaOOGtk;-c*~0HG*j&si%=&c2G6y9TEKspn)aSgKe17&j;-Z~#EG808 z`a#@!vXnwOpokp`n#me<>zoayl9u#mlN@ZfE%RugtYK5(%73yq7?fS%uu;wyjX4~% z#MsH<9Ct7NLHz6Tx2X)0d**ks-tUj_Qc{>BVUrf7zfVBOIN>^PwXboiMHWq(3(7m} z7h^8D_ZQy;*n1vj3c9F8^%_H88=_~o9y@d$MHk=TG^ar8dwRyk@BtLNY9la99%oBm zw-G8qX@!~4#F75J;S2LS3(Bh>@E=-VTjLx*ZBq1E&R*6NTwj{gz2)G~sWUpC466e5MB2lgELf6XC^KLsdPtm~)?Mv1aWGYLdxI z4oTOG>+Hwv`L!2Q7i=Q!A2r}Vx&m;^C2>*Il)Fnmg)n?WXR@kYCEgSV5}&~-t*G1K z5#eavW!~|WHIxAs*ewH@C|NZk);GmOMMFzke9&UF=f54cPx6FsH_#e6wgK9_EhcGR==Qgli>F}0t zt*veHSan$7VhsU{k?zlp{R@SKJwu$0;R+I?aEh3t^w)4B`LSR@o99e*7(su4e4GX5(UPBS?O)_#<-h@Q|nN;?las(Wf)g(!6q+KhF-%lF8o~rw+4R4Ax`7&4f-D zo{_zlv|pONPJBebx-PeVsKvt!X%@Y6RC->bEr*dw^V*Y<#so&W!>88HKBnHZkk_69 z0Lc0$?LE8t(8Vwc*3(5-muvI5k~BC`y?^EKmFWij0lIud@jxY6_@b_xT%doUAPPi_ zk`e^`*7e`FgEdFV_s;+OYg}Lx^xn&V(I6B)w!rhwNAL4q`xVfWg94kym~r`wGLbdV z1&UC$Ab35Ja_t3Bflq}vll?`n{Qv#6?Q}&I6`DKj;BdjwGJz!Ly6+;+FE9j!gzz`t z3Sije{!|NI_PQ$w!1^k-ZSvsD*QS`ZG_4j>1j`Arlz89-f{E z0}H|O>uzEj91KH|o_`SFv|8T$^eKI46%T9RemHG6|26#9M}sB}tuEBb!)LS(7ZScQ z=Sl~YM@7u^>zVmXt(iKMB|=KLP_D z@4WBXJgH+)e1t>w>f#yhR;&rIwSStFV_OX?9vG@Zsz zur1tr%$}a`#An^viTOJ9!-G_y@+>O-{Q7Yd+u&?}%&$_Kr!5`mNd$Eo3eQ&D;|Aox z^pkh5c8{BIz)ySVz)#Pw9)CFiltQa@N3(h`Pi3GgfSV4G&si-9vig0dQT(e&#HfBn zbo0vtH=ihciUEGf*l?fXpAue=c>OqWDZ9~TS-`@5XGiOopzJ>-BnFS;@Fe?-lfWSY zQwo9v+*to`;|kJ1_rp_V{-I;r0m3ROpvUi@?#BQ$7XAO>Ye_@xuAl6aNr{A#bRS+E z96V#24U~vv>B&D7fAv)KZdDdfyOEs16cl@UeSLjyZZ5s5zFJOPaGS$f7$Xk{tn9;9 z#VDhXFtp^bOScbe^X=(Lj zrGOC_!lQuXYv!)_lhoi^BEiM96{xH$!p>tquaR24^+!)>`{PkGx2LW=$8O920-6Wd zX(56-4NELO(r^`L631HRH!T>y&?k0C%y<8yx)OmrO{aL||BCD$J=muU^cU_o(l)09 zV6nvG9<>{ZiM9YuyVvMLpnoImBso!Vv8YEW&_Q7S{Wic(TCCIBt`Ra6KBnM+N_LrM zzSeFq*60y9`9WNT?+t zA!$21bJc3H=B@@}ku_KaegjdXGd6Ko+!;)*r^cLDmUaA@nhA_9${UabHQb=?1o(;cNvrG}h0{xH`_SpV%N;f~MA$EF zR0Pzq?=KD+7gtM%iFV`Yh#SL-K5zCCIOTH_@%RvBws}mv8RA>qZZ}$-aL?z^e0g$W zf*Bj3J5cN9)fgIQN!}rwVFssLo7;`(#;Wf& zH#c9xS@TpRQnXOXaAIq3{zCK;W^f4T2I-nINpQM=Ivg^s2+*o|Py5U<{Gx*8?B1(xbsFi z!O#-$Xz?qit_*)IloVK~{niKCzu;3^;QbmWy0fJE9uG{X#b1Lu0gm_)(srD;5>PW#?-8N=kHG3zW$%~`zCu!9SIGL9?cJL5(r=l-G0cYQE2rQ6^M-v zE=_h1=_F+wcJ3RQfpAdFAQO!Usi5ar&^#-eCCm z>`CAot*HJ^^?+quhfcR%D*shdoE31SIpNxB-{=kvxRdbC4k?A(-xqx+$^$%Sa&Xr_ z5%Ph!Y8mCX`b`|=4Xpuko|M$R4yUi*-3R#S+uu{f|30Z-5zK4T&6WIJpuv5x20qav zynj!!0-MMKkH7KV0O#`m=v9;Ld4q1`t0E6kR#wi@?d$84f|EB00QMb#j~(4UJUpcG z(z1?5asi1BrJ0j~4mUL{mS5-2#{9hT?#_3seXJ@O(l(%-^&f0OC}BHX_=Zq98e0ib>M(;X1c)<_D6s z^Jwgap!1-)xeLLD?XZmb7$f5rg1YXG?OpKw^S1ksKrn*}#qNDut2Ys3zIREKT29y` zG%?OpQBff-E8%QBnI?(g;o)fm?L%8zTg1nYAM0R;Y1ES}pvC(LxovL?26g~O%!WPH z>pV`kb9{Wft*J?@_#w+nW&}?9i%X@uAH4RCCbnt`(<44yJl+G;lq>*?D(~d@O5Br? zf40-p)ANq%v_doDM`tR|2|!_=D9h>sRbsw{I?=;J8SVU`&+~*`yB7B93bRIfVnnOg z-I&2_VCqfz;P!fMmywebeTlaG$l>IsWmES4FvE-dO&fJ`{9sRlZLwwh^EF`W&$m?=SIZ@T&(9Sy0Uolua-u3MRsTJbftR4j=ThVXtgH zyS!Lczk?hb`^~~V%G2`mB4MJ($&hkBkdFVs=)qN!AwPZk`C?bR18E#DE9#5p+yg@1 ziE>6{i>)0i*bGW&k>_^H*&-nQ6M1?$m}(xrHEiR5nS~ zI#0)Jk)Gmo{5Grrkr<4(G$TMj8|=iAbf3grH;i67GItJx{bNIp5GZvS1c z5TCVo!5*#2gubJt!x|acd`bGp1K_rQ&zXr_?9}{G^Eoz>2A(1+y!#e-YzzP)!BMM|Sz{ z!0DXVb;7fx`UxOc2r@p_#`sj^%&dM~s?T$f7=R!g)NM4OQ5C=BaGK>0INtYXz)Uop zbC>BGGg>mZ4i*;|O&ntypT~l5Cv?i0RR_}b)cZ4C_IvEzmzR<6iK!IGjmDznnCayc z2>or$mQjVZ%wFh0hEC=6^gI#OAdBLJl+_QSC(~(aiT*CJ*{6C3t`v+%6_UkVf#2)2 z7;7mB8;0CjWq5r(#N1|CgbfZ;E*M3FBxOv=;cuqtmzjYo`$C)kupxqQdBH!XFAH+P z47LddQ`JLM!~^6I-E`iCgV;Z`ds-L@-PP%iCj7EnY z&zM{+ew*1N@mY$QKpJ{-WbHrBFb$xsBfoStOEgzD4es2aGUKL2Kjpn+$ej=3X6Gl{ zwa*{>wBw4(_GQTTUFvDo)w;27ELdTNs`kF{|DcVp&q6RO@s&9L6%+H|WWo#Vt^=yQ zs_?`Jo4eHAlN~(}yv3F^X@6Te^*EQ0P6VSyDf8eY>o8k>4}{|jW82yTSP$iaR*^qv zuh)#jyfa618|H^TVH=DX+YVyIi$0!c#MBPK??xf}!LcQ5)7cd}%LpYW1w>i1%QOwat7)<0FYMje#buEMn!5lWqXYjW803Fg zTUwfoKpz=RRo7t~<+6&;=EM7~-W?3iFX|#wPyz1_M6uuYjL5mVe;+G!J|^bnkNfsn zJ?4Is_niO^o7r4VAaANCVd(hLUeg1QK07kHZPg<&@5JVJ_NoLprL^^gT-;9^w#Eg) zA-BJkNE?Uj#6b>bDnH)LIzLwkL{bp8%xYnw_U@k#dUj(ImDL}GCXlg=?jCiDN3BE` zbuJrwMLkDECEWw!=hp23VO;{hPdT1!0NUwnyng5qMi?kK}x$52J8n$$bL zz}|U!w%KK_U3MwlPIE8RT12g@y61gS+eq zl)8m#dMZ-2IGyyz<6fOWi~kPha3zZ}AlW;tbkUoigtW;Hvs0T+O3@sqqdC8Jqo=cS ze!6IJ^swY010+>4v`bfD|BYb&9SPn{6BRL45q#VjC+gwhj{1?|PonP51cT=pb3M7Iv>TC;!hDuk&HSP=jILckQ8-92$5gYVc)jxjQ zx^fhs0a^dO>iS@Rh)SpHj9F|{a$cU`Y{=8@JvH%0imxkpN%c-Q+zB4+_-F3SGQi~N zpE=&PXG5A$ZA;1Fw{?tPC|SwLwuY*H!XB5hQ}zeR$h098hSN@z@I5v;)xBSPg)yf= zX^^dl!MH|pJI`?P@+WHtuzHY9rNp#N=hV{C3$JyyP$tB$fFI>fX zG#^jLdd+9nSCih~=R?p%n!VjZnAmv;!4w|+P>ISd0?`{X8aJ4G+FU|$o-ZhqU#PhC z!Q;n+%(0~?az%vu1VhIOlH;t6w%}^)B~J81=7KIkdSIW*?R^=b_rnJlrLf;;ZiKUg znBM49F1t3;%xsaU)A@6y{uvCb=9#~%NFD-G zZT>tZfGI(6C^l#}9hnTt|9K%0W`C~+Q8^j|#`F5ljdFk>$)M5R0acsq_Z@=iFD)AV z-JFm1Flj)=Nf|e|NUcHKm#BE{b<}pwX)W