From 4b2e08a4244d269490b1e059fa4ea443f2824e09 Mon Sep 17 00:00:00 2001 From: Kian Raissian Date: Thu, 23 Feb 2017 14:31:58 -0500 Subject: [PATCH 1/5] Submitting project proposal in README --- README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/README.md b/README.md index 61ec120..7331d86 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,17 @@ # InteractiveProgramming This is the base repo for the interactive programming project for Software Design, Spring 2016 at Olin College. + +Project Proposal - Kian Raissian and Ilya Besancon +02/23/17 +What is the main idea of your project? What topics will you explore and what will you generate? What is your minimum viable product? What is a stretch goal? +Our main idea is to create a game that is similar to snake. We want to explore different forms of user input, anything past using arrow keys for motion. Our MVP is to make the regular snake game without having it change length. Our stretch goals are: growing snake from eating blocks, different color blocks that change the color of the snake, and high scores from how many blocks it eats. +What are your learning goals for this project (for each member)? +-Better understand objects and classes +-Have an end product that we enjoy +-Push ourselves to be more creative and better coders through making this project +What libraries are you planning to use? (if you don’t know enough yet, please outline how you will decide this question during the beginning phase of the project). +We are going to primarily use pygame for this project. +What do you plan to accomplish by the mid-project check-in? (See below for some generic goals; edit to suit your particular project) +We want to have a basic but running version of the game snake by the mid-project check-in. +What do you view as the biggest risks to you being successful on this project? +Current lack of comfort in understanding classes and objects. From 68c6d662b20808b59d2b7a690a0d953fe51d8ac2 Mon Sep 17 00:00:00 2001 From: Kian Raissian Date: Thu, 9 Mar 2017 13:36:28 -0500 Subject: [PATCH 2/5] snake v1 --- bgload.py | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 bgload.py diff --git a/bgload.py b/bgload.py new file mode 100644 index 0000000..db07574 --- /dev/null +++ b/bgload.py @@ -0,0 +1,81 @@ +import pygame +from pygame.locals import* +import os, sys + +class Node: + def __init__(self,x,y,width,height,next_node=None): + self.x=x + self.y=y + self.width=width + self.height=height + self.next_node=next_node + + img = pygame.image.load('snake.png') + self.img=pygame.transform.scale(img,(self.width,self.height)) + + def render(self): + screen.blit(self.img,(self.x, self.y)) + pygame.display.update() + +class LinkedList: + def __init__(self,head,size): + self.head=head + self.size=size + current = head; + for i in range(size): + newnode=Node(current.x-100,current.y,100,100,None) + current.next_node = newnode; + current = current.next_node; + def render(self): + current = self.head + for i in range(self.size): + render(current) + current = current.next_node + + def movetail(self): + current=head + while current.next_node!=None: + current = current.next_node + current.next_node=None + newhead=Node(head.x+100,head.y,100,100,self.head) + self.head=newhead + + +class Snake: + def __init__(self,x,y,width,height): + + + + def move(self, direction, distance): + if direction==pygame.K_RIGHT: + self.x+=distance + if direction==pygame.K_DOWN: + self.y+=distance + if direction==pygame.K_UP: + self.y-=distance + if direction==pygame.K_LEFT: + self.x-=distance + +if __name__ == "__main__": + pygame.init() + screen = pygame.display.set_mode((800, 600)) # window size, as a tuple + pygame.display.set_caption('PyGame App!') + # snake = Snake(0, 0, 100, 100) + # models=[snake] + head = Node(0, 0, 100, 100, None) + snakelist = LinkedList(head, 3) + models=[snakelist] + running = True + while running: + for event in pygame.event.get(): + if event.type == pygame.QUIT: # user presses the x-button + running = False + if event.type == pygame.KEYDOWN: + if event.key == pygame.K_ESCAPE: + running = False + else: + # snake.move(event.key, 3) + snakelist.movetail() + screen.fill((0,0,0)) + snakelist.render() + pygame.quit() From 363ba42473b1d1b48ab57edf6340369152e526d6 Mon Sep 17 00:00:00 2001 From: Ilya Besancon Date: Thu, 9 Mar 2017 14:01:47 -0500 Subject: [PATCH 3/5] re uploading --- bgload.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bgload.py b/bgload.py index db07574..c7f4bf9 100644 --- a/bgload.py +++ b/bgload.py @@ -1,7 +1,7 @@ import pygame from pygame.locals import* import os, sys - +# testing class Node: def __init__(self,x,y,width,height,next_node=None): self.x=x From 5c35ab59522336912ca6f11a301b3766d8e7c6bc Mon Sep 17 00:00:00 2001 From: Ilya Besancon Date: Thu, 30 Mar 2017 14:00:12 -0400 Subject: [PATCH 4/5] Updating new code --- pyman/README.md | 3 + pyman/data/PyMan.py | 155 +++++++++++++++++++++++++++++++++++ pyman/data/helpers.py | 38 +++++++++ pyman/data/images/heart.png | Bin 0 -> 1277 bytes pyman/data/images/logo.png | Bin 0 -> 16958 bytes pyman/data/images/pellet.png | Bin 0 -> 360 bytes pyman/data/images/snake.png | Bin 0 -> 4069 bytes pyman/data/images/sphere.png | Bin 0 -> 43489 bytes 8 files changed, 196 insertions(+) create mode 100644 pyman/README.md create mode 100644 pyman/data/PyMan.py create mode 100644 pyman/data/helpers.py create mode 100644 pyman/data/images/heart.png create mode 100644 pyman/data/images/logo.png create mode 100644 pyman/data/images/pellet.png create mode 100644 pyman/data/images/snake.png create mode 100644 pyman/data/images/sphere.png diff --git a/pyman/README.md b/pyman/README.md new file mode 100644 index 0000000..6f89ec0 --- /dev/null +++ b/pyman/README.md @@ -0,0 +1,3 @@ +# pyman +@ilya-besancon +This is a simple game where the snake moves aroound and eats the yellow hearts in the grid! diff --git a/pyman/data/PyMan.py b/pyman/data/PyMan.py new file mode 100644 index 0000000..6c53846 --- /dev/null +++ b/pyman/data/PyMan.py @@ -0,0 +1,155 @@ +""" +@ilya-besancon +A simple game where a snake eats oranges! +""" + +import os, sys +import pygame +import pygame.locals +from helpers import* +# from helpers import * + +if not pygame.font: + print('Warning, fonts disabled') +if not pygame.mixer: + print('Warning, sound disabled') + + +class PyManMain: + """ The Main PyMan Class – This class handles the + main initialization and creating of the Game""" + + def __init__(self, width=640, height=480): + """ Initialize + Initialize PyGame """ + pygame.init() + # Set the window Size + self.width = width + self.height = height + # Create the Screen + self.screen = pygame.display.set_mode((self.width, self.height)) + + def MainLoop(self): + """ This is the Main Loop of the Game """ + """ Load All of our Sprites """ + self.LoadSprites() + """tell pygame to keep sending up keystrokes when they are + held down""" + pygame.key.set_repeat(100, 20) + """Create the background""" + self.background = pygame.Surface(self.screen.get_size()) + self.background = self.background.convert() + self.background.fill((0, 0, 0)) + + while 1: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + sys.exit() + elif event.type == KEYDOWN: + if ((event.key == K_RIGHT) + or (event.key == K_LEFT) + or (event.key == K_UP) + or (event.key == K_DOWN)): + self.snake.move(event.key) + if (event.key == K_q): + sys.exit() + if (event.key == K_r): + MainWindow.MainLoop() + + """Check for collision""" + lstCols = pygame.sprite.spritecollide(self.snake + , self.pellet_sprites + , True) + + """Update the amount of pellets eaten""" + self.snake.pellets = self.snake.pellets + len(lstCols) + + """Do the Drawging""" + self.screen.blit(self.background, (0, 0)) + if pygame.font: + font = pygame.font.Font(None, 45) + text = font.render("Hearts: %s" % + self.snake.pellets, 1, (32, 178, 170)) + textpos = text.get_rect(centerx=self.background.get_width()/2, + centery=20) + self.screen.blit(text, textpos) + Vert = int(self.width/73) + Horz = int(self.height/73) + victory_y = 200 + offset = 50 + if self.snake.pellets == Vert * Horz: + font = pygame.font.Font(None, 100) + victory = font.render('You Won!', 1, (95, 168, 160)) + textpos_vic = victory.get_rect(centerx=self.background.get_width()/2, + centery=victory_y) + font_res = pygame.font.Font(None, 40) + restart = font_res.render('(Hit r to restart)', 1, (176, 226, 230)) + textpos_res = restart.get_rect(centerx=self.background.get_width()/2, + centery=victory_y + offset) + quit = font_res.render('(Hit q to quit)', 1, (176, 226, 230)) + textpos_quit = quit.get_rect(centerx=self.background.get_width()/2, + centery=victory_y + 2*offset) + self.screen.blit(victory, textpos_vic) + self.screen.blit(restart, textpos_res) + self.screen.blit(quit, textpos_quit) + # pygame.display.flip() + self.pellet_sprites.draw(self.screen) + self.snake_sprites.draw(self.screen) + pygame.display.flip() + + def LoadSprites(self): + # Load the sprites that we need + self.snake = Snake() + self.snake_sprites = pygame.sprite.RenderPlain((self.snake)) + # figure out how many pellets we can display: + nNumHorizontal = int(self.width/73) + nNumVertical = int(self.height/73) + # Create the Pellet group: + self.pellet_sprites = pygame.sprite.Group() + # Create all of the pellets and add them to the pellet_sprites group: + for x in range(nNumHorizontal): + for y in range(nNumVertical): + self.pellet_sprites.add(Pellet( + pygame.Rect(x*(64 + 10) + 10, y*(64 +10) + 35, 64, 64))) + + +class Snake(pygame.sprite.Sprite): + """This is our snake that will move around the screen """ + + def __init__(self): + pygame.sprite.Sprite.__init__(self) + self.image, self.rect = load_image('snake.png', -1) + self.pellets = 0 + self.x_dist = 10 + self.y_dist = 10 + + def move(self, key): + """ Move your self in one of the 4 directions according to key + Key is the pyGame define for either up,down,left, or right key + we will adjust ourselves in that direction """ + xMove = 0 + yMove = 0 + if (key == K_RIGHT): + xMove = self.x_dist + elif (key == K_LEFT): + xMove = -self.x_dist + elif (key == K_UP): + yMove = -self.y_dist + elif (key == K_DOWN): + yMove = self.y_dist + self.rect.move_ip(xMove, yMove) + + +class Pellet(pygame.sprite.Sprite): + """ These are the pellets that the snake will eat! """ + + def __init__(self, rect=None): + pygame.sprite.Sprite.__init__(self) + self.image, self.rect = load_image('heart.png', -1) + if rect != None: + self.rect = rect + + +if __name__ == "__main__": + MainWindow = PyManMain(1000,1000) + MainWindow.MainLoop() diff --git a/pyman/data/helpers.py b/pyman/data/helpers.py new file mode 100644 index 0000000..b7954ce --- /dev/null +++ b/pyman/data/helpers.py @@ -0,0 +1,38 @@ +""" +@ilya-besancon +helper functions for PyMan +""" + +import os, sys +import pygame +from pygame.locals import* + + +def load_image(name, colorkey=None): + fullname = os.path.join('data', name) + try: + # image = pygame.image.load(fullname) + image = pygame.image.load(os.path.join("images", name)).convert() + except pygame.error as message: + print('Cannot load image:', name) + raise SystemExit(message) + image = image.convert() + if colorkey is not None: + if colorkey is -1: + colorkey = image.get_at((0, 0)) + image.set_colorkey(colorkey, RLEACCEL) + return image, image.get_rect() + + +def load_sound(name): + class NoneSound: + def play(self): pass + if not pygame.mixer: + return NoneSound() + fullname = os.path.join('data', name) + try: + sound = pygame.mixer.Sound(fullname) + except pygame.error as message: + print('Cannot load sound:', wav) + raise SystemExit(message) + return sound diff --git a/pyman/data/images/heart.png b/pyman/data/images/heart.png new file mode 100644 index 0000000000000000000000000000000000000000..f5a8886bafbdd8b6c9fbaaaf0a8b5542e6963ea4 GIT binary patch literal 1277 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 literal 0 HcmV?d00001 diff --git a/pyman/data/images/pellet.png b/pyman/data/images/pellet.png new file mode 100644 index 0000000000000000000000000000000000000000..78e40a1763ec54c9134f6213416c81d843703919 GIT binary patch literal 360 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 XuyBixx1lbn00000NkvXXu0mjfTE@_` literal 0 HcmV?d00001 diff --git a/pyman/data/images/sphere.png b/pyman/data/images/sphere.png new file mode 100644 index 0000000000000000000000000000000000000000..c1ba682b809870d7b2e94f986da2acbca4895f7f GIT binary patch literal 43489 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

SCbF@ zTc=vIBr~ zu?!Jy2YxN{+2#z^>8|zPBLG;Z%W91V4&^iMSBBw|7A)An!XG#?3l|4*_l``5KO)b) z>*M75;Ww8z|IDoecyHzVBHvlg+Z+9)+)<7%fqIXPHTK+vv|UFXf*(yU4n;nBUkLnL zF0u!w_hV54Ubh>o#IcrX2B0OLs9AF}h zAQ9-7#?3afLFVz-r$N-SB>0?Q^}L4mBm1=2J@0qJd=}a&^QHp8Bow zX!=Nb_dC8x^87=$4&bG{rA38T{!H0Et~0i%9OKP|MalHXTx_)H*0vv=jwZg*ph7TW(9p|76~J@jIdsYx8M8%B$-U7y*4$3gnc4S7WzLK@>1S{(b<%$LFT) zwF!-R@~`KLLDwI^;NYOFLlD4eMHg80A<}E%e!~LyPhjj06PPxK zkjU9M05B1=Fbz@w9oKT1wb{wIY2={F>@Z)1M82pm=&-J-^`~JInsunz)P929w zK0)#1bNTmh?^W{DEBFHsnbr!y^8JtUsoT(MCGf}}x^qt+JoBA0-@IIIZvJ$6-J@Fv@WO6OLF`W+<+=uu zU!Q~9)*s(F0fULQ7l3sl=W}_-_|u;9+geVSuyI-S?+=_sShhrF95DnZzzHJ8Vwxl* z{Imm>h{fl^dR(0+znbgh(S7{8a}H^X5R4)MM;UI0KLuET#&`#_8ZigpW}x-lS3{p5 z|DW=9|M+jK0<>dP^L)vhNa+zLm`~Qzoa$p(M3zWkDnI0zSN-Smj<-A|*N?uX{H|wj z9l-OuJz2JIF9-E^`<2?p%sgBPqUN5YW243h!h*WJkie%1sRFlEs=XHW=}`0idw^7@ zEUwW7Nj*t>!%o4<$N3L(>X8Ac)ZUwt&&wI%$0z{v`P2;jPzgWaJoErjL(>E}Y!!o+ zLL`OH)GcZ-P!JNP90T!3yAX|z1*!vQQUuByKfo&GR|5youz=9)aUQK@`n+@fuew^j~=2jqA-6Tpdt&)kPSjX)B$h~Aa9XCL;DrO zesl!WhWGE`T8)wcf=fC2(=@N4a0n{_mA)dwHQ>4<^X8+(aD1FKUF)Ca-dp4H%$!h7{#9_H&SxHpaeb|4@Aeej0g-Y4t`;BN^^gKLLipdQ@)OH}K& z;;Z=5A0qw}5`YZKei`Nxq#Ef|hp?>hxp4q)w$k(R_uabcKdig7I)ZW`Jo(J;l6RLc zeq5Y@$h&VHz$olj`7g`%b+J)KpdJ80Hpr(_L;0ul@=nJc!V8$QsE`<+@X zcm!I8#}1=%K|JxY-zoX6kBbxdL*;>IZykWY-95JQihV;lXc{u>qKUe)6WY7?4Jrhk zgVAv#QS{kKdSkt+VgG>~j!>mRD0OgJ`WCSHv~MEnxC?~#hg(4CNz;Z0VD8=J_lNE8 zQ6%6v0+Yu8I64@TfdViv{?S265CK41{o8SF^?s{>-tiR7r|+Ap(VxTvx1I~PKl7F@ zV#i@_5#K@|o@!N~0z~&^&;MN555_80bN{JI@Uav&v~^Q+M2O-mzFA0;|NgKvuF#XuRNz3&0|7vE z3`T?>m*e9~ULC>l{a26%TtSXMc?aTp2d01vfP$ivbb0_1=>kB`WPFZo!vcipzXF6G zZEe9=>I0`_2^>P&%8|L9jJX$ty<5wIkKjBWwFt`_pLxX}l(+ukJBq{kcA;qozf>K- zHT{Hlff^5F?RJ9pwHPPEUQ^JuygkAmcv-0N^y(4g?$?fH1_)Ln&eyFaw3<%K;>b z(gBz6>!$PPdH{g@V~_%@NPlzO^A_?S@s~Eguu6=h9J>)8p*e@Ub)Obsu#Jg3RvyaV zFMH*;$vfZrPPw`HbHCIbz;7$Z>)SS`&2{?GiXN2uOyayAKcJz(N#oDt!JDW$i%dJ$ z65Q(i^Cm~_44T4I?lr*It(XSY_*ve|&DjftJCb-~M<9@=`3T?ym=X-@{Po`ikpSZY z(xL%e`I%o3fPw;%NH|K2x*kUk0MA>??=#>5Ir|F05%_CP2kx)wNR0rj68myJzei^< zZ!&J^-*Xij$&EUEQ?Z5R`H~Ji@yxf&eEl|g{P=%2rg<0S+8%TtK zgBI%kOW5<@9>3YJfY#M06&Jt=ps5`jgq5oRDRyzz^PhE#67OE0-oHqWHTLHsN_x0@ zAWy#R&&b=~^0UPe{LS};6F7JkocDs!*OOR&>t~jK{+qJBGRm{frT&9boD7hE7Q{3P zubl#r?w1Pp#(^~f%Z1*1FCrNsC*M3TA&usZsf4 zPO3ahHw!VtIZNWF4{2q9r5Y04t1Ho?nu4V246g3ITAq5@e=F~L%U8-g|ImBe3B30s zfYYM*vBh@&Y`Oojow4lc__gqAVnm({*>o_5JE|gC&k%G-avfZ?JXbDv%(s0d6= zNIH@l3r2*8L?vqVO{}pmo17O@ffLOITuX$9nCk07_sNI)av%=Cp@#gx{^Qg@rhs6C zVfF;&zbSSAIx6*W8bI}bE(0D3Jiq~1Ew}-pK>fAK@I&4OuKHO$M3LcIU9YjF&Q(5R zKGct@4q8-^n@1nS4nXATvVCjWKC55&ydgWhF93a=!6(@X z3E`qh5;O-5A_4dL)-N?nSJ(q8Px1~X&fPI8F`wh2@sGFw&H1fpJw*x5VIbAFg|QRK zfKe5oMFGNT!J+T&Tcd#kr3}sBuXd^kQ5kT$tOPh>0(MbhPzKaW^<5*g8Nk6Acowt7 zo`3cMfq?H|htr(SakZ~%LQ5p@Y;`j2{4dVv{*%9^y!2b-x#zyIyy=}=L(>PB16U5# zAGAfplk56O;z&9`<|P=}rCtnVuWrA`A90hZcl7?&T7M1w6TRFq2sJ2UN?#dJ>*wsb zh!4Q!Km&##mH{mQ zi!;f9VHpr|{D&yIX{y&%HcJh9qkgk*ZmQz>XasuZ_ z&4(j_flx^bj34^|+$b>}5T8&fNWEsD(m>CI=>X~iPC>gaHU4Oj1~|a)Fn$gVpHl$G z31Fii=>cfKl?ZU2c4wso6CYqD0_AOr)A4gE6>REnE}nCks( ze)#L%>L4B+PT!Rd+hX{{Q-7$W13xa;kN>itCHWFLfcHwIar%zWIEr{4tD~g3cZS?$ zY`;-AAkXU?>i8R>j9fyLSU&(?w}kzT-=EZT0_;rm;+#V;>e^uwX$L=$el`Hpe_e$k z_2M3B@?}6q?$_5IJT{O}3!rXk3XFaVN`rxF(AqAXJou-eT+D63HYg8s6tI?4YtG#a zejQSZkw7c;&3zM6rY_N?9N1c%69g44^iKdhY8|F}O#bV!yIaSTT~FJ1v_*1!y1FM% zzU({Xt^fL;lxW}|9p@Bg`v8vsL|#?S*LSu7or=`lD5norZ(|`}RM3gE0oRsX4Gi33 zg3U@ak|3Y1&ngZ#cF9P{AnC`=( zoY*grsP2!AKF-JwTX_#1f$-zpC(zo6p`Ey43I-~{1|5txnjE}?_q3HbVJWa4*OYxv zK&lmi2JTsn2G;xY=1(oad@@ve5`4GOV@+`=Pp9uZI)MpBl~<9Nt2?ig`%nH^dGpWx zMtSpWip#{?-Hn$?G^<-jWTc>KFs zepJc}4R563Hz+?!z!SLN8hlV$Xy^SMPGLlJNO6~-SzqgJszNS;NdfH_wfqT9UqkAt zC;hkyK1#^_pseReK|%g65%PZ!&-{buL`O}V5dQI*)+WZI@w>`tR@}GLUF!IDHY7)}HIBg8D!In|k0+ z(>`IUo9js9*O(26I*ltpNRBq?CIF&09$T=1nG#hD#F=KG7 z@8r{n@|(%)N~H9JJb3bt$^7_7OJwn*FGXD-y@b)lz49BswfvBex=4u^z3Ff@wHPnp zUt$zdn2ZfvcS?p0m|OJV?+F1*6b|zB*!miD;2_q;Dxf3F&aoOvV|OFQx#=kdwSS?I zI|bbQsSo{Spc>Ta0gTFuQRRU|L?wEE8YmO-{mD-x7W%%Z1sN&IQJ11qRR(%9?~j0f zLNpjflx8!e)8wIhG-AD-qdRxrAom{p;o<=9yd)98OA%O9EbKoncfM#u-?fO*8O`q# z%Fp$T6G4FvYz|^k(9xWU$SK^d;WsjqT7AAl_F)wXOOFu7BZnUmdm&6jc_yItsS^T+ zh<$J^T>`FvGxkKpo{^yuTX20pih&$r5m7-r0r3S$U)=GS1|^x$>u&JYO8sr0m*M;= zfWE-&3G@HiUns{_9#(aMsGw1VEt69?Y^(dqO~~7MxT-^8A7M0Bs}c7e{CjeJ^S$!u z;h%r8Gl4^TkxL8}IQ>;+&%d$K9(tP|mG?$KALsj#5p&o-!~=G?0MYj?-F$EAct5H zNN`R70V3J~B+|112OfOQZNWI#{2QphYxz|-<7^H?IifV+5r{a6F$KYq)dAw%fok-v z;()JdrOIO}ppXhwy~ycsko)(4zuY|jewnX-_{GEnUWydp>2hxV$g$*?0%9FWX&Vc? zqNMY1B9wUn$W9#A{CykL`GwzWJ`G8-^>nWtWkRi}OhPf5vMZ$9FTvDa_$=JdRRKBm zU4cd@K2Q7!zXM4^BNiaZfMIx!+W)O2m=0T+Fp?Dybp@ul(jaI4ju?wV%t0BvuX|jB zv>}Z}Pw_VjRX|Wh$#BJ=26Gh$k1z4~6^v%bRqoE+*UP=DS|JD!_|t|DRO0KYaY*K@WN;gU;t!r z8e)_p;Pu|X6E`qZw$&_=Bp3n(9WDT=gBut!f$?iF7=-l#D13IS{ef0?rIbM9Fg=n1 z=e&Qn1vnbq%1v0-OSCbour(GLmuX;@U^8|@;IGy8o4Dw-(Tmqq4WQ0oET} zz`zLzN{vLce8-(Tub1mb-z?9*{ddXrLwQf}fESYq_{HVee6^4`3TyaTu%LxY{w@$0 zt@PIS)Js6>u?zSI$4=H@mDec!2!4WD&q3%3>z+fPJM}+}YWh9nYHRor38ww zpvK|3%d;o%6ryNCqQReB;tMd04(v-itAgy*fSHU%l;EZ+WEf>(i7EkyKmg3cRX=T! zoQs5@hasVOXoB>E%6&#+BX{e{p9$YNY7O51>f!+YisYOB>;1w3l%M}h`R9+WXF?;B z9*paXR`OA)Pj^E6TIC6wcfxrBG9JWvMXR!*9$=&#yhC!}GRT^X+jwG;SX|ABez*oL z#}Ss``U4_q;WPlzB1K{K;XBs0S;&J+eBE$UV*d>d{~{uZjH$s&0fWLSP0T>-Cs`fG zv?&TJfPHAxmim;&qT?CRoE0LGBR60^MFBaWZcoz#dGOR9E|I|ZmcO5S&p^Nz#{qmp z`Tu7erM|dXA`2LiTj6VZ5 zvp$}E(-x*QmikD_An!j4jZ9lz-#HKxLB%Lw0imyh<6%b?pvwlyc2if1uJ2&cwB|gL^izHuzBZT(fO$CzbMp9Y8MF$wmtBn{!k9x~ z!I*7cwFizt39MQV7LELNJ^wZk1!)%$UdYmy1RL-*4Ge7PK++&e(6LbuokB4CuX9vU zNVb=H5eCpXgG2d|MLX?;{u+dJ zN@~H0(A!A*n}=`m$nAqrGmiNmfn_FcDC+i2V;w;`H^UH6LihP9V-Zu71lL|qUjby& zDRXGCvSUya4RE6AXD9~TPgFn%s43OHP;qR^V3TU zTHnl+goc9JK>sg5*fo+MPkkvdWEWDco+}Ful}{I5NYBT(Ux+h^9Kp!RjAjsWl_CY* zm}$qTag#pUQ6hF>DzxY{95B)(FnzjutsJg?yX0~btci|XzNK{x`t#gM6!Q7y|6k%F zEc0oZxrw$HuHtfm5nuWlmwZ68MUjfi#)%{+wrxAgGohZqx$=eeXs~PEFA0xHr)S^== z88+LP(uc^MJ6}_rz}5a#=ze>l4&c|6ul;vqpxN(CLp?4xwgns8mtMHir=9e86g3)f zTi9_$Si)|EFtYKe=Rk?-%gs$XC~2CU*G&-VWWo0g#E9nHg}P}RzMG75b=?c4cch?2 z&P&7Xa>d^RNPEv2h*Be109-~|3^Is@G$3v9{ic)1_>`-DEzcjLfKPk=4&eFc{>$qB zHRa!DPHBW*aDFZg^Q|X!sa=%Xb&-Uei4Gb4Pj+TMkwvCMo=LneBeBUI!hJ(Yerk9uPw+Er>{+g*f9hc#z@+-?%{02m`EtgGgi!O~Q z)c{}^JZUysO{qlar1W6=tDRYmHHaF`{0<(&t4y`y@CR(qTlPGDrPYB2Kd_{S^Xd@T zX|?EG=WCuwWEL#2*3+V++}=RoL?s3hjX^=)A1>|500>O++=Wr;PxXQ_-}6|}&kmKe zo%g^bX4PH|+6`^hpyZ3kFu*pV2!O98Oaoj+N`2GQVfu=4ZGO`80rS#P-u&|IZuzdS zDc|;_%lCD=AdT~94gByqtU|f5CQ1Qq$Kjt57j2(w;>T?bb95V2065$r$zbxyCG(BkQKpNQ@kwUBq1N}|XvGJERHADd5?Z+j zjS_msSoZRDH|ubeciH&(kAC|_+UhUX?b7;jaAE7E9~B%6#geho$oSNM{;^VJv2C>1 zULC%&{QsjbP61A#`(<0Xebuu1?^VD~(X(~H`|~c{afmwr^oM$Zmqv)wne%Kr;1oM6 z>kh=_`Rb(vC?`i|eUvmh)@E^3pj@sTm81q>=m@pfa|WdGN4;b!)jB8(?oAm^fwS5} zlP~zrORj@1MF9=NDOiLQ1W%H_x}*YMb?j$oLyva0bSd^%ZXZ#cz*iWQp@)%^#S7PN zE?{yQ6L9yU(F?&sifGSXh*3CmuKuiJ0Mh_#hz^zm$8CoM$Pm(U~dxGB5*yX?}(FNjz|mFM<(#OJVpuAcT#?qe$O<>k3oT$0lt?q2Am z9*g|u;#5Aebx}oJlwi1bJlqqy1y?NQVJ`s2J~19oWn&`w#YHqnb(d;8VQ<4Ug}W)QU_y~`4k(0 zjKO(Og0?B0zEmFm!vD~xee`iRmpRz`<=lK#bWJyngt#BW zdNk7pA?ng(G0DEv_vmxZQGrLQ!}>g~@3rZ};+A0D%PR-E=n`lGxGzSAne}7AqEK~c zxCTI@>|hPzSLBOOcDo?@9fjL@=cK}e9IV2>CoZmz~r5a6-$k1NO^Fv)5Y2ueU`q@ zL4(h*;JfX7`eL@9KE2@8-p&}gO4z?4goUifCDU=Yo!@2S^Txoji_miX-UCb=Ua!Zz z%{4e(XD=(S`7)W8X~g3#o$VMj`NZ;(pS6DZj6ca-m!IvPUpt>}*#)Vji1#vS}Re?BsbY@8DiidY7D<$H80nI~`wNM*9q4`BU*sDspyFGe+gpt8_`31yG=_uB$c zEh<&nUWz$bxkAwf+h6s<=SES(-s2WmfK0~wCUSw3cp<=_1tq1C!3MuaBPTYBd~6KL zvidLzzw8#6^0t75Y*mO-lD?s2oS(N&DGs)C?Z6L;WBU9fVF<#0Ja4A^C#73F%`Rxz zBEyt(z}E9cegRZG*Ja2ZXAT9Q`!FQ z^7x&h12{tf_^h&h>MoeMQuC?7mkgJk{aMq!)agH;9_Znq8QZTIsO*<{bda~;l%X!o zNS7hSdxmcqcA+un!Rl{8l#&6(rChhe7x*)CfDh#0GtT*;bK$-X@;KY6Ae<}nTo9`7 zMn-fTjq!oN*|olpymt)gyYs*)CyN!N_?#zQ=5&7Qi5S#x=h}h)Em;(QG)}>dNpWk# z&yGPSTHzv&jq3QEhZoWXt;9yvweEP^z~N|smmvjGFIZ?SSfP1fi1ki|F@zv4D#N53T%jD`C3JB|tCs|5a3-LPL9@IM4B91N+BtAEFk~C#`W6_G1rE+Q4XBfV z-0x(EnPC@30BIgn0wm(wZzc06mB8DSURSm^Zr2pG12;nswpW$6d@f$UW+eK-wv+vd zvM36U&QHXueBRAqc6sGU2iH%u4@kX@B32zV0PR*Sg3dtB=iG&wB^-Dfc~8xKXzeam z=`X;Qb`2M_vf=WomIo0*_7{ZZII6Hwc%OqX^3t-60`?P*P`r<7iZ27o0y`oUCxyM0)x{*wSfDw8ky8zil?Cb3pkjnQAg)_4_YuYs43uA8?tDzx4XAa$cq`xc*|xO(j_gAR!JGLi z-PksX1!b313wHnnXh|L#y#%4QTo7U6FpciwkpS!LZubLFO*zcZ zeJF21O*^vzVu=ba-1UN;Pa7KoV*!z|aCBjLKQA}Cpsv4H9t|9x(F$vnx^ODsj0=Cy z49AcohkU+bzzz|QlUiRcZm*kYq}k{?Qhh~v-5Wy?a8Un$b$R-8Mxk-H*mU{2zF<1Q zKBlAn2VN2hMCDu?$%T*3mF@4KMfA=_-L-(`8Ko{bt1e$q9viJ@17eCrVLXNDyee7L zMmEFiOu{y^jx3XVVA0N%Eb~tF;S6|aXG)ls$A)Ml{GvHYc3f~wnnN_}KgS{m$?y#6&SqE`^I(B4gCBP3Ovd4A4WWY*O&jj5wEH4T`7DhOv}zXs9~1rlfBw z*Vb#gYIpz)F5?D%d3o*`cA`uHwli89HY_RY*iP(%v>^mc&VAVEW9$t5+q^2U+W9D> z`|Ba)u9Rsz7)0=UTrNL~7$o>EICkAJlXzdu0=)*FavVfTVdQHcF8SuuC0`3}5eRsH zDgW6hbQU?&@2}$S4$yczW54Hk0Jc{n*By@%Vs2;h5=AwhKt6m_LNxO&xM9sZa6nml zgft3iqoIqD(XSWq+~?)Cfj$mQa$!C@jhR;XxemabxAz)_vMy8xgBYRd&MC=YC6o&y znE(_Ev4`3JZsFA&L;RV-{_Ky7MaN|2AED*>Wdt} zE6et#Q5tM}JRA)cPX>hd+S*ZD@Zt_j>#GJ`1UcZv>jmkEay|2cUScB;c(%bTssiM| zxTWWdbFEql(27b{7X8f^e-1A4*{_7FG2O)Z^1ABHJvz=9gUx+3U^d_oJkQNW)dx0y z^G*!`PUHPYhcU-hkq{HXD!}Z~dv{LexXj9|#J!Z(2%AbrT<-zCLyZ}XpxdZ8}P85bx=+l=?RF&8Ua!Lk9(Gpqi?!{)3xsjT6m3T0_xT+h8043E`) zS%pVuIMyV&?Z{sw$?cShkwY=)o;0rGsxK?L^kxLgMGj#0PO3eh(U{p$;A8U^ff?Z= zmU{=Zo_hcS*Vp2LM9u&miDD`HcrHGneBLLNKmP8D0Wfi}TsxnQaXl(|+9cv0WbYCZ=Mz<^7@sJspE1x!o0G->A;h&kXQknvj(jo6up zMuKo34WCo4C?auDMF2j!ZZ!Y_6CJaTvFa)=hw}E%@v6Z7uwRwO-gJ7eh1VeF_gxld z=1E@K+l9F~0ekg)gcPXmt~+&mk&D{S&o{4(QUUsLdxJrAZ#aeR@K-MB+9UACM$ZrK zyNh@34c8g>&8dH!^I_DNbH?88-;h(7`+wc%;p2Hwg0ykE5rT?@Rk;1jgMGOnz%qI* zI)oee?3?(v4u7vv1Yo^mad~v^bKI!W2utUfA}rMaZ~zBl4!(NM@+sT3Xx&Aw6rFdA zpw@Sl71JQ5$P#2MChL;Gp4q1b=!gs1b=G!A9o`E|^L_ak3 z13W~6)?-d@25Erm0O(TB_t$2KiNqr~CvUHrYUr*t+^sY0j}vij>f>Mt$H!;!GYa)& z6zo7DOU0qe0gAh%>VSvdz6Q-owA5CyB1 z5?~jts?J!LEysEC9MFj`hyX0_Y!;*`Ir!c=K;H8pl9_3RN28|df#S+N``q7EQEZUH zP={e2RYRCRu)}je6khGa%HN;dzVDD{_tIa!@Bj?)6RBN(rm^E?9Bf_CEgVzkcq^{2 zxvB^UX|;%)SBA2nzCW6;cZurMNa>38*BtJ*CvF)uL8$hch258`cLJ-_SkTeuN^Xfz z9tOnH_Sn(5r+VQcxR@_6i(kA78Oa|0LcO-pG%yxeh=-##m+_0k}}VIfR?O{Mz9&pk>F+UkKPa4$E4_ zx?A@5)61RjKY{`Yj^S+bD>@(^B7rL4z51YJ@pW&&2C$~~8!YB(Y^MZ=uFT2PG%ZOyn(LCEK-Gm-)=Yd*K(%F z#?&B_6VOx0n{ZBG+J4uuNKnIdHzX6QD~VPKIA+R`4wRcv5s3v?bcbLPhW-+iIT?tY zDTJT<6@3`(?4%7HAZqZK^#G@f#PW{bfOrbHol$mDSw@I|`Z1k5qJrCNpDf4o4aN&M zUErrRL;GqK*hIp#Rn3*w!WEv?bAdQx5=_ss3z@Sn9nkZyiFWdmUI7;RwCtULT7WOq z(x2!i6pRL8I2x*T>FFlFysqA9YgJB7E=nOcRKQSdD+{hdlIp{M)6EgI^55}wH+7%# z1^^<9B(4MFbYSL2+ySp(ce*SoTckNTv2*j7% zE_eb7@x2;!LaO=lids*8uqZSOI>JnRdLYOXP*`EmQ6LZC215Fq&G_2=w))!Sokymb z1r`uDj3y?j1+CHCYpvd(jk;I%9(CLzF4D`UVS}tMfz;#4@bR|7ttdVdcIGX_c342#hE1&DeFEoj4bDJ=X~P8itl>ZA{_T4( z>VdRLjZy&mY*$5z$~;kz0XhL{+KEb)Xs|MmS9Q1DjLV*8gcs!gd5QQIgJv$vamzB& z*S)UAQ|0qM-a7!5Pbu4-Q6H63`imtjBMJP3ir7rV$=b`|vD&Z#9C(TKpP4x2%OJXs z1)P-Ip@i@{4H%6|Vj7C8CK$d$dK<&9t?~!&BqD&% zXcbNp<00<8ZTqx3fmT+`)%jo=0A)Z{M>ZW3rbhaBQKOO&b5Dp95pf$b&eyy4e2Dg3 zOCeT6zpl?U{zN3E0{sULmk>bx=UA19H6DeoLw`LzQJ(ntat#040i5T@t}hQrZKnM( zULF4)Zq<>9PLV+OKD{8mKO;Hbt=>vtVy3di5DuU)y#pU1*D@Z{Wfy={8gL(|Z@?K7 zT-3_*3EJo6?Sxn)VT~8cOa_&=h(&Q_gnE2V)w6>GSfc~ta`1j@Aj#z-fC(H$#Thht z9K?o-uHy=TNN@O^=th(RXBM{Z4fO9u$gpVj8TUHcl7%g&)d;0|($n z(~tNAIv^3*;2LVqC(B?6Lm*r@nj45t#h4VKR9zSmfT)DH0xd@09d*R9kt_58G)zFj zF*MYE?pOWQ$bp-m#8+EfZ$+S)*RX?io?MGICR+Iu5sI|$BN$$%_`9Rl+&!AF1!+Jv zYK4+thUes(h(W-VRB#?Sd+fk~OQ4YiIq?WE_m5bz9e^c10^IWZ*OzEK9qLP7Yl~O_ zrKO``Ia<_BhTiuOo@R3K^KB_I|LQ;hR``f4n1!MtnK~tX7sJx*Ft_YKy2928&H7JK?lwe(I zR8O!Qbq2<@TqLO)_hdc~Uvs-=eDg*cX+7z!bR!V{W64htA3#qJ7iOmXzvX2He1(;C z1l)s$53I)wQxJ}rh{D|gfQ|BudA0?tL-Txor2Z-!_>C|9Nk#mnVF8g-7^nmx2-z5$ z8Oc1hl@2>O_kgCG2kJ;|^%i@ooPyUh4B&NA`-I)vN2rSs1oP~}cWvDM8FKmd?=={71N|WEmm6>VD~AAk39tl6 zjY65J(({(XH~v720NU@e+*8we2RCE31UsZ8C?eLxU9ZSy7jHAc!N`k zCC755AL|6H!n{Qj23i7=yzw(TEL%YF9tfeh4nZi#DJ%RoBLzS&M`gg9?X|8y0ILSn zK;)te>Z!=wnHi}%=dI5_voH+yfgp8)BLRJ;y#K=vHG=pM8T6rrz&w?-yMZ=X-d3+q z5E}RzIiC!BXv;e03Lt*b6N6U3;!OX*PC3yijNuXCN+JDP;>&$)TrB2KH-QgFdYSsU z18xu`lV>sb3CET57^g5;?L~Us!D`5fjDM~3XW%L%U;l4T zfvLbsWx$c@($M%x0myL0m2Fk;+L|*s12pn$&m8QSfCwgD6RC(mKqKX010&CKue7}U zJyU3(&4>F61R_@+) zl2+mfc-tE*w>Oz6YH5sW_ekim0mE=z+_H27K66By6t5 zEnRXfL2x8pMW6?m*O1@MKA2*O@HL-+ynkKwTkb!3m7s2_?4CqB%}EsMsb?b4ig}E> z0rM8t=bQfVeA8uMC{sJCcFXR430#fHLjjmSWb|27Q`F0iI=X-E`)uHVB&vT?j^v&XXuzYo zY2wvZW0spGkG!v;e5N!a`vE1YeSbt1jd2l(BEO%bv7qx#QOXME8%$t~lP~)DL}s42CHTZDT= z$0M5Qm|n9~0bai}0)<8&%&%MtSQVe*g?Qah-EwNPH@@j7ascaVxFRs1 z2j@A6Ff70VnBF_bLqxK8GEg|wm3)EMr+8+;06wDJy=M~l0NALFUAg}sR`|SCqgKG% z0!E<#7X)#Nqdk)Y#zK3LBQNc}NF@A?%LBP~Oxdwhf?b z9#@k`^qCN36%|iLEAmX3fNs?T2F~n2#wuGiV3lN&Ev>+jY-{L0^&NOC?U%X?S0;85@{DN38(3)dn%52g z$-oYE!UPan;Nw%k14!iMSTJ{@K9Uqf1U9HWuYC@-gLaz#zT*O2jeCMVgQI<^r}(0G zX{dav&LP)&JWj4jP{(&AB4}1pe9iKm^C=Cmo9$pU?>s@S?+71M_A?eLX+tiijo+}U z52vjUVbvr6CSWT^<~`$=7`j&Tv-%Wk>%n9n#m>E2_s@{$x5pde-?#w{7jSZ6&_#$< zfIRoYA>87d!Dw@!f+SE5%;NL?4C+v3LEewoW4?cQl;w5hJ@>mdYa4WP5+SWyID@KN zZslx3`OW%?R-MjZBlEE&IAUk5L`58Ld2U4W71W7Z9)Ws8v1W|U?*`} z21jiG1sos&V41-12fBdW^qF9O9Rq(jBxR+>&R{e%0eAD39w3m1DFEsL%8rmohXv5Y zrOZmlK<4Vkidm&GSdRr*kd8&Tm+4c7n=Btz{- z{zgeCY_O<0FgYq4N?_Cx&@ciTZO0kxr3rc9CEJ0@#F$$JI>=+I4rUl|LlANbFz0Qg zBK4I4WsiQ?3<6hCYzH-PIIEBcau|U0lY#FqtceFHz$zx%!Y^!9PH`2$q8@Lq&WwhC z+CYArrMyTzIP-I)6`+|IfVt24g=N5I%Kd?*I2!leR{xpuZ&VLviSUT!XZGMw&eJQ) z-8&{b%Gt~ggvAKOJRIQ4%vj2|tz!jxK8qvE)gS1n!yJ;Q3;K0JETO(Aop}%ARG~v) z?Q|%=u$BOqL0D%1!NvC8l}W`Xo)F)r0pModA&5BnFs1RdSK2T;(wmA6wC|j~x-X_y zuH-ju;cLR&KT#C`jGc3T<^t@N068s-=I-G*bnA0(C*nCk?epv_1v&T8zzFq^#7hz6 zW9cvC0&qjnjr5Oo{V3-1c|WG>-f~u-skNW6jR=#7zzO$@^M*%JkH`ih`vxMU&L@kx z{*Du$_ESF}Jp?#KmY{`qAOw`gpmk2SP05#U_HCSmd76u)KV%Z;83Ce1j zN0sw*9~9^us0N{kXeMLNk%IEhmN8Yy9>5%_1I+;+#h7dolt;Hx;oU>I`}8spB)azf zaE=}aQ0^H3&59I-(|iH3F2GJIr`k6pU8V_m0Y6~iKsrgV5pz%ipiwnWMeyKQ)JqTu z926OeB5e49&|xG~=K#6DE3WUSG2g-zU>Y34BgkBNO{olnz@AdOtx$~? zt{6?@LwUT;5=0?$aF8%Gn7jv6**ewGpjYEc8+l}9CDs$1r+Q3L4}gt71$_Yf_U|Z{ z8B3wkj{T6u*odr*YVtJUg{j_gv>EU|U(JArI4#NjeYXa4sxc6Z^1*)s}RJRvd_h zM5{W}d6P(|7r<@6%B8=67!-+$WW*d=JF$}2q>9C){)BR~Pg~)d0Vjp9T>EfIx%_Da zk^)xHLU3%HYK|oxw(n5c>isK~x4j;8|8i|O%I&eK?mOgW30i?IkRXdxW`v1K(HM3J zi!+0Ntqcgc`BD6nSc8qRCm`+B(uL#0Gl7C+@Hk8~)2x8Cq({_01?rK`i>*#RK{&pr0M^3$-~ zFno__zQ@*D9nS`gQUk1S8nhTIt)8nqGpw9K>?+);T&n|#Gzq)rDDWI^Y!uNnk*4dq z0g59uSFrvhJT{|J}wzOLmAq83;eum~#V$kb@ooY?kuRPlw|`P#iNc(p(I1 zq;BR04sjvdbmPM?AI6fk)Fz@x8$bp%dfgeUvll65iDw5Yh5M>K`p@B#2I{@8d(e8t zS|t_KY(43SISv_C_pTvHJ;0UlBqhkJFdZY@fF-+3Jh>;KSjhoiUnRm5a`4gcCvlyB z22+LFOhIKK5beuPE`-yWr3d{m z%y0R>)_)t0kq0aGn$r_wP>(SjaNlfPM~@V>I{ZljpwW7jXcGwsizJw8g(-&G9={(R zOcyltj1c|NcybA3zeIyseZfI+sZP`atbHqOsItoa0f3A*79ma|(kc#;5(tK-zG=r@ z4A2kIB*NB6LBKJfdN73X4s@&X!<}1t|Un^9qe42qQv}z-!c3f!g_dOpmz=SI`>mdIKEq<>!kEi5U<~eoL<8JlSVf3v#gPn{h}Q?Oz!Ng=Ae2jS2#-Gs zS9sMxVAOgEvP_apIfEoQ3wky|&;+CmLWGsXDHF~3%UCAl8Gs69!E2~IWN-K`chi^x zY{80U5gCY?ay%$?|1t+Wj=w@Abq}pwx49G+s~dp-hS82$bV4tU+n>U zK=^5eQGUsfr9us0?=qS;5nfK z_uJLy@|`{bgzRkS>&ibEs_5qb1*Ht-`DjKAL2Rmlr~-*T%c{))o&i-kPg_@)LWKa; zkOaZdhAE)L7YrV;$=CH;8L&x?uZEro=u2bckNDumjX)A$08|AK>#G2cO3b-A8ood) z@7#y;Mp%Qx7;rv;5U(G#{_H_OHbkJ4b`r$w9i71%`udZc&FE@NQA+Gte_FgOI0 z5z8{d)>1%t zL<2^(A4BFEih>+W5N$Qe_lZsD<^q!BH%p9=f^4A&V9#N56c`wie;-s$jLyZSOT_0SN|T+#no zy@SG$cOkEZD+L?szBqu#p*dJD^y+H)0uG;mcvIK%u~oF1h5%fHA=7T{%CoTE---S@ z>Af8x0dD*Wx){6s3Cnk;RQ}$XDX8EOT&ScZ{e@$+6^;ixGtT3cvK(%ZQWjN`21>Rlj?sjGs0L^Z=O@gsv3@GTJf#}@y zUyd-^=du%VOjr1UC>!4L;`V+4l~nBX%dnCs1RV3$x|^ZAm%#I6X#Bxrm{AZEJa@a` z+uu{(_Psf&Oks3_65QHR*z*3gt>SG}%dMnHQG(W{pOk#(m~#?Bsz>MuQqaFnoNw1# zk*RS;s1%oJ<)`kut~FP@Gw3M0*@xq(_t#cL6#K*$UtCREYH*YlG;hQvzI_;@N(|F; zP%*MRFAm_@<630_4Ojv04g`IQ5)4qkzc)O~J%{yR(1zH5C}mcKVSs#01Fs^9r8btQ4jL}HRT#<1!M}tX@zEokqN=K9YPO6?wP}LN((YN zDmjsV%*L1;8>~fR>=jeg>qEKo4q1GQ4FJ9!@UI&KFMj%U2eNZJveI}nQWA14!8A4a zTw8w6AJ|G0t~-~<=S^JelvpxMgD4`x#!S45P9|cH%3$`Nj)_YVP>F;hQKA%6?{$}1 zA(C&>E1aljZaM8frI0Ldv|ki1krb3Qna(&%C;nk6K!Ha}HN1)iLrFzQD1-?zyy6eS zbg`JWo24)5VYyEt-9Fw|>y5doid)3@rvs2}%z8DaVR^lz0B>uV1%IaojM*;Dl3pZ7 zt!EM zHF}^Svt~Yeupp0Dd9?5VezE+0tsL%~2VG6#2uqm_YlGB5pfQXDaS)_dqWdDq?y3k{ zg+n1qu8fCCUvmvL~1 zYMlNkc6dR`q*2(WG`JKFbV7$XF)U0*o*;CD{(mFqqNoNOQGa#NH5n0tf{H-IP0ysc z7e)pn-oB87pwV5Z*N3G&BT2PPs=ijC`kAjKboAgrY_xKV@9xX?@Ng%|&pyiXFb8md zX2%)uQqT#c9Ti|DGE>4hUZ>%V!=y@_li_yyNgbD_PAk3$g06(0OH_{H= z?O!mzq8Tx#9En4FL^k0Nh(w-Mp$r&I&1t`7n*3u4TRM>^Kv7l#)Yq-jGdvE!py0G5 zDw%X8oD@eHT`zfXcC*H-g-JgpS1}DU7_=#YR)9!1mdiN>#sGxMel(0^75Efi(QyJL z0r1yW|7)db)#jrwqgNsO`H1#&Xlb;4u#aQ3FC zuYd_VHp>08cp+T_K1;J9GcPpissP+y<0b=Z2Q+r!I1`dAK>H)PG2OwwP|8~ZK7k5J ziBSZiFf|y-9}23y9r&kS!$2k2@pPt#B15^6nszb^hm1fMrRO0X&}dwe5&?y}ws_St z3jd8#0>_`v{TxAq%8U`&rbGJ~(3?SqdoZLUb2>qFb1wfm@Xz`IKbei+q5&X17I4ae zpIyp;|Eg>c2c)}Ugv(U|>?z@K^`<@cA`FhVLAEW=&rk)j9>`V>`x_=8gVOt`Z(p>l zMi5)dYyE3L{81Sz5|4Tiln_}r`B%LWyK032jaXxlGqP+h z5vHx(*fmDY5KSb?&(+IH;~+|xCW!as><}yvR27LafM}eV1r>s>GC-?0rfZV>$-S=h zmObdl!X25IdTWKK_Wj?q-C&)68YCk@soHip{YwN;jO}OUS>9!XYbggFAmU&km@FDM z4;hqSnfk8gxgI71AXf+TK}WRTQN0k2uy~)?Cq_5_x&QXmx8TabrCYQcHF*5`R^>rDWbtU{qY?wivqlU@mk=Ok#LfE*BZLAsw9 z_Mx#sb2@-idYJQ~JM33Ss?&|?xDFG^e*T>TVye1v@v-$1%ZMlx+MGqAuE160H*NIc zRw1xVU}FOfvviVN4xCXC`M?q80$qn7W45Xe%@DPW=Dw>B>rf&bk$7fXwhIF(-)OxS z^$uj1g=iG^w=GespdJHgm4=Lw2R2^WdajMrh)2oyV`L)IWSWhbrO)}>v}|x5Ag24a z^2g5}>Tdsw^3QYSw?5f{h#CWbm=>(^-MBcJr;8x#(sgyBRtBY3F15`Y$qnaTs(Q+J zD{EuetT>CvcnWc_;)Eoz`R+$|`Fk=v_TsjE-9fMD(H=uR<0T%$%4$ZwWU}?q7 zI|Ec)(E-Y1G&aeV3$f*w$}&01$1_zPutI?S+z5K50s5PI5m2ribQdkjU}5xN;;{|} z_*h~q0tB6`xD29&JQ&`&Je2!#UE8I{x{duprQL3yw%=pe=!1<$*#mN0HDT!ivY$WH zNbP6K=RapQF8ir;I7Qz#pafb6gdt8fu^A1I6EkL6$*H9sS^WYN0YI&ZXe|?tN`+nd zqr9g%0o9&q7WEGB0pt}w3hU8fwWtE~{E2g2+xQ76B7(z0I{-5K_qP>Tq1>2_K$*O) zvW|oT#y^v4GNuVug&lAps!=ZP$RwGZaXV1+P6a@Bz}Fm93(R9J-NhxrOg+x^+eMlQ z1T~U<%V8R_&1VgC{FdYSkV>VQ2Yk@JWO4|ZuqtLmo?iR*vc0*@1YA;ppDWwzMk>oA zrfXDni_rfBwSEDy*=E3#`Z*goTdUz=O~v`7!qgcCPCO;1iW-*au3UDfD3*%_`7A4mCH25;XG6*ft&M z`X%v=M|^Bj-y+&YErcj{pOFLc&>XbPil?Vqps*_}!4>rjDAn~h!j5rWo^7Qvo+XpvLd`0?pns zX&fpj1EF$I(D|hV5O#SH*KUc{xdMZXh6d3TMg{9}$Uz<2f-+%53>pY%aC8vX@R6I4 z`R!XT&8?;u%PeS$P6AbxQ&FTOce!ZNE%)epdalSkMAj zZ>KI4T$Dl=ZkX#2LS3A3fVu`K(!l`CEQ3@+L7glIsfBH2zd0c9NTmR0qee36c=SdU z05vKBpYA>?_kU{H^#eptKc**LfV*eOEHY-+by@*HZd;YIVdZPNey+&An^Xmr1EYaA zoe-|Xk)i`3v421U_F%;9Gd2jM>;@&fG{6&5z(Lp(7!fe+NIpDNH>R;+LO>wa%M;CT zb0VVZ0lT(ZW2t4;>ci$C(nPb|Yx+g`Ax1A;;>3`W0VUxOUt`isr$i%tPk;mtkW&Z* z*c`Ut*?U~}vxq3fLt~eA-)m}K!n7faPc2OA+jY|s49b2Ma8%0adslh?KVBX`z_I@E za{poZpt~UhP5;&?l4d;!_IUNbNUI|V86Y{3(0t=0T> zorURA1?^XDt3PIS1bbttGKA%flBXSPfH&tTXbNirnx=x0tf4-Q2}eiZ2tN=yDL8>l zVF~I0x+yO(1=-bC+exM75X}-cibPDy)dAUt^(@^Tmg3sxR_#?;!+?>A|GWh(eX`wPO91r9WY{&U$%HRL;=m6mQeRfF$ z$`^gYC7gCU0}gTrDo1neyw0>ZVKf$1FC>_?$z$$VXp}Vsyv|2Ch~-)jD)1U% z0JTVW^7=?vW5fy^b6^2}GHJ{s zmmt4e_j}%_P$OzTnycW*JVfEeuD2X;)}74OPD73<+`SZuDTFn7ZOu7F5{*B6)4oeBV;%nT$VZjiYsNA}y&s9yR zkW#Y6_xo<=+qzCQC7F)}ep9T?`$qaSC^qs#;}2qYl;j9Q6VFodnL_vwHYY`Ud^Hk;{7(|IeE44BIAa6vkhc#kA+5*aXx0ZFR`MWBURm1lj3G2qA zo!G5*q8a`D_QZiA*ngnDFtdvV+CT#jOXk?`u#SDBUIV4sfMHJnDmf=QXKf%Z7;VNz zq~;VXUaZ}GO$$nXEbP&KXR5e>*kFEu(6kf{NB!;7jp_3`xp6p%t2P_2>O{!kqp*(c zmW{B1Iek~s5icmZ?%QBuZ3J|7^9?0_uS4Vsfb9lLrp_=tQHRcpSg&VqDd;U=U=P7T zUDe^Sd0){!5gq5k~Ik!~70tq>b`vBJTLLZjh{o(fU2eRpZSP4NN zipSbUgr6uSFi$EIBB>#6k%(8*$W%y76Kr)4t_753OVs@rIU+ZYkm$Tz9<<Wb`~F$E`;S)#K>p?}<+VRjUi_gP?%T-Ng~pc?!O5k;tWg1gSSt@& zrGzIOR0E)26BNZXcC9u655O&!O5nBl((X2|!s_u>U+&g`*2{Q+>VRh-&?IqeSdv}| z+vL31NVJmU=OSQ;Jb_Fgj04&NXNFUUQ1OLd!z;8U%CjhkQtA=!YO*>YMntN=>Y0;a zT^imxEA{HDZ`8gE+CB|*2Ft+|~EJc%` zGH^P5KUDtz+$aLLE(_cD703TYYB3pz!+%U^EJ&x31JEMMM$a`u#XE6UkPjDRsOGKw z*T&Dcad;i>g~BqxR<-0yj7WYvhW4g$zL0v}fa%hCs4%Y7KuP8x?&DR4MEE!#$< z3^3$GG~dLci7Xgly|^b*DHB%=sFY}sqhsqYuO=ybs;@{t8?Zy*h2*9gt&N7N1Ra0b zd?V4?b77tvZsa7SFSl7HI;_KNIL|#@EVc-IJh!3x21abzdlcgwKX2Ji4d*LpZYPE8 zyj36+RLj-t@`EofB&eR-E)cIn2{qk3wSB&BQ;H%1YH8~&Oo$Q@j2)Y z%<30nTtOAukCFM><_S#o{R!HSSC2X&m`L^U)C&vysC4s)>wJvJMxCNC`9CUZDTogxFH`VbQu_hiy@U24>ra$x@~38#k7a`&P6|^Ar~Ei(9`=@CS(%Jj zsX~+i-FE|Zu`CCz;5^4KGZR+)?28PT!`gxjq@p#H$i7=vx$y?BlUB0sL_Km~;5m>$ zmc4^LzzB5Uow-Faque)$IArZ9v%x|duK2i9ZdIgJ90AkB`ISi6xhA$@5jJ2<8GA;a zPMdv|qATHL-zuDiz^^Tow{9wr_O)sAy&!9=?&Brz_Z^i63_j!l^fOC)QIX6dqTDen zUUt9y`;W@P@c-cvJOnB0Tgqcg6!5V&V5XVGlY%$`Wr}$;>}E7+D3kIv%Bi`bq39g4 z7aegU?6@0BiDSYmdLot};a@JyY8-;d35-CzD1>LWpvZW75QB}#+DqE=0|Z4!$cUVJ zka=PTMhpD61gJgJDUmdU3b0v%dF=rNAOl$`cWf-EQAcXO*0+B$pw+G1=BiB|fYd(E zrzW5lsxP45vC&7imCQ{gM`BMVP%v)>;O3d){^vL{Rlp3&Y5kt^??dMRa(`SGLeTe= zf4^D?Cz73Oa#SJ=kCjqIO8bh>YS7SMBI+kCr9`Ylr7|{F8F)$+NZ6sWm8%?x#4_XN zONia-jd~QR2gY&r*3rr?GL{94>|u^l3#KdAW|K(L3^@YXJWJ3ChnnXgXn+U{QHM2X z({!<__5fbkZ%(TV{{|)@Ss);3gU@zK%HC<35z;;Cx?2rWefh40{`SZZTs2zhw_1Kn z2TnhzMF`e}Ya2nxET8~uKhzVVxAL)ni%TVk0h9HI%JuV>^4u%B%FSMAYW?^y<5W;+ zdNxIc8HU^#H4C+CIni@wUg*^#V@zkf7I`(S6le|8jYgOY;SXKY50$<`Ira6SfGotE z1PzQm^2in(aHS4Kq!#0BKPEmYp!OO>EFDphScw^;iU=&*PcHk{+s;LpM-t%Ddu|DI z{-l50LQ&8ZNQ-Yy#xNvbRM8(nl_=xlh#`M{FHm}|IgyG1WH0GW6k+B#puHaXDnC6< z@}qpn4ugs7KVA0s@02@V5{?ZIR(KAdO#H=*j=`x}k8}sn_{D1lG+DK#Ymr;;N}W)Z zC+IlDMNxv^tpw1+ru0VX8%Ze+pY|L{5tO z1+Z+4q@C;X&tquFvS4H&sQI+IzRf1c^EV3jJq`gFg9Mn3tQE5Vr@Z7BdIu0ID!rxH z(D#(c12WJN z1Tz!$DDf_?kjXc*mfKfD6KIjL_v3pxN zhA+cNE}Fb7=NOab8``iFRY7M`bsHXvLrj%abQOW~`ubKbbYi);B6D*@^RhTD@JKkUecVqUnz0{%|s`27?wdm#x&(>nymCFx;osTQ3Nb?FieX8JFYI7zkb%q!(bGORV}Xd<8D#&O(v9m zEt})Qhs3o`B*cS%E+y!+{c%v|h-h?Th-qZlyeg%@5rle~!HTI7b=UkpDy{Mk^$#SV zJ1w}tVpIoeO494VbyJR_+>`a=Y><6%GfL&~3(pzE*9Iwwa~itQfp2PSui;8AzMU5* zi#Z@LpRlef`Mu&<6<5F!0jsfRg{)-jVq1UyQOBZ$|5<)IbO0k!)pC35k_MD$_6wY! zKLY}C<;Dhie@JFaUiGRqxwTX^!|1TJ{0^OdrW-$CCBL`>Sq}kuJ)YX1cMu$ zVB{c*h*C9X3l1R`iwzq2;2F+g9x%Kdr=J^(bYto*FI!TpIYDdhiE@m?K8))6&H-eY zDn1i4He1yQvAzki&A(WYe(SE|V#j||<^N~zYk+M%tFzX6zkSZVH%SRP7J@no61B=y zX=hYyYiBHVoa#7^t;%RsDl;-g1Z*2>ho1tqEk#41ErqEFX$eW8AUL$nSSU4_5`|1c zC)=-g9&I{I~O?pe*`JD?59dowWi z>>99T<|(FB@TV2*O${8>mV=`ZLt5wrX>VjuYDLs@T$7c+MMu#YU3RALEjg*|Z<3{m zUJw$P6l@4STxR$=@Jl%_n_!pNjsS(o@DbqpYDA&MR$sTK!{eS_nD?dt`A8`D<1-bF?U#r4b6bWgft=t~5Zs<{jRv79&q9xUVjIKLsM-}HXOB;Q=fA1R}Oy}<>l{@ zgI%=(lCDoyjK5+$ETl04ks=Yuc_J_gh_Gawc$ikMt!zlqR4X$m#WbR~YEu z#F3sLbg+Kq9Nt8hmok@7%tB150LE#NC>XuKjDm(5_^T&w$j|ds9pojTvS%_**R3PZ zg)(~GoQL}>tdjs)9Dp1Kq20r`PwHquK0LW$KS9axxzb*pia^XR0?#nK*va51pMNVgOA3Iex&3*7 z5T^tofI-OE(tz_MD53*7f{7(pi56cnFH!mpKb+p(JXhtXY5%6A6%{>VJOV7@Ip@l3ZCRhW&}rihTmLZ zQ4@w-?v7D)iOysJK9+{2>i`vv;YZ6h6w>tHQq7K2zdzPQ7iCKR6Ot!@H53~_@Cb-z z;ipIqjCB<_Hd6vZV~e$o|-C5m{=Y$ zGKjtMR0-sOTCK%Ppk~`OPcCvmGn#fN>t$zL=Pe6`S}};CL4%TU!xHpB8t$9(dRm61 zM2ngNOf72e8Zk1C)?l*`*G84i6RSS>K(ZxLP`lPvl?WxHt}-NwE(w=;owqV`Vq_@o zMeXFrh(XK+1k5LT?)BHE#zf}Sw|IiVOQlu}tsTB^ZUig4hyHQ@T6lB}xZywLhh7+8Gf%JB-*P?~a z3m+`;gF9=()RK6DDPz1DzB-9TlY(4&rRn3y`P(f0->~Q^(`-7~MlR*KqVkd!1I>)T zh;#h0qWk50jOZ!4NhHy10ivR~J?$gHD;a~D4%EfK@4IXWcgg`&^u-vrN&tJu7j)y^ zNKYZsa5u}An1FNrVjz@dwT#kBd!6F`MZwPE#Qm4L+M6xeiw$0=JeCLmUf|jih)2Ce zy@3eTG`_)NjvA|niU}yip$!I+`|yuY-gO8vQk$`G3>qC)Ycv37oT$A5W42L0 zzWVjS$qq`v<;0J=Dya9d0t8jRkD?;5d!W_a7#B8ArMI{2@M?B5U*hxs{cE)C?W(;< z@86H~r*nUjWy)e~or$91>)V#g0~^>dNdwH)O9>u;%5Luqo3F`Vm+ueL$6+eDL+~HN z_%XhP`Z#PKvKUUD1gPIX|2uGNe+Q*JlT+TWf2O0|XG?yZnfJss$>0g>NSCSKN7~19 zzqj+a&TH#meFmR^B@sajayud51HQ4)%!QVxFF|(%Fqbb$a22>qy?R@KKBV{pS0fr^ zUz2~*w;Zv&7XS`Pe{FQ23Z?ItZR_jF&lR-3V=>Tor;kq^*xu9jw=WD#Z%T>q#o}BC zY(QDU)@qI$U_1mFbp0d9d-YlgrEM8OrHNW)s(gwIv;h$+0mhGkgj5u%LMt6EM84@~ z$;Q*dhPMK2d<@DWQGm%BQ#(f_O`2*!E@zU!eX|89& ztsAV8ZbBdmlyXVq49&H;`dydQ%4-ShP2j@mwb;h7>^mEcG&1DqTs|c4*dx$4pyVIysEj%Jc{fZi_@X3U;E* zJZt_zpsG5YFI+Zc1ymjiTw8KGGu*kDkor?+y?-h9jLy0RbWu8d3R! z8={t)21ZdqU4)4NXj>lw1uv|?-uiUURX?EmCHIt*o=Px8GtOJ%Wz(!bP9T}a1hlaz zb}|wH4vNs`PTPO!?Q`j}xRK5ws1GCpIql*H2d4j$lGroE_(Y%?jchR%Xfzh!z1m21 z0Nm^dj5-!!S_aB{D?)mUkO34!HR3|-$*6zS-!K2{VS4=f=MCoIi==%Bx$fPNE~;*n0CM-6+5tXrI0^wv4&_! zZ-CL%7@Mx4>EG#+yuP>gd%jwL)$g&N+JGC<$@UM@FZM@*PQpq zo$~CpGKHx&niy@R0vmtMQsU;+Wy6pbt<8r@Jpy!HaghF4Pj`ux*WXM6qUQaVRbSi# zK*~dGt?4)~Ax()O(~#5kbzi#c&F6ZcpK}734uSuflEAxCCG&K(O3t;v_BbTX1t2q= z0Tic+Et4>xnuresn8`;_03vW3W>^wpLw>=XfJ`UO(}kFW93Hbu7Nz`m)QgZk8_`c7 z)KBt68c|{+hHZ&-cFrUcg?4nn}aa5@@19*rkL&%-y9beL<^GHuR=(VH|6qDnuU>K*XhDYH_P!5=qVeiSDuQga|HUX+Qv$^l?0pVl}! zmUUz%1Q2w&f??x1!6<9TpsHjk)&XqIy?MR?>csT;+_mtYNe1kd`)z=_3PsXVk9&Je z4WkcbyqvLSqoI#ZVdkW_`z6r?zFO)L9rU%=m#GS175wG?DSoUG_3$VVDE)#Tu88D90m=>XZ=A6n)xRqOf$Il>v^oGPW51D z08+<~3M?0AOwL*pQ#+>m`~_8B+i~t(B|tMHJ`eF{m~DIe2d@1zQxorwEh5Tq<+*(M znGp{f(PW$A_FZkd1uHld=Zq#1Op^g@0|d!G5d0PK*NaBtuo6qJZ*qCr0^MLQ8x z9p&8P_yH$?RZ>e;z-!Xm_oa`o5<_OA$%De35IEBTF=Jol13|`FntcHqTtu?knOPiU zoLU6|Z$f0YDtrJ~h5?fcO}#%*mU+5QkSRC?8@d&hzbERkWr=y*sR?=GjFj3??j3o$ zDqO6BlGpVgeFNC;dpN<3$id(CCt8H zDN{S|ZM+4|q>Ad-Q@tjEs7`uT`z@FN6fGm0)k>ZAOwZAB)rt>6J}L2m#qfgZ!QIj~ zxNaHf?=2%eG4I|-HbOEpOJ0g}W-Q$WMqqIq9qddUMR05bz z-vAdrt_kC5>L!3`JTllZAy+{XAB|&7&0j^Fa*9My+p5H?mvL$|G~BZaJz43pkGRV z__c+{gS-HC)PH&)9~nJB@wFON^(l@{rPM&f?~A8)m_~UeNd--_%xM2QTMu=#XixY& zsZanSObbT*oM9;95)rEty3X(wPX;TC0ME(fS5QvS;9x4&f{%T@O>Rg)PLFPsv)vxw z%ku1lhN=RzuEw?n5lij0m1C9U5~?FY0XwbYByBJOOV|;G3)Dmq@pO-Q`K_Y-s`Sr^ zW~`GaEi5WpvP{LoL|TG=zmx?7o!SZXi|HX>eW0iRIsq(&&d2Tb>03Tvu=%(32|w=8ya(82Vj0&AWo0oR29t$ z$PE=)9OTbBcOm$f8wX|M=KyX(W?VP1G^Ls4SA9M_+4WklLH(i1h(H_G6;Y=&1~Cb? z#HdK`**{Bfd9Z=Ip!0J(nOcFLN`Lcjrr&R;k)1Q>rPVMK2RIhzdXAwfvA`LTRl;Rwxc21jh)TE>4amRLF>7L=(E#4@HW>yR6$m_12hlCv!?^0kVw>S z*^x}8d%L?IMbGaw$6tea(FA`Ed@uOLwj9nP5|c9!G13UMxnBM-{qv{O*N+c60Wh7n z+wY{3p%J`m&epif;fe&Fg*dF{Xb%?$Ix&zjFx21(?h{GYWMDVO`u1OlQe+AQq7P z7ElD{)&|~=4=D$I(7uCZtdw;EAcF-0>oKq`E5SU}md3UT0o{WPK$yX+pg_V&Xp;4W z0D-_Dn&4CDqSG3(1pu+FAOJ_*5*~hD2>P@}$1vN=t8orlZhPKY;D+4gn(}xYhrBu~ zMstFwNOr4@y%Mafk^fj1biAE?Yzs!Jcz{gnz1gx}frK#L(^>-fd{;bR$iQEiMv}5Y z{oz_Yy)*EO)B8U-Uom@r6TqgY__dvZ{?6V=-(ODrthVFuPsphV*g4IcQ{S-{Q@wv4 z_X#!Tyo#QSdI8a>5kt@fm}rz`qp>EAQUL(Xm`8*D;|b1{2&AS1p(e`00Se}HU#Y&D z6P)2RWfR0W({Gf#jBHpG=fyEEP#htenO#R;amITdacA>;gPF!$0W;yEHz)p`#cJkH|DDd` zZE-%o+4TCX#uGoAp1>#X3;mhkmAZ}~XfLC%w5^fMP)0qijNChg*!JEL$u9te4RArn zVA=rqn%X8kikwV8)SJR(dcgk z!EuNF^fLX%bQikbwm#y_)`fWMmq1eR0Z523;OwSN!ORg-Q3%;u&tDb$(YiN%{*V`HipXUW6A^bnp-H4 zJRS%De>tFS;8z75URM?tiO(&A+v8I`&10;5efu~y{)<>;O3|KB662<7Z2)Wn{Rh_L z>gigz|JZ_lF5PvnM4^ke0>FzaC4twaO5nTB3jL!z^Dg7H0OdA!_}rZlp?Ju&85vr` zTg0Qv#TNmSFnb92yD@MKP=~No*|DC$BO8TbBCTO4b>zn;0D~DRl6_CcuK3#vgE=BkKya0ribpfe{7(arYGs! z_C~rIM}myyG+w+p^TpOeUWDey0;Zgmjw6<>u#j7T*h7GkVJVyOcNaL7Nu&K`^%zA& z0=OJa0B$b(Fz|wD6EH!PpE31_8Rc)}$RiMsOd?R*WZYhS>{+6D^8VZ@_j#rYa0o*} z8nCQoFE_J&VG~@D>wQh|O?L5cx|W2nYM~}HpKSS``}ol$jl9VhX{s!^1^37y`Itmk zOk+CE%!&)JBGnA^{@opVMaMq%JR|^q=rTaM2LJc&Krh&f^rrMqd$gDk9Ny94kU@PH| z0i`MZGtWRGDg}!fOSTthP=YLw1eEV0qo&GN(&_(#^jdtTVjzd70?0zLZ~LZQ`YZSE z(eum6ii*Ofgv}q1Vmu+u6alMBTi#m$now29Y~z&?3({bN^EuM=-7E{X76AnT9tPjP zfEB}N7KOO705O4x*$Y4&L4WH|G)DjseTKDS-6EK&0QuE`0{?_7p-KfkwX)r09Fm>m z%g*xcl&5Y1vO@ivb>7(C-}Ln4^!upZs~$g{_NForB7aGUH1VgAwuh%`U6^?;&gS$8GsU( z%0dBrSPcXSPeU-WpdeckP-N}Kg-S*|Kg}tkrVYB!?wGd*R;B!^U@Hi`G+?2n-g;O- z6usbMlR%8xg1c-9il1l{@aN%J#;*kZ=vsp(rsE6#^~-nZ7f$X!wDI|nCxF!jeP&5t zORd0NRs~47RUQ^Iau#VvPVR=8XtX|xE=_YU8A1gxM<5Di zKyQSR9J&e*tSP|7VTiTC2%DXMlqJUnqB7dU(PF5Y@oUl#ocs)5L(*>eu2*LGfR-R9 zxhSm}|wj`0yrx98~GLy!+UKeq5GxLwe#a%fX@?uA){G zvJ&vbj?I`yLU8~?t0;u(K_$sVyJuhZ{YL@C9@4huJXXLjR}ol_^QceYtRx&nuO}l2 z81vVWkrQWwCy>?}AXwT_0A?g5-;M;LEKyEo>Y(@-MoCBozB%PwM&ArapmBv}Qc6CR z!*BY1Y8P$UC`C3vMgx0lJqA2$!;STLR8?2C77Mp&?&cI*3>=->a z{qsIs@gB+qfVUygJ5qN0i|G%0S)5pq0W9Q;lsB{hXhw^tqANH$<3He8bgQZ%nAKd^ zA3$FLm9c?Jj8lLJ-T;LsAb=ZyV2H4(SQwHEQh^Pa=NYG#iwVjdtH*#G0b2=dzE``= z$Ie(!O%qz)3VB38k>1coR6F1?{Bk=WVzv4-_$G#Ki{m|k@1a*Uv4GL&4uG4m z1OuM34r~T=wBQC1gv?HWLq&j}Xv}zf%YJ5t?~J_L*M~InFGlP`;5ii1XnX1JNdtno ze=kmJfE)n?5mBZ)lHYDLYrLis@i+A9P6Q@kOwj2%kYfW~n_9+SeYk>uodAR$_S>o5 z1-&F)+>bxIr0*$IR%-Pqt<-#EpDfgnf1G~O(u47FfjXk3wm&nQu4PhSD+I1mV2J9g z9fRDrkJYId`}&|xbWJJ>fFoewvi%w}A&5ryOj-B^%}gm3fkE)utpd2K=B${V+?onY z)FatO(T8jq?tiRhw(`HZ@Bj#c9Q%Isj40R9IJI+zEadGu5%nz)>xIP1<+@n`PoGQe z@!NL>`j6?(J$YCYz{B{%R)6ebbD@4F{lU*oPx@Q;M|x5@<&988QRac58_D$YU0wQf zn^YM0=;lOY^37`r0=JyXjubb7n*}!r#ueELkAjnr#R6O%0Wy0QoVUqXR|?KdpFQbs z?wt1BCxqP9UooJ7zzgOIdXT9E%n6P=0L4tRnGX0X!QGLdI^`!8AnYbsrXot-_bMgt zd9#xl-UR=x#|OTK2l`6UGJKfIfCXKEn{3eWj~rjnv(q2@)_tPK24gyDwE#0KFQ0x< z+HzcGgh$nwiCg`_0EQnCJq;%L@LaCva+Hl=X*r?EJSNop*-DU$mLNy^Zy-1^*bns5 z9zdBtL~_`H(`*@58~7Y3mT6#P`45Nx*TmzdI$J}YPM4eROTKXg#4F4b3i|mcGm9* z#VY!*QzhW(FR-kW?;j(oQA;&_C9565?Vn<+C7`xv0GpY+O6>XRS`7S!6T52#t-EDQ zSGG$g0Z_f5-nP4-E6*grF9oJt+&{aqp5RE#$ zzZm+qlKI92kVQOLij22f`?YO>>F1;9>ZA#JkD~%X9c;3n(p=!G{KrN_O?hd+q6&KVpPuhqx{5t9~ zRdbtQO~s{{fYKuDcG(BF^|V%iOt_9T&Oeqh*#1838XO}CIIDyX>`G>B>6J_WRQ2s$ zwoA`RcfM2P!p7c3kpNcDe+u|tIKH57IV~|coP7<&XQL#YFA(c#@rXmBM>=g zZo@{CZA%6{Rp_{XD=;sQw}L6H6;do3xKlkpx045aA8o~fibBl&*?vz?!B$bTx}VSv z7)GWIIDhBgX#u3Yzv2HI8F24$D)^brDtdj9vgC*n%GQIUQ81kG*<|L&Rn+3 z&mUNB7%zg@yC@RC^xW*H%=q$D37j~+q#u)!2GrJH_ie1D#R3X_SV?ehlfi)%fd?Q; z%LBkuwI@Q#dg)GoK9ce$Q2qbJKSq%dg3pyXa%fL)b|}C&@(YkzupDi+{b-AM|A8YP zaPe_abX%cedET22G~yo~_-CpHWPBD*L1ybsCrGPFDejn)okcU|)=XuU`qsdoXpP9l zCis6cUFWY|84F#gvj3t?0MqSkdU9TJVuu!|g?=;(aj2Pc*Z?>I7KyTUo7bl{Vw0wX zb%{hBE`jQ2r5&l+v5*1-O`wO^(rHysKkC!HoH8S6ny*FgSyPYk^U;h43rE1|^;LE8 zfD!<;E4`fr;BEsx$OKR(G~}!s8}-oQrcQnZ*MK~v+pj$A!75-ddJaS2y%W3iQ|bO! zQcIRRN&t|2&!i{mMX4R&GfVoBF#-Svpi`!5B1pyp(*tSCTf1L?hgGC`q!57~+uLI6 zL8u=n)W~L+T?d>7AU}Y#fJgp)0tPS{kx?_wEGkA+?Z(;Z`PT|T=6-Up19Tx_Q`);o ztJ=#Djbn(xGlZJ`0>!t-(Hwk`k%lOGyeq)6Yy@ID<6?G_m%?kvELBavz-E=3HNh)a zriJ0jEAGpF>iJ)muIpDIpY13C^!w@4sa$$tN&MQ#jxiBytt~T zMp`i>|G-+#+Nuuq^c%%gxr(!pM?$1sk+F9~(h*XJRr~=MNDk_30X<9%k&UygI8}yo z+|5k@$PDfDVa`qKAP0zpdMCO5oOE#k)yrEo;pmTfl_00Il5wo3QcVk|M!(RWZMYh; z=2zq@AkX^qU}OlgynL5ml|4uBFgTa111i@6i<1UQFiWIsv^1bPA7v;|&| z@16G4CjzlM-D_J3aVn+R1Yp|&y9?lb&h%~3{%(`Bml7*9Re(zT+$LcAG@y-pF8RYG z(OwXK@Rm&N?3on&Kc0gBb#k87d@uO~Fui80cHn1D?9ew(@6*qv7iuR@17u?8k+I7P z&?2C)h^K4UD1{kqw#KDMwnz@W3*B5(Y~-!jUhGzx2Q9p$tp>!XDl029bJDr%zSPb^ zdF$T4jhJ~$uNH5y!mu_0xJd=H0_+c}n2_x`G=kr>b^>Znc`^zQC?`LZ`w9oh7(k$} zU$M*2OP_yJyoh@KLzMug+cG7A>y8cdwLPNimO_szv{0^-05K(W<`Iwy404!kv9nI- z*|qh8T*M!%iAABQ1t+~#S#R{D9A!Yltn{kV&hD);GJ>C8|IYp~-z0@|9bb3bg02sM z5A2Z(97_Lt!#`U80>91=PR`3GJj%C~(%;Z~cL)0Xu?79>u$uE<Adn5hjvOk2FfK~k=HzSQ$SFOqz4l*18IhbjR~OsZQ_ zJMe?)U$5F9>2Kvg3q~?H`>bIlkTHUY7w|MD8{ncTd;9`!x=yLe;6E_yTOj=lA7}mI z*_;^+q8D42SIx_5PoV-dq~Ku=Fk{L4~H@UO(U1>j%0%;JxonrN zP5*d#x_16h4p}T6$^EoU(7rQM;yRb1bM7B8m|IU z7S3iyOk0c&y^4T+P_B{b>a`Hm;sp^ecxo#Z1V)vPfekbh^wIRk>-%E6428an)FcA# zm+Fv^*%<{k@Ph|%IzexNQ@=`Lh2*2^vejJ-aLNaGTitdR^yPH@y>P*F{eGnV!x%@0 zHUUhxQ|X1d_VOLN=hTv3nOcIY?L|>I15n-}HW0x3Pg#Od)tlpvT-cm}sf+9z%>qy1 zSpAGS0D{}9#w$7^&Fdzr(zx?;5Y+VkCUSnB|J$?)MzQvs5p6U{3NePBQjw>x&=7i9 zz{i0V780NWK*Lx3IJKd7Ubf3WntsI1a)<-yuqS|gjl64jppWk`y*jl7-@D$$z(pb> zKaTyQOyr>elw-kl+-U5pZ12kk2O~OogHY!0E*F0^dks$2VR0=rx-CDPkXGU0HB+lv#EWIQb*#F<9{~kd{yrv2=~? z^|;k0vG_f>bli`Y7TaY1awbPJ*Si1sqCz;Nj>Rv(NmHJkF zr!phCcq0bKv1x!LPTd|0v*1%?S%5MUHLl!E0e)!z6 z1$|%${Ni+dy(h}06El}o0)Xq~?Z0-n+Xl80a)Db)( zEv%}LesF4D9qmEDx{b`qKmCmhrc=ju>G~b!m+wXT?4=efmt+E%ZvQ9sYtLM{tehR` zC-z2qBBH)%ND@Px4p26W2=#ptpXBy)0v1*QQ0>TV;IjkrDFxZNWZ?K2dKH6^-c1l= zjOq(uv_M-E+?|o<95=xQKOrqyz5*Mjq|zd!R^uR$5jx2N9MU5Ds`n4|eG%})9scQY zsn`F#-39$@y8msXkX(vEa>*uu>D4-$UcCQ&d_lLR_dk}Bz`t0v0E0M)8SaXNYT_9! z8b4iN5^8Xb&V?SV9)TD+aMDB|*HYT{;s@hi4N%ssy^7%tVB#>}L$T?Ma3=GCm?q6Y z0aW}5P3f-x4yollBK4?~z}nm-pY$lu5lp{dNj$7({6i7%pz*{G|8hD&UY(M}$77^R z_I4>(0C-`4cz2*@r~d7?&MxVtsg(P(1J~X)dlE*I6EcsW7;`#pfO2{^K^o0zM&z#* ztMZ)sQ$I53K6iE(w&@~V$wQ|F=-`xnB)+p0Wj}AlPVfPCYqIe>B%{c~?M&Yb{EG7P zdXFDA_e#P@z5bo4eSAs!+IOed@2tqB9Uqr`0)X4e^djGsUflPEk*-PAz%x?mf4QRM zMvVg~9zmWMaP^&I7&T()9vwjs>fsN@L;@FC4on1dwBF9wa0h@_h9yqm&raUN|6$E^ zqM_urPmnvaCtv=oVe+A8f=K|u{(A!b@Xlc>exK-=G(Fx>MRFueHG_t*P@cMpk@q~jAI+<%P`oBi=$uN^V z*hyActys@PTM2~e$y2V;ISH`S=jW4u8uM*VebDF+Yc}8ADe=EKmHV$xuhCZ?$uaPV zP5^*ve|CrIMPWhjSO$9fGSWXzZ&yXB`vYrtA_(q$s!N207J&)EBWE*F{I69Tc;c9& z2%!Avhrk=d&^6khk$k5b7&y~>H(!^6{*x)_-?|9&t0_6$6XodIKS}@^y!&9P1U{Iq zmmAYX@?X$3%R@}vx^Yw#{o-y02?jKF94GfPhlHe z(m95M6$}YR8QB391N*x99+u#i@ZkXRj_Kbqxu`ilN})RoItA6wPwh14PbdE8cLUv! zK5^56=|iJDa(euu1n>Y7LAu?R62R}JtK^L-Av`^`2LC*@23IPP5UTq7C0N<$3`~=S ztj#a1H`>6mH2(IkUh&gOqd3&3R{5l9HAGNeXu(gJ(T?M9si26?9UXWGs^ z*$r?9wfAMX0PJI30if0bP7KO!z9IG0uVYQ&t)G+K1>Kk4ekJ|=H>8JrDm}IPN7epO z0(iiQAYE8@r3>qt6AOCn4%0tb3Oy|)gR4_1d3*&nF{}&^q$>e7fsEs_oD2p6?7#$~ zkk1>CsnqqvL%kCkgWnRD0)8K!nfY&7Ibbs2xw2o{GG8J7aGLXEuk8tVOk|!@t5bew z1@5h=yF~ww&W$5=lmL!y2X+VdrYrELQ(5`C-AI3bFVfS-NKak{dJH>0gV71(+#0Me zbjg17Q2w)Tjv;0@-t#jQJf4l~F0-cN+V&!_mKOIa0MFY1GnQBSyURMH!9FDPkca5! zJ$^_Kxq3)Jzfy+!Knna{Pv7sqrPt%@N0;hR0(huzf3U&_Qfu(W6u?hSmB9C>*5JF+ z#rGFd(C@@)S`aKiC~aA94MLP}B{~qZt^%3_-~fN(E&p&A_vn`K3T*83{jQ$A-OwXF zfl$O9cdL&T!6zq)VW2a+fj*Mn-#jqAGoARiE{~4-qXcjvN`e&N@7*2fz3CKs;xf|T zNca8i^!_Q!ksd#aI*@D6FLkpJ%l9lUB0x7r;I9CM(E$ama?mt-l#bfZ90^FgavrqQ z8cHwKF`b7ASe?CGk>pap1i94Ho=D>aYc-xgA6pFcztYF=PS5!*>HBnp{w{&i+jq+TZ3D_(;6d|K=;aZpYpMe-+k1Pw5o-BND)B#*g8X;W z$L~+i!N=46XVPPrY;caF+ff3z)Naf4_O*1Ke}Fb`uR6A%N2h>zQabUzJze}yPSwGa zQbPFS>FtUX2v@AE(Ho6IYEO4DC$x16-a4q9^<3c@)}VR(bi%KK{bZ_uPNu)@z7*(p zr;k6B-rte_zK^EA^(4^|E%zt^9Nkv8uco(KQ-I#O3Z7IQtb}W>-XH1DrThMTirlM5 zqCb@$^Cwc(@F>~Xq+gldFT{8lD$8?^HAwSfBeOuDbGoPh_S5@SyYr3own}WDN$)?E z-hU#jko!RQq@VZ6{qg8UK1u*bw{6>oRqOjP*}VPc?rM#7BVTsanSFX}3i`*SHsWzh zp>Iz2{n7LVSEcxRbZR9oOP@QD0`iKK1TIhC<3#%RZhF77dXvps{D51$NL5H*w+hpd zS5?a91Yd!gr_;wL(`-u**LSm_HspYHog`u7*dkv_M2zq_C>q@VYtRZ?07 lywHKR0!OzCc>DhX3;=te&|~$|s+|A;002ovPDHLkV1k_Ukih@| literal 0 HcmV?d00001 From b3bb234d9145acd46e4face96b438d1c6f4e140e Mon Sep 17 00:00:00 2001 From: Ilya Besancon Date: Thu, 30 Mar 2017 14:11:52 -0400 Subject: [PATCH 5/5] updating readme --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7331d86..b02c532 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ # InteractiveProgramming This is the base repo for the interactive programming project for Software Design, Spring 2016 at Olin College. -Project Proposal - Kian Raissian and Ilya Besancon +Project Proposal - Ilya Besancon 02/23/17 What is the main idea of your project? What topics will you explore and what will you generate? What is your minimum viable product? What is a stretch goal? -Our main idea is to create a game that is similar to snake. We want to explore different forms of user input, anything past using arrow keys for motion. Our MVP is to make the regular snake game without having it change length. Our stretch goals are: growing snake from eating blocks, different color blocks that change the color of the snake, and high scores from how many blocks it eats. +The main idea is to create a game similar to snake. I want to explore different forms of user input, anything past using arrow keys for motion. The MVP is to make the regular snake game without having it change length. Our stretch goals are: growing snake from eating blocks, different color blocks that change the color of the snake, and high scores from how many blocks it eats. What are your learning goals for this project (for each member)? -Better understand objects and classes -Have an end product that we enjoy @@ -15,3 +15,5 @@ What do you plan to accomplish by the mid-project check-in? (See below for some We want to have a basic but running version of the game snake by the mid-project check-in. What do you view as the biggest risks to you being successful on this project? Current lack of comfort in understanding classes and objects. + +This project was then modified to be a game where the snake is a cartoon that eats hearts, which are counted. User interaction involves arrow keys for motion of the snake, and the letters r and q for restarting and quiting the game.