From 65748059cc0f317b08eccda18c2883d996720569 Mon Sep 17 00:00:00 2001 From: bergamaschi Date: Wed, 18 Sep 2013 10:56:03 +0000 Subject: [PATCH] Added some commands for moench and modified the moenchServer git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware@673 951219d9-93cf-4727-9268-0efd64621fa3 --- .../commonFiles/sls_detector_defs.h | 6 +- .../moenchDetectorServer/firmware_funcs.c | 193 +++++++++++++++++- .../moenchDetectorServer/firmware_funcs.h | 2 + .../moenchDetectorServer/moenchDetectorServer | Bin 130212 -> 132260 bytes .../moenchDetectorServer/registers_m.h | 11 + .../moenchDetectorServer/server_defs.h | 4 +- .../moenchDetectorServer/server_funcs.c | 92 +++++++-- .../slsDetector/slsDetectorCommand.cpp | 14 +- .../slsDetector/slsDetectorUsers.h | 5 +- .../slsReceiver/slsReceiverUsers.h | 2 +- 10 files changed, 303 insertions(+), 26 deletions(-) diff --git a/slsDetectorSoftware/commonFiles/sls_detector_defs.h b/slsDetectorSoftware/commonFiles/sls_detector_defs.h index 182c107b1..38b0042f6 100755 --- a/slsDetectorSoftware/commonFiles/sls_detector_defs.h +++ b/slsDetectorSoftware/commonFiles/sls_detector_defs.h @@ -385,7 +385,7 @@ enum detectorSettings{ LOWGAIN, /**< low gain settings */ MEDIUMGAIN, /**< medium gain settings */ VERYHIGHGAIN, /**< very high gain settings */ - LOWNOISE, /**< low noise settings */ + LOWNOISE, /**< low noise settings */ UNDEFINED, /**< undefined or custom settings */ UNINITIALIZED /**< uninitialiazed (status at startup) */ }; @@ -443,7 +443,9 @@ enum speedVariable { WAIT_STATES, /**< wait states for bus read */ TOT_CLOCK_DIVIDER, /**< wait states for bus read */ TOT_DUTY_CYCLE, /**< wait states for bus read */ - SET_SIGNAL_LENGTH /**< set/clear signal length */ + SET_SIGNAL_LENGTH, /**< set/clear signal length */ + PHASE_SHIFT, /**< adds phase shift */ + OVERSAMPLING /**< oversampling for analog detectors */ }; /** diff --git a/slsDetectorSoftware/moenchDetectorServer/firmware_funcs.c b/slsDetectorSoftware/moenchDetectorServer/firmware_funcs.c index 7b6868e29..52d00348b 100755 --- a/slsDetectorSoftware/moenchDetectorServer/firmware_funcs.c +++ b/slsDetectorSoftware/moenchDetectorServer/firmware_funcs.c @@ -39,7 +39,7 @@ int ram_size=0; int64_t totalTime=1; u_int32_t progressMask=0; -int phase_shift=DEFAULT_PHASE_SHIFT; +int phase_shift=0;//DEFAULT_PHASE_SHIFT; int ipPacketSize=DEFAULT_IP_PACKETSIZE; int udpPacketSize=DEFAULT_UDP_PACKETSIZE; @@ -253,6 +253,30 @@ int setPhaseShiftOnce(){ return OK; } +int phaseStep(int st){ + u_int32_t addr; + int i; + + addr=MULTI_PURPOSE_REG; + + if (st>0) { + bus_w(PLL_CNTRL_REG, 1);//reset PLL + bus_w(PLL_CNTRL_REG, 0); + phase_shift=0; + for (i=0;i1) nc=d;// nc=161/d; + else return -1; + + if (nc>255) + return -1; + + int addr, addr1, addr0; + u_int32_t pat,pat1,pat0; + + addr= PLL_PARAM_REG; + addr0= PLL_PARAM_OUT_REG; + addr1=PLL_CNTRL_REG; + pat1=0x10; + + + //write high count c0 +/* pat=(1<<12)|(7<<9)|nc; */ +/* bus_w(addr, pat); */ +/* bus_w(addr1, pat1); */ +/* bus_w(addr1, 0); */ +/* usleep (1000); */ +/* pat=bus_r(addr0); */ +/* bus_w(addr1, 0x4); */ +/* bus_w(addr1, 0); */ +/* pat=bus_r(addr0); */ +/* printf("M nominal count read %x (%d)\n",pat,(pat&0x1ff)); */ + + + + //write low count c0 + pat=(nc-1)|(4<<12)|(1<<9); + bus_w(addr, pat); + bus_w(addr1, pat1); + bus_w(addr1, 0); + pat0=bus_r(PLL_PARAM_OUT_REG); + usleep (1000); + printf("C0 low count status %x\n",pat0); + + //write high count c0 + pat=(nc)|(4<<12)|(0<<9); + bus_w(addr, pat); + bus_w(addr1, pat1); + bus_w(addr1, 0); + pat0=bus_r(PLL_PARAM_OUT_REG); + printf("C0 high count status %x\n",pat0); + usleep (1000); + + //write low count c1 + pat=(nc-1)|(5<<12)|(1<<9); + bus_w(addr, pat); + bus_w(addr1, pat1); + bus_w(addr1, 0); + pat0=bus_r(PLL_PARAM_OUT_REG); + printf("C1 high count status %x\n",pat0); + usleep (1000); + + //write high count c1 + pat=(nc)|(5<<12)|(0<<9); + bus_w(addr, pat); + bus_w(addr1, pat1); + bus_w(addr1, 0); + pat0=bus_r(PLL_PARAM_OUT_REG); + printf("C1 low count status %x\n",pat0); + usleep (1000); + + //reconfigure pll + pat1=0x8; + bus_w(addr1, pat1); + bus_w(addr1, 0); + pat0=bus_r(PLL_PARAM_OUT_REG); + printf("configure status %d\n",pat0); + sleep (1); + printf("finish status %x\n",pat0); + + + bus_w(PLL_CNTRL_REG, 1); //reset PLL + bus_w(PLL_CNTRL_REG, 0); + return 0; } u_int32_t getClockDivider() { - return 0; + int addr, addr1, addr0; + u_int32_t pat,pat1; + + addr0= PLL_PARAM_REG; + addr= PLL_PARAM_OUT_REG; + addr1=PLL_CNTRL_REG; + pat1=0x4; + + + //write low count c0 + pat=(4<<12)|(1<<9); + bus_w(addr0, pat); + bus_w(addr1, pat1); + bus_w(addr1, 0); + usleep (1000); + pat=bus_r(addr); + printf("C0 low count read %x (%d)\n",pat,(pat&0xff)); + + //write high count c0 + pat=(4<<12)|(0<<9); + bus_w(addr0, pat); + bus_w(addr1, pat1); + bus_w(addr1, 0); + usleep (1000); + pat=bus_r(addr); + printf("C0 high count read %x (%d)\n",pat,(pat&0xff)); + + + //write low count c1 + pat=(5<<12)|(1<<9); + bus_w(addr0, pat); + bus_w(addr1, pat1); + bus_w(addr1, 0); + usleep (1000); + pat=bus_r(addr); + printf("C1 low count read %x (%d)\n",pat,(pat&0xff)); + + //write high count c1 + pat=(5<<12)|(0<<9); + bus_w(addr0, pat); + bus_w(addr1, pat1); + bus_w(addr1, 0); + usleep (1000); + pat=bus_r(addr); + printf("C1 high count read %x (%d)\n",pat,(pat&0xff)); + + + return (pat&0xff); + +/* //write low count c0 */ +/* pat=(0<<12)|(7<<9); */ +/* bus_w(addr0, pat); */ +/* bus_w(addr1, pat1); */ +/* bus_w(addr1, 0); */ +/* usleep (1000); */ +/* pat=bus_r(addr); */ +/* printf("N nominal count read %x (%d)\n",pat,pat&0x1ff); */ + +/* //write high count c0 */ +/* pat=(1<<12)|(7<<9); */ +/* bus_w(addr0, pat); */ +/* bus_w(addr1, pat1); */ +/* bus_w(addr1, 0); */ +/* usleep (1000); */ +/* pat=bus_r(addr); */ +/* printf("M nominal count read %x (%d)\n",pat,(pat&0x1ff)); */ + + + +/* if ((pat&0x1ff)!=0) */ +/* return 161/(pat&0x1ff); */ +/* else */ +/* return -1; */ } u_int32_t setSetLength(int d) { @@ -371,6 +548,14 @@ u_int32_t getSetLength() { return 0; } +u_int32_t setOversampling(int d) { + + if (d>=0 && d<=255) + bus_w(OVERSAMPLING_REG, d); + + return bus_r(OVERSAMPLING_REG); +} + u_int32_t setWaitStates(int d1) { return 0; @@ -1445,6 +1630,8 @@ int configureMAC(int ipad,long long int macad,long long int detectormacad, int d // if(val!=0x2820) return -1; + + return adcConfigured; } @@ -1636,6 +1823,7 @@ u_int32_t* fifo_read_event() */ while((t&0x1)==0) { + printf("before readout %08x %08x\n", runState(), bus_r(LOOK_AT_ME_REG)); #ifdef VERYVERBOSE printf("look at me reg:%08x\n",bus_r(LOOK_AT_ME_REG)); #endif @@ -1916,7 +2104,6 @@ int prepareADC(){ valw=valw&(~(0x1<igJcR0^)>X0cN`QjE zBBTrwK*SW0<#W*uk6jzW^0kTz2wD(d`?1=~#oATCfG97&M!F$~iYp^#y#Yz%vFHN&20Vi=B*zM1&t$YaM_9v&hRNc1QD)1~r!%q1k)y_r31qlbGR|W zF`p5^Dm3~Sgff1tP=`v&MwA@!86re%QXlrLW>J4jLJ`@lis~>C)^D;Bq`? z7HXsXo&uf`A19po=UoXk*@FL?YjVD@9{KAv`BMo+asWsW#5;%#M@#;>)_^M9-iuyF zyoYgm>kAn1ujYDRv0!V6L8$j~q#k*XrGrG1Rqz9c-wq^Sth+jcvNOxfhyz*9tQ6pC z7;$!bqpuN#{=s;p|DR=eyy=1^U@)9d)WZFcVHKEp3=QJ$b&SMd%h~w>wnY+3hRRf( z=c%tA{Cn)2LjW+D1czJz{Xxs3r7 z+CM3eelX&R+bEK>0rYS5UG#62l|lM7R95*eB>&xfp=dsf@H?c|Z?+2MM;L^Bp&Y5@ z^RtoqXQVPm(G5rQ1shUr^K+5<`sQMx>PQR%1Ad@3xl>xAm^$)8r!G2IZ?d&hmcFuq z6)GFZu}-F#3N#KuJYPdDbV{|$Ia~>gVP+L}MKcH-@niV-eSXM8fH6d$>rsr-F$f?b z1|-CA%{h#kR)(~)7>=kZyE+3;XQxL^u^Jh{YHZY`tdC`c_4Zh9w+d7l2VTULYEs-? z7{T4esYxm0P#M>#NpZ&mCZ5});;Bz!g!&}sUNxmG8KsgNH7T}kkgslbPLp)HJ0qO# zUaCnk^N^0b_6Bn$t9C zwmxWWAFjEVCM~BgBiM8La?NHK!()w%CT9DR)v|B@IcB}B~U?y7}v~e(pDgC1=0p-(hdxV0w2yb=W5c%jDReR;F@pKq~+ZOqV0Ea&3T%{ zR4Wvdm219Tla`kcz z{;2K&tyKA}hC*3Ae?Jt;F|ufvbh0jHfW1>X)iDlZ7fvm92*nP~{~L;3 zcG1Z^`nu(8^mWEq$|;Hta~D*8vEV!!gCNDYY=QgLHJMJ8U%cGpYw|M2en`t|rPFK^ zFgDFE;3os;QJ0FvU^fl|QU#5{m>nu|4n@w*FMtNtAyBl%YkQa#gdG>KLdOLKd;t({ z3leDzuPvCx!0G9RBoVk8%GfFx(Z+bHro7dhM6 zY*%K9LSz&!ID?FGG{rbC27#+-f+e7~qXTEMHTp{U+F;iWF&lU&^in^jd4thtD&ZS~ zIoY9{ICEqlrH1kvy)0R3>^efB!3G*^3%&&najp`68gNlg#F(i$5#E^&Kspwjgpu*$ z8uF>JPpBDgWVjccK}OXYt69@0#?-Jb>B{-N7Gr`*m5=bQ0UOpBY))UA*$-TY2Drh9 zLT?O0e2w4B8akS2`B+$cPRgQAlE@H8Y)bB`UX4CykRAC!b~t(&c(ACn(RU*|e%Ff} zi%l(8cyJ62IJO{W8Y9lyP{J<`BADJw?#j3}1^T`X2J}n4*W>d*Ks%W{s9tX}m>IEX z0I|j;>E$jYljBlydjeBrZzX~}ztoR6lGmvh*%6l(;;$d%`4{LwUh9i$7hO)1yQppQ z#22ZNNjc>Pc|$pmw+Y1323d@H7~Bx{ET?ZEdP@;Cc^t~-2OWn|c7RbE^}W7MUk^>U zGR7nmMSk;c%zvSSS+;Ru6>3C)F?KMSP_l$qI;k3sa0fdsJ;?WYX>!LUx7BlV(#Yps z)DgrjWCd>FFtBDSSkn;1FgdNgp1TLEsRuKdAR~UC)##)2(ov@LeScu657Jc|#F`Ge zf<2aa!vIT6BdfTaP?uRimu2B9jHJMN+GUnnsxf})*&bcruBUW)yl!8ux4SXcZV6)>EhL(wgnov)2~oDI5?q{lw-;->g_zYAGGgD=lniPS({ieO z7>raE)k{p0o3k9vQJG|^EwF*M1wBJt3NZ=b(j@bEPjV_=Wl{y0RI%_VNS_QQu|YOZ z=-HlJ-wh^td=77=?@8~VxSaSWz40YjW`Xtt3#rvRzGgh5iWlD&E_-NF>LqcUL8G+I z?5>%d48{bGR(Nw+-}L(*&2F!%s8$%dV03tV+rUyqzf_~4)nM(?-+u+zj*K{ZB1ub3 z(Y;hI{i~gXf61gYF-ceZ8|m}SL?c;|7{`{9hQw~<&BO%V+Nlz#Ya017(QF@;UGIAk z%+BcV@lC{k$L;mL`|*Dm(o4)Ge0q?V<5Sz?Wj@xt|54L#lV(z^T32;9JJI$^tl=sT zN=pX$tES#(G%p4RHlkw?#MP^aCn(A zUOrk!<)u}csy^sJZ3Kt0Z9TXji&i(}r5^J`V^}wv!n!#g-Fy?37Dd-@V(u!krE3=V zjk&(S?bDl2cRXQx&X9(tcef-MHIZ z0Qt}%j1(>}?11n-O8Gs5cI)`gd^cDre_Kffxm7aQa?nUcPfiP_Wq@%_m_eGlYGycq zOG7QG2jNnZ$=2kUGDQmcMXbOtdL6?}5BB8;MMT#w`!3c{S$2bUR-tGSgKz@Pp0$$v znw)9xi)Pmcn_Xk3s>=YMiacCw0JcfM)|D|~vkaXAJkTQ3f&^?&X}UosHm3xerfHdC zsjgP?$Sd7?gk-~k#yJ*I19f4IDjUxM_swOa0*zB;1J>~@nb}j@Ej3mu#fW3!U1%gj zP5t%db}aAha2-fvkOtPGa)h z>+EUvc(cNC{mAt%T8G^2PU7gERgr1e37PhHyq|?hX~z{ecCS3c%gn6kexu}0?S5nT zDuP?u9fF%VP7&HIc2?M8UxI$MI^{Wnny15o^ydBA->L0a%xGC;NlKo57rJSeo%YSr z=T#=`LIu0*v~Siwuk?)`hAQRi*t;nk4aR6N?GQ>ILTSq08P97+b)-#m*raVS#1;e} zG#OIl!P2YeKQKZiWOTr20J4zN+GLzr0Pgt@_LUvyP{Cq5}T%W zrmD-!JDXtxdK$g_Zl|}_y9Z6-M>#Yq3MMSI4W*gB31hS&sA>k9{NT5&w^@5I@fOpK zGriJ_-9mXyUh2iNbb`mbg~M8v37buSMPq-J8XJSgPMcNdo{om=QJw#$DqZ*E8uDdo zhVGj_MAx&_Xn^P|-9e`IOv!$!n_p5W2D&x^MwrdrJZ-T3`EF!e&tbZn?&Qm!eRL1^ zA^Nn;DJpMM!sdrWj3i5Q>r1NOM6O+qFEg5{0&fC$-QL|^DpKFvV`;wnQi!_cX?=7o z=JT|aoO;E50!^-@2fmzb(fOiLEi>M^4yI@h>;hix|ad-XLQ9|L8e!`x1Dt~;^W zU~}%L{?C~MX>D-Co9ex0)MAArDCh{~95B!w)W#e20@il>8znGEAO#CSCrx?$3PQ5ChZ9 zxqo+^Rd6^M8pLVUo;nA15FA1v;Mwo2qiZFlzqp#VMwoNIN_V6TOsGyVkIS7lXXXBE zp)TN>Ja7Nxij{Rw*0FgEc`Ut~amZNreg!*mrl;u~U5O_>+5U9bn=8awp*(O!TGIn8VE28$7TtyJ`)+NMl=ID6I-)6;@z);4 zK()(m$5OzFkx0S(UM>tu?XnCB3IwVBAL>}O%eqKVAQ(`Q-EX9QCU@DdzbB0uX7l+Z z561A#jJngmCtU9o-O1i0r*}$B>evuVOM9o-x1p#Lq90?*7Pg}gsB?x9Yq~l?exzGu zb&`RH)l%xA;w%1PE#>F-wcv|Bvj0I#QNh6a;c4pdCW&Egh3`Rj}Gf@SZ+in%L_jkgRv{;l$<)U*{6^lIWT4{>4lYo0G1BV zulF^;OkwSkKgS{M-g$f+jAGgg`9eLoTJJdH{Qyw(X01{Ls%;IRm4V2Ho?YD0 zjD4nl)IKqU*;7f2Ss`gL)n0>FX-uZu;cB54ggo8K)+Ws9N*9mE3%>>Gs zi|J})^UD96-6o0TC)*%-0q`$aya)InRY^X|4QPYi<8DfFK1l9L-Yn3MYSfJT^+3IT z@iw5&TZz5qEI;ygE@lv@yXGs5(eJp9Idf^;yNj z9Hh*V+#10zTX3G{CWhv74}nmP>JAZ7&0KS#=5~p-)1q8b<6A!2w^mCb473 zXHSTk@io|@ti~24D!t9FR73f48kNoj!)G?o)*3@G=*5{z4mPSqe_zIUDX~~^fMX8u zP~ii038~ydDsasKE;~mCVKUbC(QiRc+svEVMh;iQmMZYH5*e{fR`5HNN;^Yt1Xr`z z@NN&BVPJcaQ90qgu%}nsy|90g(lgkeSai!j?FGH27p#j^S%yPBBswNpbneuM=vQ4d zA}UGfr(G1@Y5Qj)P|6%78MhA5ECv6wkuqdacrQGE0~w1#WQ?!**=H~_;ybt0xdY<9 z01n-dk8bT2nn0@|iPhDspcZE@SC@`6y0o{98NZxbm~>K>oq1#0g}y_Ac0y%Eg*K6x zUZQ6qOwF@6G3*NRHQeJO66t6N@Zv>k*R-XZz-d{!=-!%xj zT`Cv{JILufqj4VZ1N=UW%rR0cIkn+p--T+6Wh24~V@*DABiF`=T^Hh1R5g4T$AIFa z1wC+5KM;N9~PrY_2Qa@yr4bxJOSbSwIwm$St^WiqsmY`(phtP#I$v zQ{+&GWi+U(eT$T@&V@Mj18+&a#_*^D=c<++wc+SfwaU3QD0g$tEv$}o@<-b5)RC58 zGT6haiX13E&F@4-N1WcLQCjN9hU5@O-$2&-Wz@1AU7ZTv>HF5-0OJ9SXW4#CQ@2;& z$R_Ms@Og@1-W~0sz6({xFpEnn(TE%>W3@pOzGE!enVS_7tQOSKvTQ%-xU^LDFJCaW z=PUgCQWAGts=X0Fg4g3Um#_wUUQHRS%yL#>mKT8Rzb>VGvy4r(sKZVAd2&p4KvveS&LfQY+1Uv1X*#?@R3318Qma;<1c!t{qU5L90ipzL5WcN z{t;t)eP1rotnzDoyU_U(G;PtdTq9&+4CX6Up+aixVaq-W0v~-Em#g;;R0}V)x0KY zkCdV`nrbDKvG~to>4#Hz5<=>gIvY6dceV)1~+}HVLviFD1{z;PX(KR?# zg|A4U!QmS84p57@A(;PiXH|?gLX0*p&wv;?m#E#bsI#I7NOhh$Ns+k&06wss?rG0i zLhADR=;f0-<*b!&LA>JA<;)E zZU%eIYPx(jkr8c3H=t`mK&c{N?sOso@8U z-iz`3Vqoi49f9sTLRxRPn3aaAjo7gm1M7JVtmhfAsfv^iPHCg1D*-eHKnUVHRdl~z zskZH9dZR{jMyj(wRc~x~;6P*tLo^N>YNp#tG_LY_#x7o{Dn&2f<)9Tcz*lY+R-keO z@!cwqbZGZ}y*&70O-vXuIMR#-eWR~G7}x02BHse!TY#ayitf1MONzZ*<@fHMVK5|W z2pNo-2Eh9O{JI2;FDdqXl`23#M$_KbYD%(oNM@OQj2J5!@izwL>@VDRM7z-HB&m`n z4GV8{L;NM0x~Iy~apgxyvZaq*{;YE^0b^XzjmRwY;sg^^6de$2q!j)IxFTMVQvym>JKRIi1`f4$-(i1VV3Q*DHP}Ywo@}b2v zcuw~qL=eCl0(dtf=eAHzUU!l@)HFCgCA?^N0E9#z>pgl#JaXu~`I94*AHni~3-;S(wQb^K7Y#qDcl3e_SXdFbf-k5DJpBL5Q;Mt8t2NTXzIbmWL;GFLYihb+c z81t~Re+girinJ;zZT(zj{FBN%fazTf+;_=_I|@QQvlF%LTtR(6Cl{$Y{==yD=FGn? zqD@qn@5R^{h!Oll6i4!(+AY16mbPP(w>1B9+;aAp<5c<5|8SJT(6$QoARj@Dnftaz z>C}Tzn%ZM7t(-D)pvI_ZYZszD<;J%@!(maOQcfMUhpGourw+ zV+Ls&kxb%77!`8NBh*Rn9LPDhLI>elk0ps>1UiFSxb5>F_Wz!~Se*W7eOe|^*Bb<8 zD8w1=;zP1#T#1vSEB^*wWoU>?YnQlK5J!839&pvN@W#^s!TDF3e#4m87sM@pItJX! z7Oov1U+9`lJG)mVMN9WU6tv{ayUf{&OG*Kiw?=k%x^XL#WLdL9P0K>lvR0l!(>5$n z`M$1Gd&6k)0;Or0|7p{DqG>-rCG*|iTjrBSX3tqeV?H52J49?Dh%H=67bE5csv?(% zkZR2)XmnB-KT)UqDN1@LOx}#hC&=~Q+{VB4Dam)=BV_k|(NT7QcMdI)$*1}1VObmK zv#q3Sxcd438GY6ueGG6k!tF}s=jQYs|6K%q&)rDhhJrq!F~0!xEm(O8xNY-EV?lC= zv8uIp@BII|Z^7n6zv~1gg&RCKbS?G4hPD;R!y^-w@wRB>aJ|(VBUrtpeq>Ve>_zeh zmI0mVUdhlPCjO3mJ2GYJkVTxWs@V@86(jzAfzxMsje0+-nlA?EA(BS#5~N>Q=#c#C zO40A0Y@N~QdkjOVA9AlRWQ@}wx=+KU`LyH~?uKeO+}YudlIevxb`FL#cT~P>lTdTQ z+iJ@%GuT#GmrTeDZVQy}jPcK~gQ2;?Kc`^kBnAmRJsd*fe-ssI5myhaj zQ0oXWj>-hZ^z%jz){k6LrU0ruq)wDgC2;!AW5G6qya1$cm?z3VA@GxVDd5p`KJb!)w`d2BQKiD6LBZx0m zPKN`p0x<+}edUAHorf5L_(EkFVh+R*#O0M^5nF*6f@rTCg_sjD1hJ~}F2pt>h9Ev! zX}2KiMifDOv~mz)I}t+=XH;e*whu7`aY`lK?5Rf#L42Sx6|uvJA&BEDyCT+z7=k#u zlAfyg95DpZS_wH3nh-+}hgP=EsPo)z9?hF)8~F5@1$LnV-CuFUf$rzf>Ceq?LJygE zMTC@&5&ns2%OVwD)8vghWMD!fhUJD~CbgurB8MeN^o4{b9N8%KlAI!wW$EK}?zSrR zx|Q)HOGD&{qJ>Kz{0|FLMkoW0t7)CBeD6J5v`wcw{1{nrZ)Vz-l`+DWmGL!}+NeXU zwaJGO?k*}lBl%xM64QW};h=+em9HqIsxGJ)*v_Ln#YHw@lK{jR=auLLxkCOWFrg6s*MG#$&{=AE; zrANg*UUqyvj-0x2xyQqLLP7;i1Qw?3WfMCd?8)Xaa5PwS3$?BMN+k;$UzWiKSJ%?ry!jbNI?*% zB1JwsWfoX=XG!I5#uja>ElB}}jupkiPF(ibd6eqOop$-NMn+i$1PI~?31u-*u15-j zc>5ztF{%XINJS7I4W%YxUr0t9Pmgq#EH1^61Ju43I`fP;;gKv`RS8vtOWrdqQ6TBQ z)0kqR9wgL*nyhK%I2yH#p=z%YMG?ed;6M|;5yZv62^o5s z3Q{>?h4OiQLZ(Yhvtbn*IK)=lRa)hAd-8H#H z@KWgzAN5ZzHhkSfK?MedF0EPx!y0JgHP|1V4N?x*Lm7Bbq30kuI5EZkP{6>q&aety z7`9Aa^mM?vOG#q@Xn{26cI8fZ&BD@FcL_Uz`c4IJK)f|@!nXK7|^=Y<1-6(rirSr5HTG&vv3!S z^HV~XUVb0F1|1NuT_;=1Q|%Y7)8o%4fc@j^9{g=a9M|?y1;2)#INhvP(L(pQuR;vq zNUD6!W{BwpE2F|2gFtV_7p{T*x`rNoiMB1lQpfwaHn$47RcrR6?9$nE;gyB!>Pboly2`ViI^ca+EnMJJ3R8G-%eZgZb)=#lC~)ItZ@YXR%e5)cdGB z;7SGXIC0tk>TI*X6tENMy&T$}5oizP`Y`;bQZx8EEfo-puKU3VdUf#1T+DxHsbdXR z>UObpmeX5VtQ7AREZ!qnyj!q%KNQDgh+-RQG4b!SWMn7ihKLxi67lObnTS^Wr$k)7 zCKI8Tug}GL6 zM6UL)!7|=pnGd8gEhy6>m9fvFYlYL#SOvzumJyh>v_;R%Qij~tYs!$@bd6eJ4n-ee zm_iuP6^&9?c%-hN$15ponSv&04$AsP*XnT*Dx3{$M}-Ayj;5 zEh&94N7wULvgkppuK5>I|6qn*rkJ!mXx6s^rgbfeo06kD_zM|6B~QtmJ0(r|+&rZ? zImgKeInKyNke{byDo~lf>0_6PsRI*W_xm2A$A!Y!!_}CuF>qrlWknnmbT~Apj~jMtQ6yfc*R~Q5{)K?rg4RP&;(bx;~^00@|RP zyfU?Gs#b_1xkMVL_R0O{tc@g+WIdERJsfWvwPUTt;eJyjFJ<00T}y4F4dHzV>XOL* zhY}(voZUvj8z{W~P^$gEqwtw)nQc@QPNC9URLWu_TS_+BdMP4&&~`oVo7Roez`xq6 z7#q~uk<-3!rK6w0{O9)?iVeJ+`e7^aPfLn4RuVTo+w{L0*o`6Bt*xYVdQuDt z!oJo@9-p3j=kHr3OA3DJCa*07`)I2HHj{y$Hb$;zdTS$w!!v+|8I0jr=%m`XANl+A zd+e`20y6`b2o?l}HZO!HyA1hd&U~TTiE}efM%*>6N!kl=O+Mo-;Hi>>0XZAq9r4a- zvKv2NSOM4-PI`y^w%_`3Xcp;sedZ$I;emfd$){eA-pKc33IBZ}g~9%UU0996tDV6I zYorYZGTU+%p0V1FRjT`gGYX9wD6fW>YsvP*@Z!9gxN?9nbA`D z$wB(MbYYQaFmyJZ1Ucn33<90C^}(`!KUPtGrEI?|^__rX_!VM(IH~g%KyQ(tTgXEX zr`wwlM-V@L$SPRZF*JxT;9E(5{~@}Qn1`;Ec}g!>MBxbs7;ezOjCeIhIXOp{B=Xuq zJwb@EkApaPc%cF(qNSHy6d10?!lR@eQ;Gvq3Wtd7;iY!uoOO7cY276cb?V6X39BEH z36SpMpj#QN)#dB;s?pA19NmyAi2yngO+ygP4;8^;Oot(o{}cVvQ=4S?Po#QQmhOq4 z$eXj0vu6BcseP`N5j!z*iz}rTTXsLU+fo}4AN{GxSB3wxej?{)RZn~7K@*>j1(fG5 zM(FneURM&fPSpv~Jv#74H2c#1xCuGA)iZRrS$K{qFY$X?-9u~V*?tFs{9OR+w028> zkL8(7JFi{1lx>n5SeQ|Po)I1JqCXkmZdh|ZoF5GW{ZwUFKBE7e#UATJy z*Ol~qr0=xfw+m-Lz5You7aj?5;ZcbTE3RWVzunTEP|FGO+9T<`i`#`0$Kllv@{dQ> z_P#i&Jua*Q9Jui4#NPYbg&PaF?xgE)NB0UY-?4i3V@ah*DaZT0SKZjqCG&s#WUqS2 zSN%FK;#;QtJY$dVJ~J$}v8^!sx?}jvBAw?9)p>s)qvm9DFZ^Js9U_XqvRNMO$EgNyA%+gx}>br zsVBZ0%-<AVKE?T7_W%lM#er0Fx@g z47|8^@{`%DUTz~<^}9WpQ$RR^_+$BIuwnJ+%cphhCV6dTsV<+L7Kl@lpt zJtWHFLCwAk3SED?Ad~Rd*;!E%mpXk<-h3wGP97!s^^}&^!)Pf-I)eC67%itSXlbb- zv2(lU9Yz|}DSn?!Z@mQLM0o`9nTeEwm7rxph?e^g4knXA9Fzb@VbSU`*h+3dW+x?au2Pi=XN`z&;AFGEyZzi z{%EN@rH`gj^JA!4&KZUr+(NP2=p~fTdW1T+4QnI;c23_1uyKj*mu^eM#zQ~I!l1QT z=<$3-L=>?ZU-NCSyA%_II;*U>gJ0+Nz!n-_k3WqNa*Hblfub9Zui-APropOOC5NpX z2FzclJA=?gP!~mB()4V#UY=OUqg6KLv#}~q`HXpPRcd>fiRU?M`vAsy*$HxO4k*iF z)GF0nG_PoQ6WER*4t?NW94I$Pay9K7wTbCam~u`|dHfuGw*(?<;7m(lySA>!owN1i z*t|S_){8j)_9D^GpP3}{R@o|$V`R~MQ|GiRQ0#cRFd+Vs)Xwj24|Reu6`i2Ws&qHM z!P?|KY^A(ZQyaZ(Oq>R;5ibU)`4n~qI&}psNqSul&n-bl>V1mwb(MGGt-z1pRmQ-ujVlY{X#X)(6Dv-;y~CGosFYOBZ2#$%_kzW*?Kj$&6@QlQ*7U zV%6~m-i=FqY9XHlv1A5mUD#*b<1@@y`>B~*zEx@Hz^H8qXE^M`hm<^-Ve;@Ja~5T% ztVhSLKS-0QQcTjU#))T9Qo*ekGL2cln56=bJaK@3{?UC~aTxyL+;WSvF^_YVwim9ac;#>4G zU&*+|!&BrEH|rDo-g7FuzU#3G?2-#8ebN_L!(DM)4Q&*C)<&*{9>$`cHrgSp&(X_U zN;+rkgmlV7ho+X#d&~;e!r6np@~>AzdwWtF)zEGk8&=J2p=#(wDBAZo)>3@4)=UDr zJ~yc*C9E2SW9ya<9v$w$qI@!k@hJxUzgoa{*Ihm+UH*+?BnkyNyz9?9{LoU+L1D0?~qB=BMVgnxyct08?WG4kSQRR zw&EEGNur0C&BA3Ch67mGfZVHzP+9JP_|P}%L_wOWP2+}qQ|C4qlemER-j#s34WRU% z%Q5Ia1aW@})strtLlF0tP#M?i$!JXK^tz*>vdO4rW_vhozYWs%-4&TOw{Jv{w!b`t z*-}H>&&|}IWZ>hAWm-=+D`=_1gKp2jGg2-=jFBNeXjX`y4B`jN#CHu*KTbnE`FUCD z@K!VgK^$Cy9h40W4I&TQd9J@{|Hb_Qanwb|7w@xdqff3u!u`t2zya|`KN-KgIO`wh z1LBpRHkt!sOe@X|;V`%v&ZiupLJ(WVDRT`uwET7UQ}V>~gL3}*JvWn@kHZ0kAigm! z+RRDCDv*L8&KzeIR^xm1hP}t0AI$1EZio^#ZXkx0lam_H=6lC`ZE%p8g~jj%1Vr&H znY+?#JbAXEpg=gaL5D!Lt?Z+}3-t;L1X1T(e2X1Eu9#u$^Gb3*o1sQXfK5ij+f0IfN8y zt$qx_mn%uA5ki$ODUHchO42hZS$O>T@a{-RJEcLQjGcG=wcL=a2vrLQzy zHxGNG#{Kgyr<;wY?hP4`5v@}0_sET}r3Yl>+!mBY5C=)QO~}0uxus#bdkfbbfS7K? z8gQc*O7Ywoc<>P`lwx0>DMoW>lc-w)M;>r09L{6RAw^(Kk;EFM$!as`rX>toU@4cd zybYXl5St^#e2A&_?V~l&qb>hd71ENPR^k9!hlJJ%wCfRDFU3}d#g-tZLe58(YLC%g zw9DQ2pSDy*Jq{J^1Q9zWB1VVBtYJh9MeG0|4^T+EmFCv(cW|q>H3yMJr!zB8L9$NS+kVHGdF7<-=Bxq6v zLml$}Hfb%9gcXJe%L8F~5@Ews!r+03pe!dynM~L%AWW5x|AsKRi&T!aHsOK8O%w3K zp+wU~MAgi1n?j0Dl8t}2Vlr<1uw1#2?A4SR*$P$C+Kwtgv1HP?J~LOA#eb`4pBKm3 zr+~#%HVws2OD>wD#`+^Bt2UaK*_3R?aaO=qO0cQORbyQdt43b6lo!{8b?Zzwjs|(r zQ*ZaEbJxQr2u|DZ75@ev0J&}O&)-QbwM(EUxtr)oORdA0h62hH&z9O1hGb||86Dv_ zq_OKr$%d}_V8Wvt(zs{7^?(3sTgs)##tnsK8$sVjsoNHPWfgWIwo8gViOCkGqcQ>`FVT&<+DPueQ}qJvHlE zntZq5E&*M3UxGWHrmbkP@bpV(3y4cvqVNz>>x?E}0#H1UnKDCK_xw$Y!HU+2${~PIkB7MsvXhjTvDN8XZ z9(^hGE_tTsY8<$uRE#;F&ik;gW8=^nO3YMZ$Xz>m`r};9eK=NDiw;msjT2<;)}C>V z7A7_UrGqv2UrNnTiaLy@FtqU@v}C}RLe@c^+VWhE!n{T_Ijx7^Tfe_vI$xUSE#T4M|^hNOsp>#4Oc5NgiurZ(=@Rg>6c4^gcS1S%ld9AyEcWI z0gH{?^-|9xGnxw%97q-uu4jDSev_qNFi%pF&jdBTD>*Y6Z^MnS=K$Q zc!FAdz!nqXUP;h!w_VUFuW%aBc8EHq500n`cP9H3dBJ_pB&AR2z>MOCLZIPp{<;aT zCs1)tFkgf?2gG;3rov3Uob_KTqD-GBy-}1~Aj%YO7a3UFt4-{2&5_tUH7nSe=6?9?(?J`aMJ zx0#IDHbVJyZkwyOAl0&&7+jqt zj|<%nW2r{4PiPiU3ArcSP%P1R-ZY=M6^W%cU6gg-l2Tfdo=tcJZ{cEB@3pAT%1Q{Q z&dGi6CKCUfdQ$Nk-$$kG0r(^aHyL;wor^BP5k2{#fuPVxKJ z4a5gkD=}KLoffAzmuS^W2A!6bZ}}F6%%$+EV^B5SRFp-9tMU8tfJ22;NuaKMHC=&c zDIe|(X3+V=AR%m>foD2wyziY1rI7ri7BT{QjGRt#!5&Q8nWA*&h@B35g;zNU?b(bM zLpIZ+&I3kJY-Jg(_$es*{!I&pO3UV<+XCYJPw|T{i2W+Xp8m88W_WpE(A+u5BwANqu$nC)tV$A)1Z z6^8k)2+TvmF!N!U`+ZV%gLL!?gEy)0xe%v#3Asv0G_qAu)FGzk{c_42LH0jRX`#;` zrb7SUsqjAh7`bX69z#s+!*@^B1<6*+`@(SVQ*qlt_8Sq%UkgLNH4M4y6l1gcEaqsN z)w|f*TFaKvYg_UdQmd;Dt8SrM9cr5!R+~K_J|0%x?6B%=r>rmmKuxw+* zFZJ{<8>MaY7?5R?7Ppxg+?mqgE;waFS)0#>O(%H?sq!cf@Vt+wzkBn>#loOd5|d;B zbeb|rHer$+2F0q(JzD=Fo#b$cB03xJa%occW}2e3PQPizs+mEb(8bi$kLgdY(1mx9 zHl&q(>;!G}E=B}x$Q$)Blv?ZtRjDCu_{SmHKwQfX$MG9KoIST zm`YG`sPY;x=4)7BhS+3P2LirRSn2C0wWY6|#2PgM{yZSm+L{s5wErsLeu%kjYF=gOQR4|31LE&#!oXuALyaYyVR&O z*&^GS_I4b=Hy4FU*hP;2(9UCQmEgW3Xyyeym6c(3o&zz}N(&bSC-M}#&F%ZIMd5C! zxz-u(Fj=5gsG>lvU#%!Oap||0xzcOXio*CmPqE8hmaABXb#1f?7U*=#OEeZ27K=hm zg=8A37NBpfjRE`^3I3;#XkV-G3m<7qe1n*p*QDmzQPme8DU|;+pBx?NH)C7{CXQ;shPrPLy*>>b!ZDOTCXJ2@$8jM6vE(Kx`VFFLX47$!xqpE1GV(7=+3y@DQ}-tu z4O?)Satj@ddyW&w{$#rfQF}a`QBAOM=o^akI`I1;-ARkCKCZG&cDu`1C`%V<^5ne& znJAi9i9C4|BNb$%Zb8~_#aR*6Dy^Ue%G*I!974te8BdXk))1~u!M;{2&qaHExoL6- z%U+fQplFoN9F8zI(i1($NuzIW$n8u0EOgS)7O6i5Pdn->+#;i>i->!UdB8S$qs8xC zY;Z=Dt_8Ff+ooe7Mq+o1-X+IDG4k$#bbUGMDBnWP9Y_hzi*j`pKp@YBa@>ZvY$nO^ z@`!k81bk6M+QnK-PAQ65DSlyjt9&1Radvw!^;!gjRe$jfj7UxEB7slA~^LPuZW@4YJK3z#JstEo?F3_pTx; z*%g6g`%z0RJ#!Nfe>h5Z)DP3=y{r@RUM9`;bnKU+J*z53F7bNb|5e#L-j|Jo3BCgFpbA;+Mc~4H}=NEt|+C+Ek%1->VU5-#pTaxse_RyLN=Ed%H~Eg!VVROwPT% zO8H#yPR?L$&D|nunv9yXlth6t^Hy}kR`TULd5WXm`mKrZhn)IC

ft?;RQt=G1-i zFwwnRrGI)WD?GiGINmMS?*!mZpm^6DoW$gIpL<_fZOZYph-+o}^!xNQ7L_e+>Ipy{ z2ExNzyG5;4*}rNE9B4-Ykxmd{UF~`OJ8Q7jhJ_<+=x{l z%8jT9{y#|u9(^XPBR9QE_8iUVucdqOyLj)^jRW8At3VZZYe202L?)TJGa!CR0!O>+ zgXE=sP^stLcvI6&)_=h3tMFOnCPzQ$qu&JtyWHfb4+`v`FC1~BinuZR&M81N zMWGmowDHP_ctr%_ePq(9u}bsjo>1|g$S%~%S8GFfr}z=q=C?E`B5sP+C4F%#<|0s4 zSxd4{4zsVv=lWVYZpQTsm!CZiZH<>dgpkqILF9PZ7*Vw|ghM-CmW6N>a2;pE?e658h7 zhPbwQ{p(f98wjn~vC}pjS=dIleKJ6wh0m;Qff^U$MCx0v7=5q$NVt3nGQVf6?1o@pPYYBa0O-?EGC||8JoSN@Od>_VX-@^y#4F`HNNsiGA z5;)C?{n#MJ8rG0Of2NSZDNegvNiM}b*KWb&nouf^hZ>B*)Dxl9Mx=H$?SF$-q*N1M z1J8IUm0EwhVYIDA^AN;-nbh}bF*o7Lh1`1lP(Ue{Yfr>6VkHR&e`m_KW4dWl4M;Uf zzzLdEx%l)s^rrs$ZTR_wZQ7gqxtUGqXX;Lpc|eaKuQ0sbLy2=W^WNYH?Bz~JVK5&h zr%t=|+d=B~ZF}eaJ&QGEAF7gu54}qXHHM!Yl;wr&|1zaez5+)td9`=FE^8q5=E=oy zmIep3dky45Da7eWW3iYd9u1w_g%g>yGvM!b^a zhH@wc>e5$9g_vnkh;Ez34OT1mlg=bEwo>08%~-ZV)NCkhdzBm#%SS!I2gD(V17hM~ zm3t2(ZR8PoUGl~eCrnz0Z!)eI*>LAvp)9_}A#pUwqv>bo-pHetv*j5Iaaw4uCZ2y= z?TzVQ&kTXtAbWdzI4~rxej;l$rB!=dzHVd{C1L$Gg?#?aU$oITTf(B%|IkFgH8ua$ z-0(o3;c+)k#h!nX34ycfOLP-+;Tt$;G9>< zv2(WG)%dJ_^**>-zwKeh--TH`{?5x9pUzCfu>`D8=8=-~eY?NiKOnAp2M=Mqqc*Y* zX&cDe^WF7ZfMv_8EA;t>l!|wyx%y=|U!5v>iC5ZFpmrDKK0qrE^ zmj;J!0h=NECwp*E##HwO$JOhX%uP$#t4Wu#nwl~i5MHpvZ* zU=HQY{>vxzN!xWo(sr`$#|nMncDz-%ecewPp|2z|{HFn7?CToIzU4nvT909(KZa{P zn7!pMJm%Svqb9_?=o=-CwbA!O%aeEL8 zAH;X?N{aIN<(1^%=iZ;M#IX9-?J+{@b`o>-ZRPXi)$-uyUjFBkIwjd~&8d8Dy*5*U zFkD|Bqp#W?EmUoPYny@nFiKyCNZt0g=5p-MToCH5x#{eFmc8N{)SKJa1rZ;v?TF8%ncr=f4#l?cT z*fBc>e^Iu$8$Z1>Q;d%&9`|>OUGHVG+1V5z+D1X9Gf_O<6?uc+6q9aUP?M8ZVE}xE z*OhV$y92*YS0FSVq=;>^DN-F`a%tSjKsr}UapP{r!RgFBLd(Hu1lQ$TSW6Bqq11FY zTnBgaf5PPbb7wvOEKVLyj&GhF#m7mnRu{*+%KNYt>^rW8K5V*ud%VpDzfV#nX0AEc z==}A_wQBQdR1t-swp4DTRch~aO+%+Mcs7Ky@Qm>`2}kj@Ro+eBVuK;IfWHS-a~#Ea z*R^7h8iVjaO_Z5o9^F+63qJ4KWA>W6jaR$Pdjp40V1S!oCYrqkLZBi~)!4#?zlh{GZ9t3c6g2itS^Xgz_A6D6wljk9w76bmNN; zP_D|nRC{SUlQzk#PzGa<+(#(dnM^buNnymroa=gDHdF6`Gv3jscku)EM#C zRhPw@(^_A9d=JD#!jE4s)8G2$-Nt`(Q=nZxp?)3VT)F+&Ed0nPZBUr}h4%`R^&($n zNV*$+aNYHMKei`+P)w0V*PH#=GV}C!gYinQ>-P`AE!Nw4eQbv$#-=yl4LK=8q5I=q z8QH8=mmBYznavK?CC9tAWV0K&7vmpFe=hFjBxso(&^J3=h5gyN37PTnxUWB&|IssK zcin6}L=^8j)}LKv$nxG=VHC2wuBka}P69swyGjH2-BsJ-YsN!9tAI0y?Zffjy5_I0 zPqlTl-41Bp>pGdkZZ3SIi^2F)uRF(Q8SYN%WE&}PJ31iza9e$@H zF|DpS5E#zu%z@ca*zO+9w_+^NywzP?o?F>uouiBE@U5&__e7VszP*)gWRvTB_}v`e zA8M!7=xt0z2iw;(IHAtxY8=R}(=R}?7VL0U@a*!;OnhhVV3Ul`x3yW16`mT9~=Rz%xt{AoIYUnJ7DRhpTiDn^aVe-0~gid#*ka zJqP*G*HF3$rHgi$a*L4@gAiZ1a`OF?^99R}q8C~Gjn3sJ)J(qbMMK#=z~lE({H|St zSW9yCj?O~$j^Fa{&KxCd*}+tF%G2ZjTR#tCO{{KMyesK8He!;gT9#;=&opiK1W_N=g zqHbX15m3gd%{k!Xb^4N!TcN$$Wx3iOV&&9ZA-Of&6Mb}?%XM5|O>ipK3 z+u6@``nnylLfsBmy@lnCAID_n<_kM_;CF6zxPG;;6XNiO3Y0OE%R+_J`&_o6tVMsh zK1#S;@7g+)O^wTH&ylio@l#-_6Rq&>I-vd1;z z4t4>i^7`S>v?0oSW{u(u@tv5l$@)BC40@WSmc!6W?e#O-IqXITqx6=WC&|LIf!1{?2!tXc4rv6cqc);rmp zg0`@9!=RS2{E-dEik9Di)ny#P4j!lC8F)4jpfyfszJ7w19xLJMhHjt38X&)N?Rf07 zB)VpCbZnABrNqA=r7q_P7Qa6Nsw?+X6D9bC6NX)q#sUMZ=Z5T>0zRgMzRELz?UMUw z&3#iIfl$iW6Kgh&{AG6k(!&pQp1JygfiZEZ1IJIAhIgS$Em4%FKaHpDi$z(E&5KD) z&69GYLcHN>mfvr^4Iuj@K(Isn6%3AK=ZF|X>Z0-TT>V-n=FEtWt~qzH#e-F5$c(s~ zuPD86Kdl&Sz+b#gg%J>m&vouDc6jcMWh+Z*$v;b!;CaUz=y+?gl|97T{}PX1qqfms z9oQY;=wodw@U;uSWrDSm&cZvuxdyKZY1`sYcq!D@_!TyK)qit*>x{e2jInnTYoqz= z;#mpH8vLg?R>foU&J#K1hEKRN8M9rQamVPQB_x&cGAVQ7ap1sH0_`izrk3ZgI*U=4 zNln3ImnSo(MFJs9sI$AJG&{?`baALJUH4YvBI>hAh56>mi=`hHr zrjFA`RYDHrJEviMO@XmPY7{@6k(CuKK&LcngIohtOAaiIoC2dRl`0-a{NDAOk?cU- zJBh9}BU!UO4@mMFI`Kt3eV^$cETt<;vd4bF15y-AtEzY^`ujCUBHGU4&i>k}VjY-1#iIzY!5AHl>+ z^O<jB@Uq-Us;!a@^b;^fd z%<|zlfX`(vWX;LL(J{lN-laWPELah@Hn=7fvKD(`1GTDf`m2Fn(o4Y;9aMYBIsx}l zI2vP+&oFYo;~6DL!3s!0$5h(E=_z#!C&KdpDa2W`w2fyqitc^I0G+%XJj_39`h- zL0${_X$;=*zP4c$o5|kpx@8pGo9*qY9mRH!FRySz^?(=tsF-I>|6yCzK_#G@R&Hw~k&vUsRu(@?c zf_bDZOZXE8Q+O3G1Thwk2FAJPU7id!$yEt__J3wEV8p>J?ZD}6onUD);+f7oUxB5- zh;t5O>kK>3M^$*DX3P3vy|)+xT-FZjy>wkg?E`93tJCCqFBO<`SX!K;PjYnu>*?Yk zD!4dsWfiemF!}y>!zG@IqzYUbT3?W?YM`{Nnx&XRo@t z7qjWQG2gj{7qht;=f2CzEq4#VD)szN))LDElWPFkh_jmsNkG8jb(vO|vzSe_@A7VR zZ`}R)Zqx4a-4HjNh%Db@daKxH z7GROJAjl62iM0#D!(gnuPQlE+XDsDFG=D#dw#8B=wYwl&!bibT;y?HNI4qu&jHQ&qTvfW(W$FM_nIbGf=8^apd&PQ7OJ|lkI zA|NKXW{+jl$Fu*i@P#la1LB)4=G>?F>sD%B;t83Si{9n;eH4tjTi(CV2o)0$UuqeB zpI(AEi@U;|%`)_t_?EwZ-{Sh)SoT!3=l_1hqojDA()HFjwkI3w`eYnhOH>-nfSo3FrJDUG55X*N&&3`*<#sdq)N`l-ro-I&HeLJ2V%*CE`JpAhu=9i-Q`#{~E6E6OKc8&tE?S6KZ zZj#?Mpo~opn)5eXle(stv6h%RAG03^yy|lL0h^?-BE2A7s9{mb%dPSYfI*DDAwHn{6>ljA&C&Q-r|8MR5 z75SYq!OmoT!3q&R#HACo1>QQ_0wbS>(Sv zG3e9xzc}#87hgp2Zx?R(c+4^%2`7%fzFy!k$8E{W{8?_hd2ZG#b=RZ$%^o>6o2XpX z*UoTBQu!Y1wKd?@H#lEhSUfw+3zWN?mb|P8V1)5y{%?%~SIjL*s^IH7L651Gj^lJT zZkfZ&u-|j^dy9F`W6EIr2fFx!#eDcNRiQSSS8rBZnX*SBK-IA>Vr3+udL zoe};z)jCAtsjufqnZKIH?iS4zs1gc@8i6N z>YBLCe~rWM@4RtiCttp1vfkKPyAY;bCSoSxuREW8!ttkn|Gb*=*C2Iy4IoC*~Xxg*J9`#abp&>*1e(3clO^XZ=1Z#Ka>!< zun-2japTZ#|FMg8DtBZucs+c;)iV7bFvhr;Z&bZe z^H#UN_lNm#vU0P@zF_W6Rv|VEY|VCC)F#_}CieVxbMhAD?Ec;ymKV2-pEbPc^SWb| z&)f643tY=TY-7*u<>PbA!M@ z(`fJST$8OlY+}dF-Py{`oU@f5ZGUI3*{b}!4X1g; z``B=rzp*C#?+M8t^T*NDT%V7}ua6x!C(bo);IHoU_qM(;Pi<9|3oOT7jO{HRMsI&! z2p>0BrmAk67Hv*Q>K5S2d!#ZkL7~z zE#hFy?SIBO^Kgdpi%;ODHG!Mp6o2Kgz|GFU-;m}?(wA3kIg8~i_T4!g#c>q(?(O?C z{oDCxyRH99B!BC9V);+)w(w`+w;JE%WA~f48C{voLw{>ddXlN@)^pZ7L>F_@lib2g z{nmPi=w`l{&CT7&Z*Sb(4L|wU*ERp+{O*;hcHcZvw`3}h=!bu6y_x)CE5n!M{XyLv z-l6jdc+)%d(3{_(Gg`iWh0asmmp6;HZfkMnZ$C1-e_ut>e&|;(y3IM?SKc;{jhL&y zuXfrrkCDd#KKyP(0+E$S7!rkSMB~chnbY$;#l4?CL*awHjhGoht7}~_;j7=q|3$f*>uJgv5T}1=>*g~5;@I?0 zo&SqM|KG}_|C4fjRJggrynib2_rKp<_J2C|`(N5v`H#Qd^$!tvlJqCDpL{ywZ&&Ht+WFra$xYjmib@9W#i>hf{C1OKfBz$j{m=FO zPU)}fMcimL?{P-L<{RS3u~ovp66BDRQ?3%=sQuju|2y`DZ6U!p42qLj4sZFtS9@V00242z9H z`CtCW{@7jYLVIZh;lGDwqRk?yaGT8n=r*4A$nGl#yVLT}k~Tphdjh;mZa z)*Y<<%=_}lHHh}U7Vo!|d?{_P%{s(IYVZb->Y2r zxvnB}-L=?Gkux(|<}zQ;^@n^RoNI4x_`RAnIfy8&9?B5)P?lCal&k0rt=4smTGykM z@w%w{Y_wY9CTfWf^oK!O`2>ja34?JkL93*C$5Ct}%`35@PFaf8u+87~fV?0cScr4Z;Di#A`hancmUWT(;u_mg-5Euz#v`Q@% zm0AOvV4F6n)DaFYYL(U?Dy9g2kb3J{@K7-xvU-qEZNRXN_ISt%#=t~a z08u2i8xNTVw0f8h9(Kn?0k|kwtH*jpJ$4EgRpJ?9lopI9LLru=VOd%=JP6N0Jds|4 zhbr(4^>S$MDat)Xxu?jPr^uOH4^g>3njH>|z$?%TTF<#9F;5&5H;N)B6nyl3(G|oR%*Gk zUgXXOI08qtxVp0_cxZ7e7I7=p;(kuVeN2l-r-({ zEE|H?SvzdB7?~T4%nkSL5V>!c7XJ=DJ$7l6+}|T|f3KGN(dd3O3UtH+&RQPu7J0xI z;*kgNNH7WoqtME$+%#U-vMNYq)k-ZPr6M8aT2^ltS-nF`Xrf5yW-V)SMb>QB5tamKaIxb}`PJQJzK#UkR;spYONk-JXd z0j4l_M=b^vF`$U&7#3gDvX~AQ(}CAvBHpCsTPXA`6k5_Mvc!TXPF$;azgl!IwLJM0qF5J8#BSDV&qNP763c!}$oVyMpT`NvaHzDhpD6A>|j6 z?F-5FJ9m&=yKpVBbx9`)T=F^Csb$dukws3B7%UN}Fz&Q;pq5;=zvN9K< zuqz6?Ho|6Ngz0x-x*PS}sCUn}$URrcRuuF=K?Cg@Xy3!gc>w1DoClEv9`RgAa7qcoP)wLRbT9VH0eDr{EAg4;k3rv+x?(g+)uS$cOSi zl=r1UU)uBO<9vYg49>H(EG6xilJ>s6ocEKBhsegmWaA}nZ2c~4S-wzYxhn&eEHRQL z%gK`EWXW<|yc`$%6_K_joKJE-O*vw1B-X|-$S}DtmUNDTG{HC$$8T6G7xe&`KBz6X9lvXM*rd@L>}(OA`moK*2Lwz8xU) z?I1`}ew(EHwi8?k$&qi9Bj0X>&F~x?V@3*MMp_ADU@SZZhZx5xjN^1jJF93Xgb;@i z;?>t^9KEm5}I z-`PWF>w`J;fL;)dqtG}i1cpH@iNca7TpEQ-qi|^yE{)m_cR+F{iriV(OuMaG9!?i| zI8)1a4vBo{Fzki>jQ{VTz;{p}&Ve@oj#?g!6?rgDOT3Lpye%Zl$4qsR}Nwd{x!*^$6?+Ixid5-=bkmhu1SLXk&Z;Yrx1 zB{7uO3lR_(CgQ@xa#*S5dsy^6Ec#vt?9!4XB1syC!AOYZNm!m#3`?~w0QW#*ok6Uh^kgTOHzZU~5~?Tb8UIfs3Yn>FRm^~GutQ7EN|BsUExEWf7neS56nQ#;b3&L)2%kRB`6VrRSeS=}&z6Wh zOK5&*O9<>?K4difunbnfKF0qK2Z)V<*m%MqxDrxv2NjOCeh|8r#8O z7y=2Ai4YZ_cmaw(Pt2bu=Fi8%IEV+H#{bsqmoffdM3Z7% zQjANAiCrV0r^J*>oyhQf-Xen{yHIo7QL4SxMB`ER}V*e9jU+PFbXNadt z@l5isd^obSH-HvJ=_m08O}f7cS->ik1s8uoYUgTrA`%t{67MRxO{9wV#l+ zpD@FH!VLE*A^DV$V7QEHcmkf(@>z_?XR(lWKBJw_PQf89mr?XGicSWKOa?=8Z88ZD zPUdp3oeO07Bw0R5#Yrko5sE27F-5^C3QkdOigHtwo1)wl<)$b%g8?%bFjEHcO=$1{m! z)MvQvGhBC>3zrk|Km;C$f+;W^?t}%f2G&A4o}}ZcNIVb?DK|yADauVzZi;eKl$)a5 z6y;{{;0zv|*#nCpo}0mQe{#VCCN~b6IB0==Z~$I}<634lp0R@@-z>@Z=Y@F46%S40 zA%3hlBvNr$%K?(<0LgTq6qdsocvVX!$yQ0SRaV1;TFjI)Q_frm4{51#Wb{-ya}dni zAd;i11-5B<*As;Mv^K3;`*bw{%9iH ztmPPn|kStw`8fTk=hZ|@O#y9lEB+i3nyfXF*RTHa+;yvwL~ z_X?cUa>7mIgaP_OBgEw=aQO*x;GmZGW<}n+rsd!0=-=q455xK} ztgjqa!Uo2FUn2*-TDakp@?WEr!01 zp|8ioM8^N?Cpb9Cg;98(acjf4wT14`17^cqh(b*$)HDJ|Ar?1b@f(p0+h~{q(_ss2 zgCyY_Bt&yC!!`ucVKW^zqgXSFHCMuF#((n}4o0{z1!owy5scd?NLIf|R=-6~yhTpD zg(Yuc$x+SlvV#Wb$uQ#F!nuWW3+M0B!Mk+uE(*Vk!tZv#F4zYLNLCa(jbf)K;1uKk zEFGVv<6$R~a3P*Z#SQ+7u?MRh61Km6ljfQCX0hK z&`JZX&9D`sajRA15Ht=$V`zczUSq-$CLRaq$b?hIgi`@)VLi!=LW3xDCX;cWjUho8 zvXWtqM?SQAq!$JH@kl-6|1B&!*2EM^Huqs^AC{g*^V4X4Hk8mru!- zGE9XzFb|f%GL~;FJ&vVsS22^;z*BHYOP7drX-KS8o?doljIeK;UFx=D_A z?FfMbbb)SKdP+rl${{WEoPbkshN+d%yhmtGoe(*75;7W2F&a+eiPL!EbTe$l1DEi? zWejn}5O;`zXHoF%5FExcrUG2EhXX1MQ{lsMTvQ2LU>g?TvbS;BDJGs%Ogv|B{aIY! zWyFF2m;>`59_YdY?_{xd9XI+eNwE@FeVG{J&$*4+|&|3*-2Kf?X7R z2gTk&v3L66DLgcSheqLLIDsb);)yy)=z0j(TL8;y5S)NhBrn(dxZa1$`*3+bA?+um|9(*9-|INH z<=mdtG=kMMidD3PRn%0*1(NSKB;SCr*Fi&n7zp#>P6{SaFo_(nAqQ+>5L^jUVFql3 z%?vwoWsqEX-$&$qKgjv}oDXq6#Q6~CL!5uW`3IbTz`5xIE}Y@Q8EXYBeIHBT&xF}< z2i!$Pt`Bj2i0eaKAL9BD*FWI;2VDPv>mP9a1FnC-^)pqpR|ALPIg-1KMT)2u>5wm9EB0uG zkt)!h^DCTBLcSTU;G5x!8F-bCk}DcHXy!r}JV6CM%?0v>EP##!=r}Ne^CZZZu0XzY zt;!U&DjWJif2~$ie>L^L>niHI2CWhtL?vKILJ=&1r{IuQk8=K~^_=<%)c7I02`$@@^L8-3n2_ z8wI=xh4+M3OV5j1iVGug-8vi2FL93RBd>C9%lT!_2~p&A&T+Z1Pn7W#Aqpf!#603K zuW*}qWjn>I+Zn#wx$x!1`uy+2MBv0c@L&jUKErt3R?O?RQb;mpl8ie8c@q-M8xXR2 z7umdvVYZ85R@%x-B?~v1rQBqebFat*^9mEpLFR*l%m)W&;8pGsletGs)lyIP*OUD} zj~4m)Mo2x=&#CzH6I?jS%_9vQqJcvzVJIww#aezz*8UO;8qv5Bg&U(_jFuKUXrY5P zZyu+8VFFCzX&QywQMf%FX0kj_uslz(JY&Fd4CplQbnOXa8ULMeEGiu=DqT#ibl6LW zBg4!C=NR{BdJav`VZk{p_{dk}BO`2s9n23{I*O$iP~ZXzT%g?o2lc#0y}8{%^yVbRStYOaMTit>q2o|CKhI5VP+!StYsS>+lI%Uqv7Xh z_&Fx3=a{H=V!%!e_)&<+kHTO++^MC2kQNZqf=w_Uros%?{{k#3z@q0}c}42ZD^WCm z5zSvDxn3l>ioJLP>cczTLEh<}fmo1-1^HDX`85zv<>RS5I?SWPyiAy_W&4oG_F>Lr zIFE%Wl7}MC;*n?ZNFwDDvswQWi#RCZ?$)2X+dwuI2%8G*U?D8w+dtzrD1%|x!!Yb+ z=41RXWBe~;LR!Z4hnY7XW?o306_t8TtF&Ews^870dV4_|x zE{KIFxG{?cJ88HN4nZcY)Nso{QXIPr%;a3#cJ;U%yMGJ!>evEL*LvNl9m zXb%I{V89wCur+uhEJTzk4A+F^(%=r*22a8%NP+M!8sa>{hXx2u#3q;sYhVNHhFG#L zhZ%1dEP@qUMfZw|?uWQMni(^C1k!N;3iGvFC8B6zsaD^MlW_GtEK7sEK>W)H2t&vuRP6YDHonuSYOon+A&WU9ucKfuCgIe)g#ob!?L@LSL7x1K3`JxZ@X z!9F7vqK6zIZ9L=xLm-_$6bYlv-5;sDO!kbz1&l^#=mN=Mwi?M&rjeygBTFk_6(q-( zlH*HzU@zagxlM77f{Ybs#>z@NzWO<6Sxf!3)L+ZAw3caUtp#?%0XV2-J=4#6rl0kk zujkyfWR@?u*BHGt{2UFN7+fX>m+1G>PQZf+crf8IoWMgic*s`Ej|ugU3H6Vo;YLWiKQ__u9%8*GRm%&VA}@4nDMX<{ z6e=u$dmt7SVo~8Gcv;Kd0Fk{xka=w{^V(i4-`fMn;6*J(ej-Kw5SJI>@}e483u(WI z_8(_jc{~#ZFv#>{EZQR|pdqf>gR5SMMG@A-7p~Kx4IPKTFjx;8=m<;pV#(fYn9FBG zEZ&U8n&c!p$%jZif}H3Lb_{5Jk75=vH!RE4j3F z5>8{75yJvt6pVqHFdJGQzEk&bz$i#%6r{4+r?$eAun*$eR9u^8Cz9qs%-l&D54aho zz{_xg(3KFnGC~$i=t2k;At)pSg_~eJBsmL7&b`#%OZ~klycdN{MJ^CAt)mRui}YU@x-fW_$nH{It4 z*J61c4b{<5T{_H!v{OerbywkaEw5p~YZ&m$cz$Iyz3Qj}z-oEbGLwPCDqMgSW$YFA@o3VH_SB!$TMGz(G7v z$F1o&x29KU&x`haxHYZf*0ct;z&3784{>X1I?Mq{(@xTqUZ9z zpx}mU+}DU!sobxmc59UuCn}A_I&A>52yf)BVdHjw@8kCYu5&+>wo$7P7TypR-Vj#% z5N=P_RdZKxkh=g@{pez?*ioX`QKF*jOkh8pw?5+XYWRa>18eSVj&l^M)~y(Y7ob z^6)K78J9~LmrDoWARK|C5Ji@v$edm5LEQ~cz>^S5=3vR3>umG3VY@fkZcDb?Vwo+L z*#^KM7zv|c0!)G!V2c5^J7EDVh2@NYTU=#}t88(xEiSh0fxYky9D#IbONX{}IF}CR zI>Cj|3;IB2wz);{S20LIM9Dt+nJe-0v?CP~;{NHNN zfh*g4-Ju`!hhZ=h#=}II3A5oYxEq$kO4f=itQC`-GeO`tKOX zK{m{VRj`JwrZjXr4c(4qw`1Au=iw#ZllbwT#2;qC9Ec)LDDsWVY-pa~b{vbHvDlgG z&RlmMfP-)rUej_1p11=~+;I_(YguSAiYyG^AQ`5@Vpz%^)ll}RM!;OS9oE2FI0(nv0Owb7oor+6j+4fi%@(KAzDO;T*)O@a>*6LTrtcQg4Gw>>VY8Nv8{aiVqpdSVOM&Wrj*)Cv{trH|9 z%L&Qy7#Islp5-LZa$LV0*DoK3SJ;H>#3tN@uoHH(2^SCDhllQqf-x``Zig+f4bsnj z^y6>C`1dFF{-Ny7CAR)Wumn=jpMw5VaE9HwaqQMjfOK#_9o&BzPOwQgkWIS5upCyx z^Y9Xzbx~ji3ami!6)3)f5Un6YEAaFRJiTH74zh{Yj`1JpzyV1WNKys%!&B_uHL!cv z6DGpVuol+CJ~+TKOtJ(qYJxVwc!=UbC>~6%1d}VlgYXQSbcfiaJIv#G0gvZ4 zQxL;eS;zk>Vznv<=0RM$3fG4CvRl^(2~7y02`Pld@FeVG7cUmB#=_Mk)oPMzH5RVM z!qwDYP5sq$u$m4+y?J@(3sE!_MMKMBCA)r|*z~)Q@xKPwufg?eGGR7644dFJb^!~! zfl(w3MZz}26xa=W;1xKjCEQ&k+yi1^I2MLC!e)2|j%bM>$s)+Hhzyv;vTeiiO~~iD zum-qk^O7$0qA7rk4j`ig!*G8j#O;B&J&60ZlEaeFJTCWTj%8lu#LC>0!qn`7`= z7hXGocjz>PPFHijn)6V?5lT4LbYN5$O5>$4yu@oO;kA`S5XJ}}CZU*V_BhY7W%wXl zhU?h#JkI$Qw58x23fecYay7yUIK_h0&w_M{g=Uh4W|{?saNI^XoKV~e#hr1lGw!{^ zn|a=sX_|IjX!ovqX4wX2Q|jGKJ;NBY;YB7PPu%K>TNn2*8TB&Rlrh;+$4z zJh2{6tS3>|lc@G>OhWclu&0B0bTDreo+rj5#CVjO41aDi0*SQ)v37*GbOA2CErOUw zac>aHy#a1^vQolHWm-6RJg zxT_kHe0Pz2cRP|Kw01Wg-c5(@K`gZ^Sz_t%9y&B&p#cl;4Pz;dWF@p=CA1}%TF9j~ za*6VbDZdzxEXF`DJnV&sy>`PwcoB}1W2TKH*(MH}VJpezPO^ExJ+O#{g$lk@SY}7^ zIgos0wI5l%oMc;0vKeW}NJICPkc?$a+gR?8<@b9qO?#1?7!rUXfwhFTo@6W_8TT-2 z;?W>HY6=?T;3CsvBGck#vXdCCB1Wqw;WSxF#Skj4E+R=wNYY%AbUW;Y{UmEK$yy4} zz!8!*mZXh?v=c@<;V2M}0^t}Mj-lZ*@G8k1Mlwe-{x_h>1~l1#<{QvFK7}3p=`aiC zz$#b+n_vsHz)pA`USdZ-Ir0cO@(2bzf&q_=!z;W4bmAT0LcWzW@~xy<%QFi_o^gdf z(2q|XDE6W=tO@zgyh^2lJf}vTcRAnk|S7h1O<+u zz|nFx+*HC=Xo3Ck6hzUZD0*}X&cN%u&9Gr(4k5A-BFhPQ5>n1WISZb!;E8q=ZAZ~| z2k3|)ZWv-AYbCjDptx1E{K&16)#tOJ2ssFXQ5u zy`e8;Dt(!$^yLaz#p{#Jygo^RyWnnK#|-m2<{X@b*YMyqUdITpWmsGqeP9R-gYhsC z=ECie`i;~-n!)%#N{o&c!4h5&;i5KN)D{SX;YPR#ro&7~#WpIo6~j_oyd4+sfFy&Z z8W+3bVt0sz?O52J1d}0#v|~s+9%;uT?Rc~uk9L?E_&D0gK`-owgYXQ*lH*u%+!?w+ zUuc9he4K`l$3lkLampX3{P9tE9$tmlc~ho&Q)UPKpg)X+Ec2b4VG2a?P82tFlAWDo z=O`Wijt+k}1~0-XI0Lyp#`Q5f=m7m;AdG@BkOs$Sa10B_uyD)*>3xjs9wWKOXm5=6 z#%ADEUSx&wA}f+4#E|__jQ{;c4gz=yi3Md?@G2I(iUqZFSWAbs3!y74fO}vmEQd9) zmhamrScigjBxfDTS?2=XAd1$ZXk8oZfIYAm;;}kB_F6PADK|3yUrXR12@>Pii1BNc zuo~9G2G|1IAeOv_C9g3|Uz>t-Tu;Xho_y8yh8WUdHDnq?X32UyYsRxxr9B5mJJbAr(j!QiIeY^+*HK zh%_Uuhz03Hx{)5F*UqH&^>c6v8A67UG2|jLj$A<|k!fTW%LUPh9pZpEBF=~l;)WOy zPsAJXMT|%Q5`?ToB9JH~28l)DO#CMSNk&qU3?vK5LGqA%q`*$SRD_fuWk>~5g<$DR z-N+uK7O6)XkVd2#X+kiO=k+B>ErN3O6$r}J=OY&66mkxkCjRx~99%&r zksf3Sxrp>4{m3vfhIAs`cIr4C9jB4woFBKI)9G;M1& delta 60319 zcmbq+dq7mx_WwB}4g(B$K!gzx2Sh|d9l2_wkqwB7X|S^1dE%(~v|}Xa7_=fN#K8!|Xp*S$Gr6&~QFu=Wnea<`edZAs99@7h5rmK7$*| zZ>!cLSa@eOgD~1Oj5qG*Mup>Vd3AT~E3;L6EmO`^^EJj+|3 zH}Vz1jg>hjMu;xwj5qg0m8bKKzdOcf^K+0sN0lB_PKj&-5d?uRlkjNH$9CvYgwu7^ z#Rx-~GFM#=BXl;_x$}8TZ74#Wiz9VN`@#qo4Hn)58Xg;n*vf89rs7O9GQyu&&M0T# z${FFL(c|_Y(+^Cg`2V5gN>>tZ_Ud#$v{mChmTckcK@dS0SH_3}HeXoeWiN_K$uJj# zn3~EPm5i_^O{Wiqgc^a}_`Hn~ED#YR%-T_Coi+l@bX|VLzM{m+j^^|!h9)PY4+XEf zISdU#dRfzCMtF2b4d4-gTL8Dr8HxOlms$A5h#?5EW%>N#{h->?S+U9A$*=U3Df4 zA3c|$K}Z7j{av9}S(LSzy_+WAz<+Lp&dQ>oxSrDgm6=99OT7SuOiX7{tU8Jb+_;bT_(mdL8!}R4xzoMG#(jrO{RAu5&3Z%QCc|L>e1i*~qWZu<+F( z3<5_$rHIl>;=PP6F}W%y~aoCt2 z@WD`j3ty4~k)?1A@hZe^ogvuHTtlJ?HZ2vkP30Oos$jjkFnq5rT!T>sW744KX{bhHFQ$J8Z#Ih-z%^v5 zUID$Y0l{1!lX`#ZWu#t4>P@8fel?v>0TVUOd=nL-(6P}iQK67jNseCu*jx(w zc`UD=cL-UcUnS?lj5b+3DM(0}cOD5hH{|n|pASXg%Io1EDD`N?8LS@n2vdcx>9%&% znP9yO8Zr9o^m@Yx(?MU#I)6&U9nEX^r+Hi~S)_00R~8F+u*|yz9x6ACFiiw4Dv6mL zsh1Jhm{wp~=beJ@asOI!LZ9ldh8+p^dFPQ3x7K1*wTV6fj?WkiWw69#nSEywHh^kfDRXmiY)D zNtD_>qDAfhiIBty!?auX)w^}zvfkZV{Hp_Hbz5sWcy{{cExrt-o456R@Y*P9!JYM( zo=CPwB>EfJ1BN~GG+=lOQ5v`q!l4b^GQTenax=nc8=G3@?tuoCwNdJ-lEXr~YA_sn z>fA2uT;`5fH9Vt_Hc;1Bky`VH7S_<#qRuhgNtKeI_67ssBTQ(q`$b!Iv4aO_lB&y1 z`%Q0Nm@w8F;SR<<6IIkb7&!GATea-cLhkG^Gzt`)m)T3gcSuj7sL#ZB7yJ$a@ z8~hbesPnN^;iLKj*z&bX+dI18{0?L}m*H;~!+e%E%wL1PRKItHz!jd&(`ilZ{3`lROj| zYl{r785?Z9AwnaJRd6CR=EGB+&j=r{rd6h{F{P$7xlUBaIIMBI7xx4;czgzra_vbHgVYa66_aIF7xz&P^0J}Z7g}CZ4}#+yn-*9sqd2_=H<4bwwqn*+>b#K&ZJek$KikS zpX%I?;QtlCM;H}b_-_2Y#42FI_g_iDCJw1k+tT*NGKj%~Ii6)dohSId%In;E<1z@N z1Z{*MbT6gip~V^SU$RG3@e9FVrLQ~5U2J&#-Fvx3Oe5E$m3=WJ9|&?qOqHj?=9*e&(V> z*jghw*3Ouc1YjjhJ_WsGtaMkoFbM1DI7UY}$+!|OCVE2A`xZ5y+T#reyz0|QTr_NW!pF7rxO&R9v zI~E{YMC9|ULIXw^EvprkvzAa_wIeDg>%l+U z->Y(=uaL&rn6yLpMEY?ZRRTs}yO8dN?ppH#hBq%DlMEJHF{)TxauD*kZ^~%Nj2E%^miJYyC|8cW9?UoQ+lgT7t9sAsPrRpE8W4y*&)z2>X$ulA?fWC zGUZm@fbut#oWjsIW?ctkr7I1-lfs<`sh*PcNFB6}l(bKq7PLUa2QB!(^<{w8z45}G zZ6=M+k|rKA+^LC&40pDftcleIXkrXWjEfj9^SO8d%P(HA91V6Ja}+uf&@sgc!gtrk z<1ec_E+hP-Gg%nd%eEG6vUUM&h|Vu4Rb7h$)-Iq8(dPxZA+&HtsR(~W*QD-62t>0B zxpyHqm1XM}mPT0O6^$- z!#)M;RUq&*h&JBU{yNr@GYQF>ttsSYLP5b>11kL-QK@SUl|Fx1Z6&-hjiQy%(YX&w zVT1{>l`5Mji~Qd)WJ`yBnx75iOovoW`xJ7!L&^k2fN=o^zAcQExuI$6-9-obXB>iI;|dTZn&{kRur-{F}3eg;Ld!ZX{%1(#*oh6*g7iLF}}$+V;mQAcVP}8 z|4h8kn2p?bm)6XeNLt54&74jouVZFG@nH3sO{G=mla}PJK@O1rzuHOe8kH6=O3NNo z*MhV@Z%01qm}q-@ozs2PYQ?(m?sb)J2G(KMx;nQJgq-U$`RuyRGLzpWu}7?as}^0BeQlwHX$>O$d+mDN_&Sa|C~h6bV4^2!=JHWKW- z*IQXzR>SD~{s)U(h83T?b*rXjWN4B}|5d)T)~^JmNr_`GMAy5^YIIl;Pv>`g6$LmO zeRsq7i9Zd}5IU_xWd-9pNLlEx4pJ22){$FDakh;w*ZCT#{ADx<8tCPh>%|6I{W9&o zR6_V0AR(nuzJ!}!1`VTFjV>+#OKFtDA{L6ivw{DF29X=3N<;&1Kx^K@N~3IFO^zlT zZ6l*A(QEJKhbT?<8P(2R7sh7o>_E<^R3FJ?8i)tTUe6jW0E z7KXfx+6jYRhCqb@FE`?^5er6RTB&0T? z!eL(4|*hcAl}bqop0+O-R`!raZKitV&C?T?PO_`1cYcrpOOr${1o@HbMt< zy6Kv=n4v*9C#IT^iY;Yv@3s^v2*SxFbUmXJ2IRAVoLx){ZM{@l+VQw!kt5qGQ!_8Y z{ACFv{Cx?BJR!(aY6GYgpgl{{0D|qqLLNu~dUgpVRlh_T3mcbUq+fCk(5p-CoFaIj zt`)ux_8V6ZT5yQ&P}eJ*JRV9NQYZN=0!QBJ8fTL`fKJ~lz^rsbYyuX4C)Cp2WQC*V zeQoQKY~Y}^YbCO8-%={5=;-ZG{3yB>K zG7EI$Hn5n5lvy!PWO+Vs*c*xvh22|5cotLsN_S2Y6d{o~(~UNz7T8`$M*s$>v;}=0>Ikvl& zV!I24ez90Ch6?5!3N3`d3&m|}y+4LAw@6OG_O-C9Go!!OHlHs*?F%48Sq^kTNMf2w zE1$Q5mKC&Y9O;P>Slvb^+sK)k3-3@1DO@>QAmb~9CAOqO6ey)9Re~#Dru#6S5tgtW zNdJt$R+!SE5bPX(E$Vxh7HHp)Zk0S0hvAMp2I(&3UmKN5QwPbO3WmBNJr5LbijFERO!$P1bVgR>HTvfh^u5fXwysBI$E*8Wm zINen+%Tg>;jG2A0zlpJ)zF0&Dika?3N80x>%idKGZ@nV+5xE zW$yD>IF$#M4Zz=ko_S>aT=;mQQe(+iC=Pl9E-vVsRINcSlJS!XeAXg!_m8%kWU1SlW2M_!vwF7oOS2HtEVO+BcrTSS zuj%h4&5n?!dI>=%?$=7)g-)m1LB@8`eXqOQ($b??`rfplHB~1eD8(Z#3WWRh4u|Ey z)*Kt1!GFIj0dm`&Qg;VV8F0#MwHUg-T&6e@#F`nMu>}0r1?U+@a#7EUkwT>*`xw*o z#F>c`Q|~iS-)#OUXdboIqTCJ3lud?Fdg^xHZ4PQ%M#WKy8A}S*7>px06DIFB$Ir-gY!FKLjb4$TIoV?uue73Ojw5YU&h#k zjQIst7)eYXJeZVIlsPCIL1;Cl)$>yCvb^`gLh>R~W_TfB5D}N4=CKk#tL{6AfMoXt_ zVPl2Ib@Gu|EOrsK!eW9i&hO=xlP$7(%KC0dBNk^e&~O>GWKiE!oAg=ZTn@oFLOe+1 z_F{s)SL%@KL`cGmET8bA1bIP(L<1+HG%j-+|lRsr;EE(F*&}U*Zg!Vx2t3D<= z;$iSwoDrzaMz@i=&d*E9mVSBuzF32Hs#*3HWYTGAI^T2~7PA5;r1+Z*R&;dtvbbTQ za?w2F#%J>$(D5uw=dXi8wrLbxjz<{EHu6PGzKJbR zNYqOx!k_#Y8+{lukqbVIWIx8yW;D+EFd{LnKHiRwz-&k>EKGVt|0IYb^$+N?&Os~B zEu&N80NDtvDr%HvxCy{ivJ z2czd(V{eHOa*Twt#E||E>1B2b9#RIqvtZ}!a=O@jYLQ|D%Y0V2<&#|RE&8AN3kQRJ zd<oY`XX>sk|-Yg+y_WMx$`mv~R+9tLx?Rpw9&h|F=-CTFQT0wGOD7`8i23x{DQ3uY8k)9DkqB$w~LOg9*%N@+e__q}TW}|TM+T(&`}{QUH*Li=(B8ga zeQu0ju8JSFdcptPv}jq)?AEYRj8K#$Nm#K)0j>ynHMgzY-QLN~((3ny^7_4`F*iEq z^~KU2jSg+Ob_LEotiYM=ViGqn?uogJIcrHnBi3dZA%0Pr+x$8sgfA*-xay_nD?Bdh z!1P{h7nhFZtX+$nCVSk^q9=7lDwdh`6QQ}eSjx*4*F$4bO#LASfvg{xVXHrcdCwu~ zZc0@7XRan|_Gq28)Utdm=0sxJ@*{2SbTS@=6+f8_T`%-~(>1|Ep$HzhW->IY{DIfA z`CVv(T`N4QeV^cB^XvJjIITQKf{m6iz6MoB5N^&Qd4uw7R1hY4MA#VIb;|+11_29Lm4i+7Q%qHKmq~-lzd4h3Z8{II@JCS$g7DO= z%p|%n5rYx_#!Py-EeQv4+F+c&Mq}OJZGOFgUPC&E3<$!@v*M6}36E`0z2nd%k1K6> zHi}~rNY>yKa7;h%lwjR}<)dXpMTT_o#p4=hIy416XCc)YyM8lx*(LIVvu0x9*HJiv z@X#!Hs7Rq}hWeEZ4MK0gUKX)+m<49r+!jm#o?>*N&vMz~`pG#Uo?9uepTPY<96|VM z<|LzqAB`A-aBAjbh)qBYLHKm$XvAh9h9DfCISjEmh#?5?%^ZZ-V#E-HcV|9?*h<6@ zgul(SnGs!!D1xwiW>3U6Aci1R%uGkji5P;gWhULv*n=2?KxQT&R*e{fuy$rU#10^a zAiOY>9z{5e7=o~LW-wyM5JM2=&up4pQ`y@%*kqilGbI(}*!ZDn{-KBLXnqcjzJEbI zTF79MRY-0a{y(U;q*9UP^{(KxVJm~H5as4uNnIm|#pu0+-207HR`Oc-J?ADmI+ zY^hL}Q|?caHZ<>1G;_h`|1vWbgxuk{@}{Zs_rB=-of?gH2B{gEl32PTlrLQoS#GWf zKFnI`-RR-Yyn^%MV#D-j$jzat7WqEgP$=@yL+CbhmFcuRR~R{0Iy5c~J#@b&7;EQJ zY@c=5prFt>tDr5|E7LwrDo18&hR!1wM&@Xo^Y*2UdY=v5gj58fVH#w(dTwHpXu#JB|v1YzGaGIn$? zP178*c65$r=v?9%ZPL6qhiJy+Xd>s5L1Rps<#R|0VrS-%17o^t^5&4sV{&ZU;H1{q z*4Ow}KQ4wa7T)+G?vcI72sKl2pA_Gw7n67mM{UU~Q)pi`i>5XUDG0*rQ>hR7JhXE( zAPB-XK%}EZMxJGNk0`EUtRdEl5pkf9GbNv&^Fb&AwUcvf(r39uvIqnagvBDse2}yQ zf*?GPc9pVGBd``w1Yx%y+7|mEaykyhjaXKIE(a{f;i@Xq4+f zMi6FB!Jg|;>ZMC}P|3_k<7_*;I#bhR3*UxeM@v(VRyYwzJM2&lc|*k^uO04L8u=AX z&JpZbx-7@Lyu!2I&s?RG&#E9r-e{cnHS+sdHQuAZJ8P{|;T3r6kbkn5PF;cqm*UP> z>1S{N#!ON3tz*FJ?n<|jw=wkr%mi^p{vj4eefT!GV?^)fdW8qQWcc_5TX!#AxBLv$ z+j=YUHx+RUpMW9~O6gfhgHnWej^qYf0S8)UEwJiBJ7SPGL%!y{^t!gG6y9SgJ#P_W zU5<&y{m-gXi;!AWT8q5w6gsU)!yW2+H$%Q3KY-m&x;>UeWz){Dn{vC+UE{Rt ziw!kSL-?~?jWe5{u^-pc_Dg29$;pu>CoR8_Yl22_%Q1+6-x;Oy@RQF^Lpw}EJJ4}9 z1dhBM?~1sVyWymD$YZjMxU-I4GJv@shQ)^yj!A@)g-m%eQ7fg8HBTml6@hROZD64z zsd}=jb`J{PQ%dTe%+MVFokUnInvK7c0&B8X;+T|JjoNzP)R&U&)(p+e-^np+FF8>= zF;V_ZpO_yLy&9`{tD9GXteKc1V^vQ~wMop>KnQR?+)vVN`2g{7OT+eb2XQdiltko;*zulpQY*fZ-2FRL8e}wDi*`&ti%6r~} z?*UnT|18?(Op=<(36lcpwop18J`T5~n#)p>ef{qV zEz}{f4Z&SB$uEj(#^KZ!GTy=Ax}pTz|Hk3m-&0yBD3C+BwWyYbH?Jw_`cy|*g@-?N zyO-nUCL9y>3UA(&tvg*(m0&w=(%#R6hd}jo`8tyXU3!z)r$mQ7@5}hYO|pGTx?z?I zcatA?_)Ss|+yOq^F*nKWDVYyGaI>D$#oAcC%j(CCyQ#zelg>18s8mkWO%J+5XW+se zL3hkpP0yCal4qw5v2B_TV~c~ni@kjtmS8n43+Y*_(VbSqHm!!QIkDa?tvQ}|<(TO0 zcpS{0iW#tQ-$V(X%@+f=cr`tJnDk7eo5NkvCOiyr75H$Dr_1Sd>J^D}I*<6VEycka zr;VS3%yU-z-jWa(IhRc}UjRE7mdH;t;5u%pDB7Jjlns_vOdbYXudqo4qmIX7Q~*I3 zWTmFqAmXgLK?k&K{@fm%4{Q(PDLxml7MShuN0@C5#du}mcLRVROeY^t>#Q4egN{y* z-XOnBOKp1?TpnJ1O*H}QLwZc_V2c%z(r?IjSUAHzxK-IavxY@b<40NPBpJgi?)SH8 zrYB~8yoQ;MWdYetERfv$b7kp zc&0~(tpxT;5&I1Jae9*NDB=jh!6$J$ z9sLrEaIKQgETua<&pjzIfX#66R40Q8gLK6eu9eSAqI-9DKyd=J6`Ff3s)is$Jedav zAPM&S>aX-mOHKLZUrF>cX_}5rr2jK9X>FU#6$>hG{ELwY7mGDES1qVAS9pcErh0b? z{>Ltupcpn8Fc_ zl}*mR6$`D;K_Q>>;@@Q;+tgRjHFJ<_r!Ap??v+ZjLDt89e*!wCV-na_iyc=rRZ6?yyFE)y5r6YrN%*w1)WlEQSq6rL8PPD^lRBC2iT4@sULy-;zS8O2NAD$t65v4!v&MDWc~86tfEP?&pEbCnZw>($ zz7dY4tfic((RITKPl|*U&+fPz`nCHd7vgIs+?>4EJ<=oFb z$->zQnrqj|rrBu;KV8?EaOHG#FgS|9@PwJcI$+j&g@)_o-0b9}_pifz3fbeRATTis zazgbqR!J#u4`qZ}(($?DxpiO~L1_Ef)yW6lgWwRF;r)3;cfId*kLxPTMsNK03VGM* z1msb;on1IO5utA9MdZHt5-~k*3G?97Bi5cHi=OXk`28oH$v!!Iw7DXCEOoKI{fYj) z_7ge$e8vO+Kq7o`FFSg$nE0NU==sSwTxX)M<j!vLi5}lHti@4~wU{E2 z`{s1ANz)8^Adb$6r5K$bdxeLudj;VqdA35A17qR-X6y|`F!ISbN0ZN+5Hlebfmi`V zY{Y_Bqq_j!P$=MxH5ZB**96my!L`ZgHe}1a*Pk1b+y^pz-;90_Z1Ti;|Wl zeUp^AnQ@8^mEo{dz)Y@qZuFGju4#={tSZ?VukiCVD}<%{iOyI;9!x_gn=rj(Cq1)8 zF)Vpr;erp_qVo#hh}c)J!7BN27~q`p;V{5CCgOa1ZQrH2>8w_&BZ-^8HzgO0BM3s_ z7RXT4#%W&R zaUZr3*yBX(r-3cYLo(Q+A&21(gu=LA3}Wc?*eeuVrA~logK<1VwBu>kVkG2V^;vus zaz6!G#BB|mUxeBr2o2-BLh)63n4+gEM`P3(jgzT#2vgs6G2!xj&c?+aux}0iu`;%*(kBlc4}I%D5bwQlKu;m zA2hs-F7h(vWm5nz7QhjNVFA3X4dBH_UR&6{R|#O$rZl=Gev3t%668k^CXb_%Sq)ya zeqPu{a%tgcO|M2`SrlhW1wL$$ogJ;Nlhk5{#zyy5xGI}K4M7MU7i)yH@t{crCt(DO z7_@u}qwYmtqm**924 zK@e^}BBw})x8<5pM&&{&Llf@G5Zy*Gff|DF`6GrQs+zRKpSZu{&)|MUIz*@R#!y(8 zQjjZMM=mT&k2-p}&Q&*nE(N38)_H}x%fz@mIryE+;^r3_vb?Wuo%sFRB(i3CoNkF2 zxipFFS)Mxl%p@b`cuM9cE-U4(SPE<^ag4f6E`{Z>~(@ihcrw|}575Il;n8$T#zei%QR$u`fvY>H#*zRjzk?h4a7CL;GG~ zQWJf?kt+86Mk9ZnWrP(^dWFxCdZR7um(wdGeXkxbI8&38E?<=uLU^Xgp%TuGi#1O4 zc+M-F{S{6ga?_*cn_v_XgxV3<_zdPN5v^QD&a6(9N9dcYjiUnDTH<5t_g^KpobLWU zwi3bCOch%PF49FMu#hjYu>GPuW|0|d4CycXIhp~E@|tlpoN^>H^v;@uti#|9LFh9A zhYIkGAei72mp0bdUaj>Cg;yDOq}#lcK5qnthPNoa)#(+2uM+J``DwrX;1xoC-DLC% z2~9YufD@=jtTr`)6oPPZxID0sl9%3MFOp7cduE*ckt?FUtL_zs2I1}DAx2Kj)(a2> zp=da6K;gUam3{WLeOPVLE5UrxE9Ah-*vsKsgS60 z-e36gg3wGkC*Ao@!xN=PtD0jLQ9dP9i6lj(i_AK_!}ykn zMP*v7+#NhgEJbDNtOfT-^Hj(mb+}wk9-t$7}3LG!2=NUB_b`$U$Epn z|DUBTE|^eFI*Ss{iX}t|)PV`ZD08_SH?A&=K%F3aZy5bUeu`ITxOrYJ^`FkG6+!8( z|7X^)?1PsB)CC*QJYhu{d;fPg7|7Z$Q&PtN zQ?{=+54WYEK56UwVq>G4$AYFm_BLXY@uF#O@G(%7ETm?MxZ9Dc#2knfAgw@5E90Hm z@S!hNx}Zac;%l7rAc=3##FYPW%(kU^VL9AJ%oWRF3AwviLUV;(pNI_7fKCrrmFnmP zY>8YH;>(X1meUn=I&em1(jmVN>(~9j^sY;3MstNEwoX_QsC3i2;BwANEXEp^lhmy- z+>4hg!EvSEZy-ar=Gux-p(3%Nv5>}>AXXyAZq#Fe(Vup$o(e`WO_z|m7O87RTmdm9 z?OZ+FL7Z@-=S8Vt=-N{IfZU%dx!XeN4+ms_uYOa4{Iq!8T2Y^*eIoq;Va3q5qe7g^AvC_l@<9JJRFCF&?{p;Sp#&Ic6B4%Y0@0q?ug#NGH8@RV^gxkfbQ18KxkxbfEEsHYY^%V96lKuJ+o2-SjLk4qwp@m+d z{=0hI1g1I|WxNU<^a@{oM>UWx+noAN)<60r-<|q*5&B2*-Ukh7b)0S#&`syo4BbJb zhM*1V?JIYbXbI$kjSbBUj%|<&j%xU01>Yu*y^++cb79L?tk`F@g@xqq3b4FWKTkh;GVYmN9c64Gb4(O8Jj zLd;EY0N5gT0n7>DEBn-N-tOHQ(y}jC4uM~y?{r}&<`?OI?62~mP3@pp==wFue={xJ zH>p8CeoT>Rxd(RO5!~do>k9z&Y4Wx=CBtSTHoyA_M5}43i&aZ z!ROWMOgM5DG6F~2?E0a8(ot|ZN>3VP>5{(eEa0pw1_>uNw-}5C^c80XN1ku6I=Zpo8{5m1fT;_i zro#uZ!Q5#@B2AMku>s^yD0jlR$=Rf#MjEdJ8K8OTo5CJ|pEwXH`ZCB+kGG2Hdl7bbZ#@26hC8wH9GqO+ zW4D?2$|o-u6Fh=R=-JBd{b>=SlbdkTiN5ntjXqON`tI}!zki7XEr=ZzW50aa2E(m1 zbD*hLka`ZO=fu>1eQByle+FQj`O?x)mHp(GbnI6O`zWBWI>eMT*OzHz*56{s zD3HGdU^@e_H;a@NM$3_^FuDdYC2hr*hGvv!2T*=Gfb!&KlphPAJUW2#urE1Ed9=dw z0|AtK1yJtRjB@7y%83D#W4|Ob|7K7Lqjdn`+h^3G`}GVJvr^$7k*WyeB4SD!e+G{{ z{4Lg|uzV8fiUu4FpnR|yWmf>@y#bW}dZy$K?WhRA-=g4WLb-@YTw&xTBrA-pL`+Fr za>m$ zkf*ESRQjO}pzQrZUB{*`0-LcBsS4NMBc^bD{tI%pDj`b&ocMyVTE)p~Bl>Hj*k2ES zVTB)Ibz8AnBh6J6{CB?~roBxmzNI}3b2%_tvddDBVXhx6r*D88x-U*EA(9#U66Im6 zY@fyEqlc+P{b~A=BAqPz$_MPs=`xg0AA@ODKGKe!hAj%;sMsRF-aqYE0L1nq=4%qf zDnqxw84S%bj0?z65KzDn;NwtiNFYo719IFSki&Gk2G*NeU%ymrLMl*veFin^h?qZ7 zFq~HD6H>VV;voUVH36~TK9|QLOh7UJyqlu{Z-ROX(%2a|TK=yC^&c9iZK`2baZ>Ia zs5AfX1GQ?Lrd6Rk_VhrREEj2v?jATuE1fA7gS6A#5rcH4yB#w5dQa24=T%+yAEy|r zMcrj!Ts}KxL6@=M9$m98gR~D$k(iq9D$D)GDSzW5c?V*O3EOl^)%Zv)L#kp-RwJg^ zg5~}~BPZ%Y4q#17Nt<&@uCiJ38EyAimA$(v6vM}{|Cc@+V=adC?LL>y77Bgi%8LVh zHalX9#}%jwWh$S|>HeQpVIa(0(`09WF3=(rRiK`%S{2H0H?O0y*kx6#g0^;oZ+ZC! zrb>>_EPT)g%x*T&SXn@9HDb~d2~Au68MOlRxgP`Y4I+NYXSA)AcyU0E>4+(5law^N zrux`tGUxwk35|C2yNNi^E&ih-E)2zhgClR^{6H3;G(Bj!yU93`ODqjebfu*|dYcC` zYX5*$N8hVV1oFVvC>`RqzgL|DY_OWf8zzedusOG>h4jgSG}TM zV?Lnv@DI%i{Hi0>oxa^d&&DZ?(ITYc$n4odue90{Ff|EOart5_ffxZ-SVw&QGft zuwoJR?j5v%Z}Vl?eGg(={KQs**h-ODSxdxxw3auch2NgU+6wg&HX;8ev3C@owD5Zn zi`gSarz5H)PC7}>zTdr|4(WAb^1x=L$$~l!jME}UFF(d+QBX35LZj13GWP!^`s7VJ zZG?(VX}?NBrm|&JX_9Ou?r7Sz6Eg9ODE^`-j*BOnx08bZHSqoIlr1)tl6cHd>=uaK z5{Vu16O-y9i-s0neS-9=%S@D7T3Q>~01_VY2w#8P>4(#If~>5Y=U?fft0Q#uP-n?G zfmQNXvBmeQM514_c;<;p40!bNN26<*uB=(^PQX@Ei&rX$4I6s*6KAc+f`dug6qJ$j zDsdi+^9_(vahHzEgQ65akGSM7N%60n#ZNWE|D;*`&~bXHTpAuF3NB!%<5e~Qq>)xa zc(Yl&qFIK`&En<9>mZRjTyF`%XiWU0u|#e8aq1aWH)CS{@g^r-74!;6j+2^0qqVuO zYWUn&Nz?~x)T_2Y<`Kjx*jKwsoBVH#zq~m?GU;BRg!WzOY6j^^HnnC zaH{PvJ`ejEdl|6KB7W8vU(hT*8*w%M^kYe=n7YBOz)-7CVY7Gv;%fZ75yza6p1ikG z1-37Pfy+Jy`W~a}SN3LwbZiZBVMZ@C zU$vjAi(T4GT7Uf%n?W0~HMEfoKVs5a@oC*iRvt;Vt;FZbjZ)Lj0oEqOH~Hc-5Lc%c zeM$|Rw4o;DcnlcQcAFG`1aWox!=HK}3|f^W-aDD@s089akn}0-(0^`5*7Ru;21$Be z%JwN4^wDVT9@Kx&M&kTvjr?gkn(>gj>0|Ql$0b^egXJv_((98#+Z-UyanOq; z8+u4*Y%gKFp_z}kSaHaMhQ4@~kRvf%KiBsPA|E}-9kvwy3Zg(}=aYqAL8G*Pueeh8daoiHXiSejcs68Wbvi3o* z5KW#r-d@XW!ut9qvgWv5YuJRB<2DiQgh@LApA$BbK_@b_Wk4v~L`qIr?mGbJflW7^ z<_da=n=-txo5b+86B5Gen~j0I7&>USZ=G z5_{9Kyh7s_()~sq?sMPpQzwhHx4_Y@O(f4_(&lc)19F?mQctS3 zWHWXkHW7M%vWy|tV%IVYPVC}Xe;nL-wH<8w z5WPobHyaUGr(gV#S^_m|-vUFiM>cG80H8)V`Jr4hY0o)uSgZrKdRVMMT$)Qtb*lW3 zN{hadqOQv8z)}w>uOTj`hxj_is~?i*PNio_o52#L1;A0qXE%#aM@e?L>yrI__d^o# z)llu>%^LpjW>WllH0l3&h7wKh&uoDnZ;?pfJPajK#jiDsUpj0@yC}r_+)4bjLi}`k z|7Z}4_7PtQV(R#F&EiitBmVB;J2?MBA^t^r|1=O!lR5tY2Mbj3Yt7=9K4`}Ioy5;5 z#LuMXs#|Fxh^brYImFfJPk$h5h9O)N{Z%&%RbVA+3;E_uKbsYw)-ALn4euJLP`y5A zsRMQO6Qi?;<{c=mSJ2(Z*m^Ah6frdh!r zA{)=94_9~Oslc(LRqQ_9d9qo29O7#H5h&U2UXF7fQkU9#NL0)XTQvNJEyVhjMeF;d zy{q;sLw9xNZw>}ZpxDi4=`o{-D<#lR$EMrf6BYHKR)2pEt zkk)U-BUM}Rj7O?}R)k4IG$su-v+qg>u||6D15-uh=sWRKp`Aw+u1 zj27O7^!&!1sxIcucn=C!9IPyVu_Wr-^vF#gu>7VE@Vs-uxXhecTikXs@!Q^H=C{#g zHBBy4eS7e|0VixX z_-`OdF?trR-`jK{!bh>3)g_C!#Bn;)=9Iw&xJ(-B1DE@uWq|5^(9ir(51>JY+P8J$ zX;i70$Z{;M`=NB){s1mgA*zQUbWNelr)IpTkPS9ufpD4mZE!8a9@%9G2SG=pA;w{B$-$Z$R;MdpQWUL1;-1;Ujte48V1tUrKb{Q)WEo!VkB zR=jmz_w#A2A?t97Z*`ll8W-2fT0~|FakWO2ppWtxgCyf60w$kzaYk(~zJ1(@3mM+spmRI81 zmwd^N9J`Qm2gUW@4Ud*fk&vaVWYTw)cOaAGh63$MNMYqxQqo}6?!xD;t>l{qyViqG z&sI|Oubgyd8-~_x)JF?WlH9zoL-H9rDy%xCj-G$TWy<&dsIX+gDR%&6Vf~6<;I{Ay zAf2#{BwS1}%S^W{;e!?no;N$+ma!JN|7!FKW1&|W$egi_lw2&#|FVZy7y|#c^HD{3 z#{nDju{3>o`{Oc9qwVhTxH4|VEpC~!$a1?VP?_h07Ls@=hM2yeaHp)ceP5U?GZ~mG z(sW2^l$c9JS_zHVFU4pj%KNrm^02Z+NxTwA)?R*B9i8-pD(X?EMEvM6G`)utcvzF< zaCKI?Wht2+^2?98?UOTbV(l<)?;cjFZUD?l9%<}klNn|Ls!4BQE-&cU@U2%7gd%rZ z9Su5woL5OXXrZ@HEx6`OR}@=HUw$NHnXW)LjH{)KkwI;6UR!+|lmuO!r!}M9%-e|l zs zlSwTl;d<*Il}WKAlV&2>7xa^XO)dqyrQ0IG?6EkU3afSEWD#sG)+jJ)ifN?(_3diK zc;ZJh>Gktc1!N$epGytyTKSY{v#weEOPp`Gj}uYLU2agDIUr{XybVbmH*S;!N=8rc)X_G_2+GjId`n>x%* z>y);g1lT3=|9(xnrvkU!AhfBT`yZRiE;m(pp!&{e8YQdm;idvZC0eEuO2!BUIOAD{ zwyFc9ZX3zCk$!jC%)D_*Tfa@i*KZ?(Zcfv3ui=^Z*GTovWcl;l&71(?wQDZCe!mr4 zHes0Ggo`v7yQMEY+84x82jXG$JQ>DX={tdiG5P#OoGZO3-t>^Z$fe(mcOh~SMCjeK zKq6@^5y`)moa3WhZYiQm0!KP3w_K&yW~B5{_?4=H%9hjiy>ly+)gFE=lt26$dH?rA z^5?4Cg}%>y7jB=@_`V$nShh_59;IQ6eBb*IXxI&*+T7Pd_}tg_j}2!}1Z!6!vhub4 z>FwB?oQ#&9%GR>652Tt+j^SPKi`LnE{D9UbmS6D=?uj{m>%uP5M%Th4taU6-W9P)3 ztir=Ij@{|3IfLeq=uTn=V%1@w>2GMdn_*hhd_2jsookpHY>E({t6j%A^!KsT z*!vuF?_-k&UF588TnLOVhHp3HcRT)0|9z!#Fp3C9P^u+W$RbuwU9CwBo=j}xICmc# zXDew#^FQ=^KG+IH7*if>WSFP-6u`;v_4~8s1NApz7rxC{O>ogKRAuv*t8)0ps%r;u z*R6_0OoJGHWGI|IXNX^&XfrEw;H;sj{y@AhsK@^zhSG2IdvJKF;ZZo48Azdgy;AwK z3miWvvK(v5KR_iY$xV^}B<4|!6cS@_{K!Z`$rdpoc!PuyK5XOIo57}N?R&#{`(DSn z47T6c!`ty5!1hDpz6*2yxRzlqx5kF;Uc3~roj$N6r80ov$9}X}{E$-c-$GS&L>K=P>kO`)I~< zj)ETSChjZl$)p7luSLVEY=>3Z?r7@4&WoDHMVfS`!KR-p@2{$viihVphuy@k(Os|V zHcii8uX057WHX``cg3S(T}@RbJ0r_SLFo>FW=}SiyH!=w@a^pk{_UBphm9$%_PFcaf2o*Q zuC+4LT3NrF%<-kwj+MRG_1e50Xq6p~gx>6`ltxs!aXZ6I-(0Yn)wPNapV8VFI-_7S zqyHrqtIFFM1jmuyY^u$)BZN2Y(3uz}5173mE)(dOc0}e5F_l``kk$$KDT=(tsXFZt zJ_WcbJCgR^m=!Vu*df1zR`d>7p&f?Ie58aTMCPs@|H$}kK4?eYtN4AZ9U+BFKy{Ing+wAQ_}_`m<1KCFS& zEae6A!x9t1dC|Zwj;BaiO(6$M^Mm;)F7aHuB0aw225z1q=h=*DWw;;#nQtKb8OISKe zQi#`EGw0uEm` z2k+oxf5brcFl&2@!>_Gc>67EHa~?NqEyb4;zhl4%-=T4EFC_Y)%K+F$JljaI)^nv+ z`UJo_c#Z>&jJ{JeYo+O{I98;x9RDeer5ttwE1QqSfg^DdW3-7waWxwv5-H*&R;-xF zG**s)vF4{zchsUW>ow7h_~j>B)JPvI!+fj^!2=AmwdG4K!H|;VSm06pYRT?UyMX8Q zt0lW&5#iL^$)@g(wVIlWCRZrJsPY_rtAt>y&lH8Xen+yD z<1~7;9u{^WbttJji3>R<6V|7O`*IIXpwy)QDZx7JgSXevY6T%P!T9 zpnTRCqXS)CEoGasgr6lqTwm+xm(Q9LxLRt0a9B$GjlVd&^gy-Wr_<~5*%0)1N7hM5PAbNtscZ>6v-pU5DVfl+PxPDuEnJs&(ZY83w0|URtmN zVy_-Ubma>s;`Ms`KIdXU7FW|>W5+a(XpCb(RaaZ`XUZ){9tQtm2(&(8UDiI##u-{e z^x>HknU+!$w2M1|VkgHt53?yzk~AYA%Ush$2J`&ejthXZ#~mR<*-ot6(QPQ(RrAIb z2RDq3b38Ycjncew#j!mN5hsn5Tyc~Yvk49ljaYqXw}-NvCf}DbXBbj45lLmE9ovSn z>9%{1SF)efiql$K8>z2!KFnmA2G{iFWxKvmz=mAaKV@ZqRlN?KV2PfgZK z3YWd`qP?^|YvAhE(C3%hK#bH|4fc7fj?u%}wBbM9w3z~lYCxP04U~-J+TTg^0Eix- zL_w1>LTOTL$0x&CBRkgd@8N8=X2=hY?jzW>2Ez|rW~Ft2o+F(-fK9M1-n+@Usp@Q%p{lS7t&GEcg?njP{S)S!R{3Q{tFINS zMk^_~?9?wFhRTK`F!+9oQ3Nt{FMdQuaGe!;MMfF2WkB|^+IF*2P zB#Q&>Kc`ig3o?wlQQFY^qFHpw7*zS8pB=R$*+k9$D~_*6!n@si#St}%&164!3>?Mw z)f|r4Zy&|#*svGAZ*=SNo;!}eImjby(x~^oH^Yh4gT&L{8#A9b-L_Ew$SYKRf7P{W zW?rU$W zT%(c69D-aSV$Nl%od5X85Z;lE8TFSm=T$N1$#3lX)(QQP^Yiho93958J;qi66rO-* zRk$*|sTl-u(;{~NgJuewG0wDpN-Jx>hA+JjH2lLGZVCcR8^1GV;?#NrXSyol4+4XD zr;^u#$zMd7Jo~L<=UBE@L#{cV7{^}G{#wcKzg9X%6|#lepeh`gt#VWrvIZG`qL9sz zzhfR{`*0thvOjfemT_yaX(V`=dCD>2QFexmapF;SO`mpGgEB4eSWM=Bz2apsPtW>e z^YnG&S#xMv1+o?Z8Go z!S>M>pdtlT`-eXP-&{Ky4KTXOG2=;gowg9)g;g7^Yyv*9n^NUSwz4UMW>menFNB{_ z#W0$`={84VlF<{+%M5h68C8+FkD7+?E0A$Tl?Ian-R4%9ROBNTiV&GQ5^cN|scWko zYptwVLoPUuSlL9&wyL_nh4R~~+Gj2wZ~oWk-dDf#dh_rbTEqA~SpL{kMUBNrw`rSq z-E6=%QkZBycHYiMS}4N)l!)O4xV%A~30edLlM5qEl){_fEda7Vk|>Yv(2F+FY7X{f=Gk6d!jkc8%yXPEeR2I%WzaiH}!e(6|Th=@oS2#rd=;J7}8?XP*G zwWHTmc2s;GOncs5JRyxo(%*Dm#I9nv;ms;K3_tFun99a$ehqTGKb6hV#9wk~rm?@Y z8P=LJg%+7j8ag`>204PKvt8L29X+SRRGtcQjGoTsIkKK+(=}1`j%iP`-F25g#^iv% z{IO&E(`-Tz_Hpc zW6cb9xaO;G9AD31`yq>K@6El9ZljbX`B`>m!obsgO(xUBCfxx06uiOq_0>uaV*$0_ zH;*~?Jj?bQURO036HE9>dP!Q4I*W}qJ@UE9)Ymjn|81<1|Gky;+_8i)=yS>*{bq#4tr)#F+AGZYr(@SFw);aV za6nVwa8Al(^$`g=V?Lh-NSX-w|E=ABc$d|k;Qe!_w-^x-X+%UyGcm>(0|G{h6a&Tx zxsZ!t*oc%upolD`EM_PorrCUv28PBAjWH4yBc(LOG%^rE445LNNEwEWh{#X|GbyFW zG87qPC^B3Ov#)gRvz^)J+4<+`b$$B2&;30=KEKYne;r~srT$9&+iq}_>L|7CwwLD( zecONcwd=nY?(dh@-c}slo;1FrHnZ3wbNk3n`X9YK zNc;0>*&nZ#oBupY8~0pC*Nx1-K5fd$rT?Dor}_QEke%qk^O@AJrCpJL;G8r=7JW z-*&$+FxuYy?Px_*TlY1^SNkaQnxiNH~o4|OKp!O(TIB%kM$MgkN!&kzy4<6*sf=a-+y=aRPp=& zZJ)6udi{nwQ+tQd`o$1-lD(vz93dUsZ!e3!8$CL!ucwgzK!*B#ILRgXWE}AkBTOdK zw*OrsdiI8X>js6eiL{aZbIXE#m_u5J9Y6l7Jl;^v*tgOI_KGissH8KXBIp?w|fZNkFJQO#)*An zLYOr6-%8!*=T>3n=fCavf2sG!?T+~U0y+5~)cfN$juZdK;Qy|||F6Ff`*(&;8tZlT z9}k%Se^mIlzyERF|F7fg{}&JR`1k$a`R`6Ne%`p>*zNl&qpMNwsi`51|6G=0mo$Ga zUBCU`O)cR8%eZRDOyJ|Z~7yno^O{)Fi?dY!B!EI6UmwsR8?a%9W z)&E?&y8pahaa%O{3xzGw_CITmdPiN|_vjkv=HDOni*@)1x%4LMyJT~h)F$n;oUOc4 zI|#q9^jfI>`c4nuRiSpp&L|@(|Hj(Qez;-uEm1gG8@&_V(LI%&r$~Cw+Uq+leLZfi zO?yWl=e}4w;T=tO_p4p}j{Conch#=$V#{5%t?#H;*uVC8SNTN$+N)jVOJAxTuuIqF z&qiVO|L(dlDTMyTwF`Dd_a%;na6?BNZn%oq!H*mS6?0LKY>nD7hJ1aUUMQ=8l~M~|1gaa|cl`Ab8TUmiz~^$5{pz2Yc)T!^wK#8LX(5T!51GW7dB z>fN&n*JFJgW$X=6MmrwI6LEC!!VulN1Xp8S9Ay@VC{z3U68%DSU#5e>I4q8aUJlWN zaU4Bpzz2KdG@OSzcu)rqp2qWdEkrpn!2@xW+bu-7-7ydS zKB{MkM)koGEQ_PWs0|Jpoj8XV;%IcQ5RL8|M|nF!l(!F$VMiQ|of@LCbCKp_X+BoF zv76CAW7R9@8=`_N9F8O7Xk2B8#;wIo*o3=~M+)N*6*8=l;f1MjA}X2{qN3tBDq4mW zxEXiE(Tvg%%@BeaHMj^W+6JC zuD^R$3e9R{=slN&M*EB-2{D->CNq)7_f`qT0HH|7**ITFu5x+c@+=&RGjR@9BMToq zi*LkRjhh}3VQe-TJ$DZb?RGvy`P*CV#8W*v2+y*>@7r7{z zi+aY0^;xL4=euseOr@JUYn$GU9!p#c;f4^08%)<5OxK5ohValZ0 zIS#$e&faF{7q5o!Maxj)_T&(5?-7SSYeVQ`eYs;(2zNB$Njx2ge%6nE){p+x*3i{) z7;q|t0siS`+FqBY{c*T^R|t3Si9`Ab%XcoW$ND%7w9pQ;&<^Sr!l3SP7@QWu;EXs7 zSr)>O6>%84$0xFV@r;mjB7~e%EWg6?YjGIH1H*XW;l>ai-W-Ro9th#92jei3q9ZB# zNKpun%!)(q826sz;xNj(Gm3Xd=Y=qOOdRqoka-r!?x%U?Z0+dFQFUUN3+b>@eXP(& zg+A8lV}m}FbCpNU)5ijRP;NBk9vv3Kqa*M#Ue%{HFVC8Hv-3AQe{&&D!8KTi?RY2- zJ!Xc`V>VXcD&(Xd`z^Y+xIEnA^3c;|qo>Qpt-FP1uke%!&obe0qkCHp3iEBk+*|$L z>Zi;JA!VL&Z{2!y5x`QEiFr+WT`Yy2O_Fd|r zJPvpE3E|FuD1YvhKX=Z>`F>CLd#17u`stwGVk|)l_oHyX7TghsyLjL(9_X)Kf9<|} zA%rhqk`5G1qhPB3Q}v%VTzRDONae(6Cxk6c*ivUXF-N&vd8P7B<=yhAMjow^KfUBn zN*wM<3*nv&WZ69|%Wyu!`HWIriXC_&4)+#>aPN3*z)k+MCMoXj`(h?$V_pb}%rOq; zJ5h{clPNZt_1J)|*oMcj1JC05INTRPxGzQ)-N&LV^|RE^)?v2(vJNXBRW4Ru6o>o! zhH!s>JnR52`X#YLu@i zUsF%42aEOKaX7)unPTQlL&-Qqe?z%^D3=digLQFuFe!uwyCDxe$O8`!$B~kFzQ=(_ zS)P|IiwFCGh7Zy(N6d4?JZC=oJx9kmI(}%HnK;u->}J+<$I+ON8*n2E*)Sm+c0Giz zB*oz?J+K#M;UF~dR}B1ci5Xmmi9HVX#X;VL5y>cKBgE|Clg^)3&QQ)mu^l0{BQ{}^ zsh@1>_rU&`itDl7G#+Xi4@3Qo)XyV1rt@&qS-o8KMhV?0p&Q-Tbnb7Fd(^;>8u-z@ zxSuD=d17T8o?!VCEPqVLkLmca3wS9G`Hh}wH{(G(9EZo3gz$JNHsGc>jL8pSOaV^8 zX()7Kgl^0_+<*)i!+v)@6x6G!nlp29PD5iiHV^HLZ~=+z}g*Zj~rP`OrVd5|k-`qQCu_wC{T!VE;fl0f}|4AJVPQ+n&s;Bn! zI26j>LfKm=$qFS|;T60VhbOy-@MKRMhZArb&cubd7lFAp1-{N> zU+1xD^x-2(wn>WxR^lLwGtV4o~yY(>(Mvg`cMI(*}Incu%)t8=f%#pFZV4 zY@Zg}+2cc)JrQeg4IaaeI6RXQ!ZW7LGovvdr{FYH{~7h4IfBRHFef8~Ig<5TV*D*J zUck}?EM2f3>v1X;#o^gWAv`-d4#mUF|KbsGSa>ajZ-+Q65~D>Wcm~gLUEsPHN1!X{ zb3F7M4?QQ@o|A0PX}4Ir#hbA?4kZ&qC@I7hSb@87ZyZWW%crnAuMlH?od9V+@ib#kK*w-eD6dE-#eu&M9YO}g&bHR2mWGi2!Amj zOVIrO3yS;&MON+!VdXyUrfD}5S7Ie5b~xDSK+L}<=FiU$;rZe?yigdz3sbNOTjJ1J z;~{=c9Dcb;RFwy;Mx;h`|ANA{5s7m*CZd|yP**MMu<-J^cZRO zoRXxcBJh>} z^}-Cy!ZA1wx%8j7^wOdbE-i_}Wm$b$RzELSo|h{x6!Fk3Y{OkVwVtQyd8RuL^+cZi z)qWo8#zWmve<$?!>r9@?Hvdmv_7dwVS54-ssa(V(r+DPl2HeOqT=y~8eXRVk@^2;K zZzbVxH)AvI$96n}=Xl7#=M4NwHBYQY^*&MW6ZJk(?-TVtQSZEZ=MyS^%7veD;irf2 z2-k4kMXtLz8|UIxyv`GSc%mN;#vGi8g}4wU-=$eRG>3;q^H6>qzOSS2UyehST&j{w zRmZV24ln10@bVa(Z~nh5*F#MwAht5~gK^?AG)hgYVB@XAbFffab&`^Tg>)Xc*L zcodJv;nm$Cyt+3I8%Kn&F&C{58?6r;k6}j~-k21^8}9;x?h!CKN5jURN!OLn{}x@=$9gX2)UsNUt$R<5Vn)L*=j#Do5ZroPctnQZ7{T zNF|R{QoNGlRZT2!VVGQ~mJ1t8DYg`^n*STQ_6;ZAaAKVh0Z-s5jS0^Eta@fdc*;jcmn ze-)!p{8f(mzquoX%_rip#R9a&0<=X)wg|}<(_@R-v1JujV=!KiMJJxbOL!#?`%*&K*B6CgpAh`@xe)&PLLBz< z*nS?{FC_bg!6njtky{__pZ1+3Qtmc{3NAbA%onn6XjlZd9ETH-$2ahJ;zuJx_|fP%{Ad==F>hJgz|w{dxY2y=X}1H7N_DgoQXp86Cr98 z^F}dmT#xk(>A{d*Sc7Zu2p(g=U|9ISJ&fdzwDFqGy7YBJC^+=e?()ATG}#;X() ziuZ)#L!tOkC>jn@=rCTuOB4~pp9tYkF5wl5NV-Nz*VvASC@`D?BXO?z|K@xO1Pa8+ zl1(hxbN~-hhyq(Eu%!;yqYk#{V9PZM28vR+sY~GsTt#8rhVK;c-cTc>21^Lrwc>)>0+*z8$0F3&O)4mvvIDa^th$8GY-4Ehp@XR=3*XBK%r^xNzvYD zHnf`!?L5)W6YbY{ATS^?lm){a%)xm)LBkJe_+cuhV>=!~4UTAVq!Ul#b)HJ1D386( zW9=56b_>s8u0PE6Z)wqb{#hAa5GZ8o#Kb($YD8h zSigt$`!oIgtg9cE|BU7BZR+jvJ5L@yY5wod6sv4pkM(#7uh3Yme=gQPufSE~8LA1HsI{DJZZ$_H6`kfjG( zu?_d(0qvcC-}(2Qf8Y7{oqyl?L(U&^{*d#BoIm9JA?H6hrN1*mkZ%4T&Xf!tlHmkO zjt?crkvVc=9&W-W>%uhIJ`=03CJw*c8Nx4j$KiP25RUg(*8Z2;eVp^XQXD#j zutNy{Uef-(r2RF|{hH@~O@Uui;N(2>|KtJ(VtcaHGoXvjZ!%ED->7(Qg=e`6k64oH zpCs2g3ZA3jCv!c+&5y%B%AJ3dJO7xE1s=gn+e@bHrJ*=14!;w!-wE08B;D^M-S1AK z4=%~Rr6v2&(_mwE>{J|0;(PpK z;;=p~g!LJ?8rPzR>oxqLfq!V=AL`(TI{4vAti;23)H9%@t!Ka+vpq%6MGC(`;mrov ztpBZxJWVgbdTj7CP2m;_w=|poEv+7_M|iBxMHaNOVEcU6>0+$I^{x%wTpPMuS`GNF z0gtBJFqLWEQ}mY<{Url_$$(=^LO50$hrde-;qSU3OaG3gofPP#K&N`0>UHkMy?EIC z@6_SRqvro{^PZ)@Vd-yX;hZ@94;}sw9iFkYo|zPfe=zVr82BHA;2(tG>^1Lvg86^O z{680m3%hKJ+T&HuVy|*akb<95@Y6lGPY8z!;V>avD`e}0Dsfq?uEwE+#w9ea&*I8K zKA}wX38m1dlZ`%|G$M`fr}6N79Ta%qZ^iqn6>pRQM;Y*$HFBa358y$sVDrM@JO+8Hn5PycdxhHr2VhzpBK=1CeX6&&-hHqD$GiSNyV=X& zW-o=0W2bk)EL_OKXLl;^My`F9YroykJK_P}innqI;=;YctpRs49ZQ#60`#5mWL>jyV3!Ra%r4<)y4}Qjr}3a5ssa8?{WnHi!d zv*T!TR){7KileVH;Ojy%?P7?gU5=yK1tFSUXzA9E6*79bcZePq$~m3N`v3E_A^LMk z9H!RBA4dZQJ$5*b9y=PM$BvUuRc0bKGxxSY{fQg$3s3-kN25+B2LDsKIlo~5z;u{%9C&9$uGsFxDw6BeDfyX zyeX*mFP>a)ENf1P@sz;PWYFc3%_KiSL;4-x-c0u>{LZ+|ed(K2F6V6R+9CYc+pz z&7VB;tIYgbhLu=F(ISe@io-MIAw07Zci|ord4-8wVLTK4`7tK$cTO7Mw1F<+6})bM zBm?!pUbqk!qmD{-RJsbQu@N`N;lHY1rhb|FW$Kri;AI00RArzVA9XJJsB_tXX$H(d zhCR=)(mvYvbK~xx%!Se&8fIvi-?J+TR!;_zZ}2rpW)Uexc4`hBq-55-{_#gz|^BM?>I#$Rz|VJcnVC!^LQ~1OXbc|x%1*U3QWKX zT!k0#l5rW5SjLiNZ4}t0!wEW^ghel#^K>ajd8aMdTxKX>o+T~y&PQgwW?rA4=pyG5D-8%*MPGLGrrn6-F z9CWpqE}N&z=IJb&&Z6lQnBJwpCA?zb9tQ4(>6nSRn1==`GEmVXT!K7M!~;bK@F1Ra z;VwE&W0QDBGWJ6;nnBYUG@UUHC*Vw+jq9-Juj-AM*Gq`kSx8UEHU@E5LFdTtA zJCkQ;F2PbEnvzV!vP_b+GWTGPuOIL`UY4V~_yf_Qj;Rd0i=rW2f)4?(w zEW3ZV>MT*w;9!#z8dhjnaV>53a+K# zYw01pmWe|7+EQfrYn#pg*LC!|j$UuZR@Bk!I$Afzw&HOpcI(8hUJ}(yqWV3!4?FNg z9DdBgAG7esYp@RW^JD#Np5(4^vYSBzweoQ5F5Kg#4a0UYtZQTXj&bJyj#Un-u@2Ys zKsHYd##qgjtgUysJaZIsfoPyI(?)*3*dEPkYKDPs};57rSHqcrfP1Dg#RIX5dm4dHQ@KuVvO0m^k zx|&NX7WjQ33Ppubd^FQz>uhxXBj-Olg2z0@7JH0cgiEp92fkLhcDc=ghL<(Gtm0)A zKkF01XZ0b0=_*EB!sy=#Jo?1{)6BY&hKIj=`P9z2(ktcD`BJh56oISdZ$B zJ>-_;$T|6KJEIK#g_+Dd#GWTIk7Pv7JB_A&g#S15mCFKzV3(CH|&Egp$d00qB&gYq8o+;y* zWjr&7XXf$DM4l<+nYlbOpGO$DvUl@uy{(_FbAeLVc%dadG ziWOLeHC!i|Zjek5@x((s@v!p4%1?0R6D`QnCs^8j7mx0ddNr&G-To_!shp1##3_1F+U6|z~7&4O&2XVZLOwvY@) z$v05)4P1;RIxN%SGCYdM@g&OT`zdliMQ&JOc2wX2JXl+|D_S_98)LdL=EiOz+}Iua z;Q%z_ZX8;h{j=!GME6RU+$&wN1AMm~;DU6M5pFWVP3Q5V`9!1cH0mx^-NmXq)4Erg zS5@X!4NCW$rF)M|^DDb{=01Not;c1@SIxCjb8RVd^DW$b%V9if%1t)qreZmoGCenA zvnj}pw{qjH+p)msxaH;2At;@u5&Eg;H~HI8MbPyo%Q?N;MXxHTG3^x39V< z4#pguj8jpl(}X&0r)4#5x7CYF?&gxaE3pb&u?>0T?oO*(vQ@1IvLKxW={ic+QTiIJ z!xMPQYB$GfHxC{whY{C{a<+2W<-?O@Yzh+sz zKbX@a%;{X5fRk`8&c`xbhC0sH@jyv6P*M$?jdO7$Hljsophaomb<1;-WqJUnp?ZVV z8+01aTDJRGw)>%wJRl?wBnll&aUgjfkUS4?{R3S8zy-WyeeY*|AAoytzjdC6hVYQj z7-2{umS7pS;Vv}L5CaVr`=Me#v;fCr71p47L)9C46|Y-XADrewG1CQOKepppJZ}eh ze>=caF&FcYB{?j~S%(|&7!w&NkB$fFc_bP!qx9<9O}+=;vKJa)bQ$YWt13-d~G zDN3q5N#!9Tc!&s(4R^^LX{YxBJG~dWWbSau-04+WbqM*ZZABkrEBZLUOH%*JDU6jX zW97=&BY4d3seVsKp?X}X9^Z!t@PhgO_@y|E>1peDZyom6VJc3*NjMJ|sFU5$)R?D55ti-8qKOF&8jDP`bnOCa;5qIWTk^< zCtBk$Imtg7?}n1cd(JSKrIT4Ynad}0`L`(eEeaM>q?jVblB!rzl~41cX{ML+8D7q3 z>2H_*_IQ`K%DcR3)c-U3Uwq9gwcy#GCn|ZOs?Geb+GS&v1>|K5$jfcmRpz3Xxu}{2 z)hwvt+8VCic+mdI!^m|TdG3v5Pr^O05B9@BI27f?8@YChblNF$(j&NJ-6~nP_Qn24 z(XABSn#gsK=U^O8u%+ajEhQH`t8;A&*S4tGqGC%94o8Z%P_$(VPGbp|R&we0J8ZB# zfh??IVU>QX^jlSgvrtY{$%(2{c!q&y#mi;t#S?hSyMadU2D)CWyn4XF zK`u?_(oD?90xm4z!tuBe7h?skLdo}rDeAX1q2ty%2kU+P(_p&>+p};G zj=^y_5eu;d%di?(VNPmYM$_ zEpt%g#2VD$M>_n7g&(nyaiJp_Wp{_{?$BX}4mr++ofxk>iKp=bUc&1k{2(a~KVZlY81jP==Kl|J9T@lr2L4g8 zU4e^`B|qx2WHd|iWj)tcbL}f~;uSgZ%3(Z;op@4KYhR=N#tD*l5-!BWSb?ihh&KxH z#unUxJiL*IFDFiWlXcbs4KLI1GcNm#%RZZkg(z7*lPsUD!8+8zXFKBPX`iH?u1b!c zuOsV8J!v4DNE2yEj$W8XW|G;&UnqECJ}D-P$PzLz`y`rQqf63U(jlJC1%Z#R(KS?F&B$Es#Ib=8)Nk)@=GM-E%g=7ku zMrM-PWPWnAvY0F)OGs&QB3ilBK{;W~%B~74NhPTwHDnE`BkM_ha`e3v(wC%?bV8Z$ zQSPNPq@eT=%n@9{{%dMrYrye diff --git a/slsDetectorSoftware/moenchDetectorServer/registers_m.h b/slsDetectorSoftware/moenchDetectorServer/registers_m.h index a9476007f..c0f74dafd 100755 --- a/slsDetectorSoftware/moenchDetectorServer/registers_m.h +++ b/slsDetectorSoftware/moenchDetectorServer/registers_m.h @@ -103,6 +103,17 @@ +#define PLL_PARAM_REG 0x37<<11 +#define PLL_PARAM_OUT_REG 0x38<<11 +#define PLL_CNTRL_REG 0x34<<11 + +#define ROI_REG 0x35<<11 +#define OVERSAMPLING_REG 0x36<<11 +#define MOENCH_CNTR_REG 0x31<<11 +#define MOENCH_CNTR_OUT_REG 0x33<<11 +#define MOENCH_CNTR_CONF_REG 0x32<<11 + + //image #define DARK_IMAGE_REG 0x81<<11 diff --git a/slsDetectorSoftware/moenchDetectorServer/server_defs.h b/slsDetectorSoftware/moenchDetectorServer/server_defs.h index 76f9a29c6..850533266 100755 --- a/slsDetectorSoftware/moenchDetectorServer/server_defs.h +++ b/slsDetectorSoftware/moenchDetectorServer/server_defs.h @@ -47,7 +47,7 @@ #define TOKEN_TIMING_REV1 0x1f16 #define TOKEN_TIMING_REV2 0x1f0f -#define DEFAULT_PHASE_SHIFT 120 +#define DEFAULT_PHASE_SHIFT 0 // 120 #define DEFAULT_IP_PACKETSIZE 0x0522 #define DEFAULT_UDP_PACKETSIZE 0x050E #define ADC1_IP_PACKETSIZE 256*2+14+20 @@ -57,7 +57,7 @@ #define DEBUGOUT #endif -#define CLK_FREQ 32.1E+6 +#define CLK_FREQ 65.6E+6 #endif diff --git a/slsDetectorSoftware/moenchDetectorServer/server_funcs.c b/slsDetectorSoftware/moenchDetectorServer/server_funcs.c index 41477d5ad..8b76d18f5 100755 --- a/slsDetectorSoftware/moenchDetectorServer/server_funcs.c +++ b/slsDetectorSoftware/moenchDetectorServer/server_funcs.c @@ -79,7 +79,6 @@ int init_detector(int b, int checkType) { } if (b) { - int reg; #ifdef MCB_FUNCS printf("\nBoard Revision:0x%x\n",(bus_r(PCB_REV_REG)&BOARD_REVISION_MASK)); initDetector(); @@ -89,23 +88,26 @@ int init_detector(int b, int checkType) { testRAM(); printf("ADC_SYNC_REG:%x\n",bus_r(ADC_SYNC_REG)); //moench specific - setPhaseShiftOnce(); - prepareADC(); - setADC(-1); //already does setdaqreg and clean fifo - setSettings(GET_SETTINGS,-1); + + // setPhaseShiftOnce(); //firmware.h + + + prepareADC(); // server_funcs + setADC(-1); //already does setdaqreg and clean fifo + setSettings(GET_SETTINGS,-1); //Initialization setFrames(1); setTrains(1); - setExposureTime(1e6); - setPeriod(1e9); + setExposureTime(1e3); + setPeriod(1E6); setDelay(0); setGates(0); setTiming(GET_EXTERNAL_COMMUNICATION_MODE); setMaster(GET_MASTER); setSynchronization(GET_SYNCHRONIZATION_MODE); - startReceiver(0); + startReceiver(0); //firmware } strcpy(mess,"dummy message"); strcpy(lastClientIP,"none"); @@ -2337,18 +2339,78 @@ int get_roi(int file_des) { int set_speed(int file_des) { enum speedVariable arg; - int val; - int ret=FAIL; + int val,n; + int ret=OK; + int retval; - receiveDataOnly(file_des,&arg,sizeof(arg)); - receiveDataOnly(file_des,&val,sizeof(val)); + n=receiveDataOnly(file_des,&arg,sizeof(arg)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + ret=FAIL; + } + n=receiveDataOnly(file_des,&val,sizeof(val)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + ret=FAIL; + } - sprintf(mess,"can't set speed variable for moench\n"); + + + if (ret==OK) { + + if (val>=0) { + if (differentClients==1 && lockStatus==1 && val>=0) { + ret=FAIL; + sprintf(mess,"Detector locked by %s\n",lastClientIP); + } else { + switch (arg) { + case CLOCK_DIVIDER: + retval=setClockDivider(val); + break; + + case PHASE_SHIFT: + retval=phaseStep(val); + break; + + case OVERSAMPLING: + retval=setOversampling(val); + break; + + default: + ret=FAIL; + sprintf(mess,"Unknown speed parameter %d",arg); + } + } + } - sendDataOnly(file_des,&ret,sizeof(ret)); - sendDataOnly(file_des,mess,sizeof(mess)); + switch (arg) { + case CLOCK_DIVIDER: + retval=getClockDivider(); + break; + case PHASE_SHIFT: + retval=phaseStep(-1); + break; + + case OVERSAMPLING: + retval=setOversampling(-1); + break; + + default: + ret=FAIL; + sprintf(mess,"Unknown speed parameter %d",arg); + } + } + + + + n = sendDataOnly(file_des,&ret,sizeof(ret)); + if (ret==FAIL) { + n = sendDataOnly(file_des,mess,sizeof(mess)); + } else { + n = sendDataOnly(file_des,&retval,sizeof(retval)); + } return ret; } diff --git a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp index 46db5c198..a6b7ca1dd 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp @@ -771,6 +771,14 @@ slsDetectorCommand::slsDetectorCommand(slsDetectorUtils *det) { descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdSpeed; i++; + descrToFuncMap[i].m_pFuncName="phasestep"; // + descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdSpeed; + i++; + + descrToFuncMap[i].m_pFuncName="oversampling"; // + descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdSpeed; + i++; + /* settings dump/retrieve */ descrToFuncMap[i].m_pFuncName="config"; descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdConfiguration; @@ -3618,6 +3626,10 @@ string slsDetectorCommand::cmdSpeed(int narg, char *args[], int action) { index=TOT_CLOCK_DIVIDER; else if (cmd=="totdutycycle") index=TOT_DUTY_CYCLE; + else if (cmd=="phasestep") + index=PHASE_SHIFT; + else if (cmd=="oversampling") + index=OVERSAMPLING; else return string("could not decode speed variable ")+cmd; @@ -3629,11 +3641,9 @@ string slsDetectorCommand::cmdSpeed(int narg, char *args[], int action) { return string("cannot scan speed value ")+string(args[1]); } - myDet->setOnline(ONLINE_FLAG); ret=myDet->setSpeed(index,t); - sprintf(answer,"%d",ret); return string(answer); diff --git a/slsDetectorSoftware/slsDetector/slsDetectorUsers.h b/slsDetectorSoftware/slsDetector/slsDetectorUsers.h index d260567dc..4dd8e4300 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorUsers.h +++ b/slsDetectorSoftware/slsDetector/slsDetectorUsers.h @@ -54,9 +54,12 @@ More advanced configuration functions are not implemented and can be written in slsReceiverUsers is a class to receive the data for detectors with external data receiver (e.g. GOTTHARD). Callbacks can be registered to process the data or save them in specific formats. -detectorData is a structure containing the data and additional information which is used to return the data e.g. to the GUi for displaying them. +detectorData is a structure containing the data and additional information which is used to return the data e.g. to the GUI for displaying them. +You can find examples of how this classes can be instatiated in mainClient.cpp and mainReceiver.cpp + + \authors Anna Bergamaschi, Dhanya Maliakal @version 0.2

Currently supported detectors

diff --git a/slsDetectorSoftware/slsReceiver/slsReceiverUsers.h b/slsDetectorSoftware/slsReceiver/slsReceiverUsers.h index 2c3f5ce96..8a5fb0a92 100644 --- a/slsDetectorSoftware/slsReceiver/slsReceiverUsers.h +++ b/slsDetectorSoftware/slsReceiver/slsReceiverUsers.h @@ -2,7 +2,7 @@ #ifndef SLS_RECEIVER_USERS_H #define SLS_RECEIVER_USERS_H -#include "slsReceiver_funcs.h" +#include class slsReceiverFuncs;