From 2f27ab738d0df73223c4608ccb00eea800eb97b1 Mon Sep 17 00:00:00 2001 From: Le_dahut Date: Sun, 4 May 2014 11:44:38 +0200 Subject: [PATCH] =?UTF-8?q?-Remaniement=20du=20menu=20RAZ=20vers=20un=20no?= =?UTF-8?q?uveau=20menu=20"ouvrir"=20qui=20permet=20de=20revenir=20=C3=A0?= =?UTF-8?q?=20la=20version=20initiale=20de=20la=20paillaisse=20ainsi=20qu'?= =?UTF-8?q?a=20des=20versions=20pr=C3=A9alablement=20enregistr=C3=A9es=20p?= =?UTF-8?q?ar=20le=20biais=20du=20menu=20"sauver".?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WireChem.py | 80 +++++++++++++++++++++++++++++++++-------------- dbdata | Bin 65536 -> 65536 bytes dbsrc | 29 ++++++++--------- picture/save.png | Bin 0 -> 1386 bytes 4 files changed, 72 insertions(+), 37 deletions(-) create mode 100644 picture/save.png diff --git a/WireChem.py b/WireChem.py index 8e20006..864d54c 100644 --- a/WireChem.py +++ b/WireChem.py @@ -13,7 +13,8 @@ ------------------------------------------ ''' - +import datetime +import math import pyglet import copy import csv @@ -88,7 +89,7 @@ def interprete(d): d[k]['icon']=image.load(d[k]['icon'][1:]) def initgrid(): - global art,Uworlds,statedvar,stat_var,seestat,adirection,worlds,finished,allcout,selected,world,level,over,mousel,mouser,mousem,sizex,sizey,world_old,world_new,world_art,dat,direction,zoom,play,stat,cycle,cout,thecout,rayon,unroll,debug,temp,decx,decy,nrj,tech,victory,current,maxnrj,maxrayon,maxcycle,maxtemp,nom,descriptif,element + global users,art,Uworlds,statedvar,stat_var,seestat,adirection,worlds,finished,allcout,selected,world,level,over,mousel,mouser,mousem,sizex,sizey,world_old,world_new,world_art,dat,direction,zoom,play,stat,cycle,cout,thecout,rayon,unroll,debug,temp,decx,decy,nrj,tech,victory,current,maxnrj,maxrayon,maxcycle,maxtemp,nom,descriptif,element ''' Directions des electrons en fonction de la position de la queue ''' direction = {} @@ -116,6 +117,7 @@ def initgrid(): nom=descriptif=element='H' victory=[0,0,0,0,0,0,0,0,0,0,0,0,0] current=[0,0,0,0,0,0,0,0,0,0,0,0,0] + users=[] stat_var=[] mousel=4 mouser=0 @@ -186,9 +188,8 @@ def readlevel(w,l,user): unroll=over=0 infos() - def savelevel(w,l): - global worlds,Uworlds,nom,descriptif,video,link,tech,cout,victory,current,cycle,nrj,rayon,temp,maxcycle,maxnrj,maxrayon,maxtemp,world_new,world_art + global users,worlds,Uworlds,nom,descriptif,video,link,tech,cout,victory,current,cycle,nrj,rayon,temp,maxcycle,maxnrj,maxrayon,maxtemp,world_new,world_art while len(Uworlds)<=w: Uworlds.append(0) Uworlds[w]=[] @@ -196,6 +197,7 @@ def savelevel(w,l): Uworlds[w].append({}) Uworlds[w][l]={'nom':nom, 'element':element, +'users':users, 'description':descriptif, '_xx':worlds[world][level]['_xx'], '_yy':worlds[world][level]['_yy'], @@ -597,7 +599,7 @@ def drawworld(): def calc_space(nb,nbtot): global unroll - return [2*win.width/3+20,(nb-1)*(win.height-100-unroll*50)/nbtot+50+unroll*50+20,win.width-20,nb*(win.height-100-unroll*50)/nbtot+50+unroll*50] + return [2*win.width/3+20,(nb-1)*(win.height-100-math.trunc(unroll)*50)/nbtot+50+math.trunc(unroll)*50+20,win.width-20,nb*(win.height-100-math.trunc(unroll)*50)/nbtot+50+math.trunc(unroll)*50] def drawpopup(): global allcout @@ -635,7 +637,7 @@ def drawpopup(): def drawbigstat(page): global unroll,stat_var - drawsquare(2*win.width/3,50+unroll*50,win.width,win.height-50,1,[40,40,40]) + drawsquare(2*win.width/3,50+math.trunc(unroll)*50,win.width,win.height-50,1,[40,40,40]) if page==1: coord=calc_space(1,3) drawcumulgraph(calc_space(1,3),[stat_var[0],stat_var[1],stat_var[3],stat_var[4],stat_var[5],stat_var[6]],1,[art['headb2']['color'],art['headb']['color'],art['head']['color'],art['head2']['color'],art['headr']['color'],art['headr2']['color']]) @@ -734,7 +736,7 @@ def drawvictory(): txt_over2.draw() def drawgrid(zoom): - global temp,debug,over,allcout,play,element,seestat,art + global temp,debug,over,allcout,play,element,seestat,art,users glLineWidth(3) if play>0: drawsquare(decx-1+zoom,decy-1+zoom,decx+zoom*(sizex-1)+1,decy+zoom*(sizey-1)+2,0,[255,0,0]) @@ -771,7 +773,7 @@ def drawgrid(zoom): drawitem(x*zoom+decx,y*zoom+decy,art[wart(x,y)],zoom,getactive(x,y)) drawsquare(0,win.height,win.width,win.height-50,1,[40,40,40]) drawsquare(0,50,win.width,0,1,[40,40,40]) - if unroll!=0: + if unroll==1: if debug==1: nbelements=44 else: @@ -786,6 +788,17 @@ def drawgrid(zoom): if it['cat']!=cat: drawsquare(7+i*size,55,8+i*size,55+size,0,[90,90,90]) cat=it['cat'] + elif unroll==1.01: + savenames=["#","α","β","γ","δ","ε","ζ","η","θ","ι","κ","λ","μ","ν","ξ","ο","π","ρ","ς","σ","τ","υ","φ","χ","ψ","ω"] + nbelements=len(savenames) + size=win.width/nbelements + drawsquare(0,57+size,win.width,0,1,[40,40,40]) + drawsquare(7+1*size,55,8+1*size,55+size,0,[90,90,90]) + for i in range(nbelements): + if savenames[i]=="#" or i<=len(users): + drawitem(10+i*size,55,{'color': [220, 220, 220], 'text': savenames[i], 'activable': False},size-6,10) + else: + drawitem(10+i*size,55,{'color': [40, 40, 40], 'text': savenames[i], 'activable': False},size-6,10) drawsquare(win.width-409,win.height-45,win.width-369,win.height-5,1,[240,int(worlds[world][level]['_xx']/1024.0*120+100), int(worlds[world][level]['_xx']/1024.0*120+100)]) txt_element.text=element txt_element.color=(int(worlds[world][level]['_xx']/1024.0*150),int(worlds[world][level]['_xx']/1024.0*150), int(worlds[world][level]['_xx']/1024.0*150),255) @@ -834,7 +847,7 @@ def drawgrid(zoom): txt_temp.font_size=24 txt_temp.draw() drawcondvictory(win.width-364,win.height-45,1020,win.height-5,[90,90,90]) - for i in range(15): + for i in range(16): glColor3ub(255,255,255) if dat[int("0x20000",16)+i]['icon']=="/": drawitem(10+i*45,8,dat[int("0x20000",16)+i]['ref'],36,10) @@ -842,7 +855,7 @@ def drawgrid(zoom): dat[int("0x20000",16)+i]['icon'].blit(10+i*45,8) else: drawsquare(10+i*45,8,46+i*45,44,1,dat[int("0x20000",16)+i]['color']) - if i==11 or i==6: + if i==12 or i==7 or i==2 or i==4: drawsquare(5+i*45,8,6+i*45,44,0,[90,90,90]) if i==1: drawsquare(45+i*45,8,49+i*45,44,1,[0,0,0]) @@ -864,9 +877,9 @@ def drawgrid(zoom): drawsquare(9+i*45,7,47+i*45,45,2,selectcolor) glLineStipple(0,65535) glLineWidth(1) - drawsquare(5+15*45,8,6+15*45,44,0,[90,90,90]) - posx=10+15*45 - addx=171+win.width-1024 + drawsquare(5+16*45,8,6+16*45,44,0,[90,90,90]) + posx=10+16*45 + addx=130+win.width-1024 if addx<500: drawstat(posx,8,posx+addx,44,[stat[0],stat[1],stat[3],stat[4],stat[5],stat[6],stat[2],stat[7],stat[8]],[art['headb2']['color'],art['headb']['color'],art['head']['color'],art['head2']['color'],art['headr']['color'],art['headr2']['color'],art['headp']['color'],art['neut']['color'],art['prot']['color']]) else: @@ -904,7 +917,17 @@ def settings(dummy1,dummy2,dummy3,dummy4): level=-2 def raz(dummy1,dummy2,dummy3,dummy4): - readlevel(world,level,False) + global unroll + if unroll!=0: + unroll=0 + else: + unroll=1.01 + +def save(dummy1,dummy2,dummy3,dummy4): + global world_art,world_dat,world,level,users + users.append([datetime.datetime.now(),copy.deepcopy(world_new),copy.deepcopy(world_art)]) + savelevel(world,level) + sync() def speed(x,y,dummy1,dummy2): global play,zoom @@ -1560,7 +1583,7 @@ def on_mouse_drag(x, y, dx, dy, buttons, modifiers): @win.event def on_mouse_press(x, y, button, modifiers): - global zoom,mousel,mouser,mousem,unroll,over,level,selected,world + global zoom,mousel,mouser,mousem,unroll,over,level,selected,world,users,world_new,world_art if player.source and player.source.video_format: player.next() ambiance.play() @@ -1590,7 +1613,7 @@ def on_mouse_press(x, y, button, modifiers): return realx=(x-decx)/zoom realy=(y-decy)/zoom - for i in range(15): + for i in range(16): if x>=10+i*45 and x<=49+i*45 and y>=8 and y<44: if 'color' in dat[int("0x20000",16)+i] and dat[int("0x20000",16)+i]['color']!=[40,40,40]: if button == mouse.LEFT: @@ -1599,12 +1622,12 @@ def on_mouse_press(x, y, button, modifiers): mouser=i if button == mouse.MIDDLE: mousem=i - if button!="" and i==14: - if unroll==1: + if button!="" and i==15: + if unroll!=0: unroll=0 else: unroll=1 - if i>=11: return + if i>=12: return if unroll==1: if debug==1: nbelements=44 @@ -1616,12 +1639,23 @@ def on_mouse_press(x, y, button, modifiers): if art[int("0x30000",16)+i]['tech']<=tech: dat['others']['ref']=art[int("0x30000",16)+i] if button == mouse.LEFT: - mousel=14 + mousel=15 if button == mouse.RIGHT: - mouser=14 + mouser=15 if button == mouse.MIDDLE: - mousem=14 - return + mousem=15 + return + elif unroll==1.01: + nbelements=26 + size=win.width/nbelements + for i in range(nbelements): + if x>=5+i*size and x<=5+i*size+size and y>=55 and y<55+size: + if i==0: + readlevel(world,level,False) + else: + world_new=copy.deepcopy(users[len(users)-i][1]) + world_art=copy.deepcopy(users[len(users)-i][2]) + return mouses=23 if button == mouse.LEFT: mouses=mousel diff --git a/dbdata b/dbdata index dc48278e2ac41b8c786e2d56ec4234013c7887ac..9e3bd0b89a7affdf04608fc35d05c5260d163a44 100644 GIT binary patch delta 3825 zcmeHJTWl0%6y7Ve(=Od!fKrIvHi1!U_vORRnd6PKf5ivY*63bWZId3&VMf7 z_nq@kF6YbTeD8kMzG}bdsdBkoKR@Ymxwj|N@qvu@&1O#xF0HG?rGaRco@e0m{R{9p zn$F^_%Z-;8FCRVN&+Ym^a7~9Usgbq6TkB=Fusz;TM3O~O$i!qz=nePSVIgH0^sGq2 z^>Mt1L-#CzeMT^VONtQTwu%bP$2#WfLPXWLtsz7#`q4fU??txj*h(+^;=`aHe(Vru z_%S+V;&z>_!3=ig7Sm&%WMKGnF!r0sE}bzYn2lZ221);)S>OdYg(utZ_nch-6r2mV+p9ghQm5 z<+3+q*mbNPP9JG{uCt<&@R^2}4{B455PaOv+V;KZW1m0&L{Z$BY8jK%Xclzk^b%SQ zzQ|)rR=Jp}%sek4EvxtM_1;)i&ZqMg{M4byW<6@!|r{m>kwYe_J%$SnS zN|H_?KZx$`2o^)HTAbdmcQ-X5rLv>365S}QYR_dK6Q2CjkBsUC=aXea@R?FZHTZOU z2)^DOoUdTEvJgdGq5tv#NG5#r%+1dotf-?ZD)6F;@}lgzdm-ye9d)y@EypSR6>V`x zUQi!zzp5$?TJE?~w9~J15-8so$UtoPl#ku^@Mj)Bb}sfpZLXfR_N{cYcyykxK4S2O z;?20SAY;3l%!7 zo5GZ2K)I7E*V<}ULl%HgQmPwV!W!uCQ z+3y>Do&c7@YoofVAdp*vW3ZwGqgy+j9(TrKNtTky-t2tGjR=I#;yv@mF@nDhhji#arZDx^*o&H>HB}6^qHa<)91uA{|%4`hDaY zLrJyRvfH@NbGJY2sf$S1N}RG7=MEu^_Y`@1ujd*hVaLy2bFQ`kBOPG$6IiYItY>L| za%+}Uz~@Y+H*Cl4Av?jB=p?d5d`VGz!~I*+Y3Ge|Cc)8+5ytgxg9CPwtVlIjJ+1U- zlj$9_rqXCuH0bHnp--ta3PSD;4@HO5(H+SISxphv8{RZLOiP##Ug(S)v7^f8Zr_gn zxXpHIf-i{kuo#f1teZ;C7!y`^TEts<=_)4EmcEY1;wK`jKBc(pG~xOIq)QfJCgm(y z3It9!-{26a(iG0bBuR*9LMDTA&9T-dt#vqbrnz3?2LoE86}OfwI61Pa4iE8xl#J*& z&Sen~tC5yESya#t%}F%m90m8&%QIC)llcZoENqY@Fwce>B)Qn0EZI$`*Lr5Ex`=sW z5Ck(HL^0vONV8W~Ecj$(7JPSRRh{EjRSG7m3hh6&1XW7+imcg#XAe|XQs>dPOf{?h z=8qayed2NrRGgpTSy#y#&)@BtqiY%lqnMTuQ&234^aDhl2u&07;oA$1)8h6vJD!2_ z7nT)nrO}YTKW*CySU$=<>>AfRy?_!~_I_tV$Xs8mj^ zj`E@Sh*kn~K)|Aygr3I+%h9m|Rr*?({4)iX34NDZ+qi6T;5&Y@Nu1LuJ&#r~xE2TZ zt4mcOOxel8;4Pw~zIYbVZS<+3n{Z;h0RrO{Fg)J0D1)m@Qi&M7!OzhAMx9iGrvu+O zl;j%?iEm8d#@MA=I6qMd?c-Ig29}fG#X&dnpzlm3hbUV^#cfO7DKICR{j@j)8z+`6 zdwBC8-2eBEBpUzNJ9Bx*P($%~#b;|@kUk7tuD=1~^*!nU delta 3712 zcmeHJ>u(fQ6yI01J6rm$ZDqABL{@~t%-nhGAW{^FT~w$k7(k63w!>1`c9-3?6nxc$ zmoXCX1Qj2V8VM01VkRbHqF9W4(HM;%e8fcfB7QL-El`yvo^xlryDl5!AK)glyZ6qy zzjMy-{O-ATc-S{Q>^t$*{3V;-^mtt^*RRjHT<)!jRJ=Fs{dljZ3a2iV<5aJip>YL{ zH_pPbnabc_mm42iMjxMDb7H?|jup51t$|EPNXlWMJ7kIU&k)kxq3GkOl=Fs(!tL=S zgJ(Brv+%`WU$2!wGbRfWQ6kg9zGxz69mjWD9M79n;W>L5f` z5>X0sKL}|bJ#^gdkyLx_TPaTi@;C>Rl2ptn=CCKJU~Vi9ckW>aoEVA~u;PS^3vrgf zcO5>8;F>KR=_2rD?F4Qpd2j}0}pvUGP8esWv#EOJCqFNXkrqaTRjUtW!1Gv zY#!Q??C=I?G2wNXhtw0o*`vMS>DLUl%X9Q?s9vWZpWVu z`YO9aodt2gmbV+B`oPTUq8L<=R<}UUhWgpkR3Lo!T&E2qAIPFzyN(gPo4IZkzc=E({r~MU36L~6vfbaQ6V1f zsQM>|3XCpqg&(6gQ--q6A&aV*&#n0c>`J@l>%Xe( zicgulRuXRS#a=H9u`mfkG8oK0-S(K%{S_gC=Wk4s_-{I*Xd+sXy_&Pfq9L88^F@6d zJDi3m{YJ~|U5`mgd@mIs5eR%SdVj4e8K%z^TTurV1;Q=^Kb~dpwxN>fwR0neaWn zd~&SGXASjb;I*-ZuxNZ5oF8j!PFtC1BAK*Oh_4U<$O{%vVerIw(9Ph{%QIm0cy+^u zzV(g`=hCs!;OFrmygbfk3?woe(J5ijJtB)?(6z{P9=I^RFo0H8iXu}bimXK=TSpNw zWFKpY)OCjjQk%$z!NZd?D(IYb@KhC^KHKO~H4v^$Ux>FbDwK?T;%|4zjAr@<&Gm6o zKVD||^}>q6g*z)7GG+Ez|}x2hUnnyTv{3`n#}tXgA|NLRj9*r58k~xw@t&|mNnKW7%l7= zZ%-upIXE1`k{!G1hsKFe8^)M5=8@|ta6%^IeuTzGLV~EA2(|XlOLG2olzcj(sVeFf z;dO;p#E{G9FWm-rO*94488gExsq1`k3f1)IL}0p(h0FR<_{yyMQs#CzHPH;lAMIth zgVXcihu;tWuhIgQc2C}Mol1i$H7*ohkuXWMB2->!yp<%1bn*uGze4|mLfijEp|}_L ODJqFQ)pR_%Tz>=Hju`F$ diff --git a/dbsrc b/dbsrc index cb9975a..4852ca4 100644 --- a/dbsrc +++ b/dbsrc @@ -1038,21 +1038,22 @@ dat={65536: {'nom': 'cycle', 'value': 65536, 'icon': '%picture/cycle.png'}, 65540: {'nom': 'cout', 'value': 65540, 'icon': '%picture/cout.png'}, 65541: {'nom': 'tech', 'value': 65541, 'icon': '%picture/tech.png'}, 131072: {'nom': 'run', 'color': '', 'value': 131072, 'drag': 0, 'ref': '', 'icon': '%picture/stop.png'}, -131079: {'nom': 'levels', 'color': '', 'value': 131079, 'drag': 0, 'ref': '', 'icon': '%picture/levels.png'}, -131080: {'nom': 'screen', 'color': '', 'value': 131080, 'drag': 0, 'ref': '', 'icon': '%picture/screen.png'}, -131081: {'nom': 'settings', 'color': '', 'value': 131081, 'drag': 0, 'ref': '', 'icon': '%picture/settings.png'}, -131082: {'nom': 'exits', 'color': '', 'value': 131082, 'drag': 0, 'ref': '', 'icon': '%picture/exits.png'}, -131083: {'nom': 'setcopper', 'color': [240, 100, 38], 'value': 131083, 'drag': 1, 'ref': '', 'icon': ''}, -131084: {'nom': 'setfiber', 'color': [208, 213, 79], 'value': 131084, 'drag': 1, 'ref': '', 'icon': ''}, -131085: {'nom': 'setnothing', 'color': [0, 0, 0], 'value': 131085, 'drag': 1, 'ref': '', 'icon': ''}, -131086: {'nom': 'others', 'color': '', 'value': 131086, 'drag': 1, 'ref': {'nrj': 0, 'cout': 0, 'temp': 0, 'nom': 'null', 'color': [0, 0, 0], 'text': '', 'value': 196608, 'cat': 0, 'tech': 0, 'activable': False}, +131080: {'nom': 'levels', 'color': '', 'value': 131080, 'drag': 0, 'ref': '', 'icon': '%picture/levels.png'}, +131081: {'nom': 'screen', 'color': '', 'value': 131081, 'drag': 0, 'ref': '', 'icon': '%picture/screen.png'}, +131082: {'nom': 'settings', 'color': '', 'value': 131082, 'drag': 0, 'ref': '', 'icon': '%picture/settings.png'}, +131083: {'nom': 'exits', 'color': '', 'value': 131083, 'drag': 0, 'ref': '', 'icon': '%picture/exits.png'}, +131084: {'nom': 'setcopper', 'color': [240, 100, 38], 'value': 131084, 'drag': 1, 'ref': '', 'icon': ''}, +131085: {'nom': 'setfiber', 'color': [208, 213, 79], 'value': 131085, 'drag': 1, 'ref': '', 'icon': ''}, +131086: {'nom': 'setnothing', 'color': [0, 0, 0], 'value': 131086, 'drag': 1, 'ref': '', 'icon': ''}, +131087: {'nom': 'others', 'color': '', 'value': 131087, 'drag': 1, 'ref': {'nrj': 0, 'cout': 0, 'temp': 0, 'nom': 'null', 'color': [0, 0, 0], 'text': '', 'value': 196608, 'cat': 0, 'tech': 0, 'activable': False}, 'icon': '/'}, -131087: {'nom': 'setnothinga', 'color': [40, 40, 40], 'value': 131087, 'drag': 1, 'ref': '', 'icon': ''}, -131088: {'nom': 'stop', 'color': '', 'value': 131088, 'drag': 0, 'ref': '', 'icon': '%picture/run.png'}, -131075: {'nom': 'move', 'color': '', 'value': 131075, 'drag': 1, 'ref': '', 'icon': '%picture/move.png'}, -131076: {'nom': 'zoomp', 'color': '', 'value': 131076, 'drag': 0, 'ref': '', 'icon': '%picture/zoomp.png'}, -131077: {'nom': 'zoomm', 'color': '', 'value': 131077, 'drag': 0, 'ref': '', 'icon': '%picture/zoomm.png'}, +131088: {'nom': 'setnothinga', 'color': [40, 40, 40], 'value': 131088, 'drag': 1, 'ref': '', 'icon': ''}, +131089: {'nom': 'stop', 'color': '', 'value': 131089, 'drag': 0, 'ref': '', 'icon': '%picture/run.png'}, +131076: {'nom': 'move', 'color': '', 'value': 131076, 'drag': 1, 'ref': '', 'icon': '%picture/move.png'}, +131077: {'nom': 'zoomp', 'color': '', 'value': 131077, 'drag': 0, 'ref': '', 'icon': '%picture/zoomp.png'}, +131078: {'nom': 'zoomm', 'color': '', 'value': 131078, 'drag': 0, 'ref': '', 'icon': '%picture/zoomm.png'}, 65537: {'nom': 'nrj', 'value': 65537, 'icon': '%picture/nrj.png'}, -131078: {'nom': 'stater', 'color': '', 'value': 131078, 'drag': 0, 'ref': '', 'icon': '%picture/stat.png'}, +131079: {'nom': 'stater', 'color': '', 'value': 131079, 'drag': 0, 'ref': '', 'icon': '%picture/stat.png'}, +131075: {'nom': 'save', 'color': '', 'value': 131075, 'drag': 0, 'ref': '', 'icon': '%picture/save.png'}, 131074: {'nom': 'raz', 'color': '', 'value': 131074, 'drag': 0, 'ref': '', 'icon': '%picture/raz.png'}} write("dbdata",["worlds","art","dat"]) diff --git a/picture/save.png b/picture/save.png new file mode 100644 index 0000000000000000000000000000000000000000..f59e7335833fa01ed550678c7668f902d7f567cb GIT binary patch literal 1386 zcmV-w1(o`VP)e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00h!WL_t(o!|j;eZWBio$A4#L zc4HESKoC+xkeW*A1?n5{6jb6ti+BKD015S?twb-lplO0|R0wwLov+i2-I;9CB#luo zsKh#!tj+Gung98J99tee`a$`E4#O9Ad@bmISCG5%A5BBkw6v3TR1;*yIES^4oHHN) zn&O;ebL%c`J0S#*hzxfN?V2OTh=?E}gc$iSeGjTQ=U6T~KyOx%v5s%Q`<@36c6j*k zVZVeipi0v;Os7*`ym-O>{yvW%KL#M@jH+U-#e2`Mzx_hjb*L(B+p@Q}$E#Pbm>wUq zzrWAVFJIz)cf*22aLy4zU^bi8g<_02=Quez;q>$rV+^OKr_ASboO2jsXxo;fqa&U_ ze~zlwYo0!RO4BsVXEU62h>@FfNL2|Tpn3+W_nwqezYEvzBgRNd31j-lbX`Y`kq`ol z#e&VvP1?3aL|87Dgb=uO>lP`+bI<;F4hdLi$vKl!BIiub8Dk6~1iG$=I;BL{b+u4c zt@mtfY~Z~o#5@htn9Erl|{*V#kOYV?cYfoO8960L$gF zeqLGjs!B?U5CVB9F6T@Lp(0WWUMv=LU02cRe224+7!$@=L<}(|QcUEmSGMcgmWfbX zRURNBq?AzAUdluJio8PzBfe!OlLi@H-LfNR#aa6q1p!%e<%Eb-2^(Xu)?$ny#)$Wx zoHN$ib6hGdE*vW7RQp!53aR^c<*KBDQZc^Lw(>5@D%YiySX*1e`!ll?5mfc;d8;B+ z3M)kB>3NAjTlb>IJ2k2omao zW0b7592^{wQbI&9##94MDY3r3&c?=ed znx{?d@%X_b4lJNHvpkw^p!|0Lzd0wbKbsv%QrhaOx7oL@v#+*kAjGZU`on| zK)coweBjNSH{82-kDZ;J-d9%Q(6HmlWWtjtKVq#RXRT_fu1t}%jBiC###%?p31=PF zS)Tp$jH9DNc83XKwSrXXx~?i`KA+c?T;#_X+0r6sEHR$qoMRSdY;A4Pwr#K0oViN( z?z*%ulFd2ObzN0b3E6^FX=Np_Dw%Z7SkH2=_qLTtU3OWrX|Y(GoBoPFRlXQgBc&9a z(wTefFeQozihf4g54K-+?YlsXz1{ccgp^aCQX(**p(ui2t%5=b-6%p*9~&`^M%@)j zT_6v>Bl^%oPb8&`F@i{GQ{M`a9|_kUFxK zv16>Bg47tf@im3eXP=uom98+tDkmR5^zdrt_3y7)YuAQ_&NySO8D=LPqCgPS=Xfc| zSc^3lA3U>@59E|Mp1vpNbUAe|`}N}@oH~&6A3GB+Kc`g1^?y?H@nS^XILo-W?qxk! st~@98+XB@Duao=N9~-_F^j{r+18s@dmwPXS4gdfE07*qoM6N<$f>~pSQ~&?~ literal 0 HcmV?d00001