From d968eec3b996ca600c0538dd7aa2f285123ccd66 Mon Sep 17 00:00:00 2001 From: Ivan Baravy Date: Tue, 21 Nov 2017 17:15:57 +0000 Subject: [PATCH] Add pe2kos source (0770 sdk), remove pe2kos.exe. git-svn-id: svn://kolibrios.org@7115 a494cfbc-eb01-0410-851d-a64ba20cac60 --- contrib/sdk/sources/pe2kos/pe2kos.cpp | 139 ++++++++++++++++++ contrib/sdk/sources/pe2kos/readme_eng.txt | 15 ++ contrib/sdk/sources/pe2kos/readme_rus.txt | 16 ++ programs/games/fara/trunk/Release/pe2kos.exe | Bin 13312 -> 0 bytes programs/games/rforces/trunk/pe2kos.exe | Bin 13312 -> 0 bytes programs/games/xonix/trunk/Release/pe2kos.exe | Bin 13312 -> 0 bytes 6 files changed, 170 insertions(+) create mode 100644 contrib/sdk/sources/pe2kos/pe2kos.cpp create mode 100644 contrib/sdk/sources/pe2kos/readme_eng.txt create mode 100644 contrib/sdk/sources/pe2kos/readme_rus.txt delete mode 100644 programs/games/fara/trunk/Release/pe2kos.exe delete mode 100644 programs/games/rforces/trunk/pe2kos.exe delete mode 100644 programs/games/xonix/trunk/Release/pe2kos.exe diff --git a/contrib/sdk/sources/pe2kos/pe2kos.cpp b/contrib/sdk/sources/pe2kos/pe2kos.cpp new file mode 100644 index 0000000000..01b829a5d4 --- /dev/null +++ b/contrib/sdk/sources/pe2kos/pe2kos.cpp @@ -0,0 +1,139 @@ +// pe2kos.cpp : Defines the entry point for the console application. +// + +//#define TARGET_USES_PATH + +#include +#include +#include + +typedef unsigned __int32 DWORD; +typedef unsigned __int16 WORD; +typedef unsigned __int8 BYTE; + +#pragma pack(1) + +struct kos_Header +{ + char kosSign[8]; + DWORD res1; + DWORD start; + DWORD end; + DWORD memory; + DWORD stack; + DWORD res2; + DWORD res3; + // + kos_Header() + { + memcpy( kosSign, "MENUET01", 8 ); + res1 = 1; + res2 = 0; + res3 = 0; + } +}; + + +void load_section( BYTE *pePtr, BYTE *secDescPtr, FILE *fp ) +{ + DWORD *dwPtr = (DWORD *)secDescPtr; + DWORD virtualSize; + + // + virtualSize = ( dwPtr[2] >= dwPtr[4] ) ? dwPtr[2] : dwPtr[4]; + // + fseek( fp, dwPtr[3], SEEK_SET ); + fwrite( pePtr + dwPtr[5], virtualSize, 1, fp ); +} + + +int main(int argc, char* argv[]) +{ + FILE *pe, *kos; + kos_Header hdr; + BYTE *peBuff; + BYTE *scanPtr; + long peSize; + DWORD baseNdx; + WORD sCount, sLim; + + // + if ( argc != 3 ) return 0; + + // + pe = fopen( argv[1], "rb" ); + if ( pe == NULL ) return 0; + // + kos = fopen( argv[2], "w+b" ); + if ( kos == NULL ) + { + fclose( pe ); + return 0; + } + // + fseek( pe, 0, SEEK_END ); + peSize = ftell( pe ); + fseek( pe, 0, SEEK_SET ); + // + peBuff = new BYTE[peSize]; + fread( peBuff, peSize, 1, pe ); + fclose( pe ); + // + // + scanPtr = peBuff + ((DWORD *)(peBuff + 0x3C))[0]; + // + baseNdx = 0xF8; + // + sLim = ((WORD *)(scanPtr + 6))[0]; + // + for ( sCount = 0; sCount < sLim; sCount++ ) + { + // + switch ( scanPtr[baseNdx + 0x24] ) + { + // + case 0x20: + case 0x40: + load_section( peBuff, scanPtr + baseNdx, kos ); + break; + // + default: + break; + } + // + baseNdx += 0x28; + + } + // + fseek( kos, 0, SEEK_END ); + fflush(kos); + peSize = ftell( kos ); + for (;;) + { + fseek(kos, -1, SEEK_CUR); + if (fgetc(kos)) + break; + fseek(kos, -1, SEEK_CUR); + } + _chsize(_fileno(kos), ftell(kos)); + // + hdr.start = ((DWORD *)(scanPtr + 0x28))[0]; + hdr.end = ftell(kos); + hdr.stack = peSize + 4096; +#ifdef TARGET_USES_PATH + hdr.res3 = hdr.stack; + hdr.memory = hdr.res3 + 2048; +#else + hdr.memory = hdr.stack; +#endif + // + fseek( kos, 0, SEEK_SET ); + fwrite( &hdr, sizeof(hdr), 1, kos ); + + // + delete [] peBuff; + // + fclose( kos ); + + return 0; +} diff --git a/contrib/sdk/sources/pe2kos/readme_eng.txt b/contrib/sdk/sources/pe2kos/readme_eng.txt new file mode 100644 index 0000000000..bcc616f9d7 --- /dev/null +++ b/contrib/sdk/sources/pe2kos/readme_eng.txt @@ -0,0 +1,15 @@ +The tool pe2kos is written by Rabid Rabbit and slightly rectified by me, +diamond. It is used in projects xonix and fara (the author is Rabid Rabbit), +written in Visual C++, at last step after a compilation, when it is needed +to get from a program in the Windows-exe format a true Kolibri-program. +The tool only converts the format of executable, so to get working program +one must satisfy to certain conditions. Of course, a program must +communicate with the outer world by Kolibri facilities (i.e. int 0x40) +and must not use any Windows-libraries. In addition program is required +to be placed on zero address (linker option "/base:0"). How to write +such programs - look to already mentioned projects xonix and fara. +There is two versions of the tool: for programs which use path to executable +file (last dword in MENUET01-header), and others. +Select wanted version. +Usage: (in command line) "pe2kos ". +For example, "pe2kos xonix.exe xonix". \ No newline at end of file diff --git a/contrib/sdk/sources/pe2kos/readme_rus.txt b/contrib/sdk/sources/pe2kos/readme_rus.txt new file mode 100644 index 0000000000..bd36afa652 --- /dev/null +++ b/contrib/sdk/sources/pe2kos/readme_rus.txt @@ -0,0 +1,16 @@ +Утилита pe2kos написана by Rabid Rabbit и немного подправлена мной, +diamond'ом. Она используется в проектах xonix и fara (автор - Rabid Rabbit), +написанных на Visual C++, на завершающем шаге после компиляции, когда +требуется по программе в формате Windows-exe получить настоящую +Kolibri-программу. Утилита всего лишь изменяет формат exe-шника, так что, +чтобы действительно получилась работающая программа, нужно выполнение +определённых условий. Понятно, что требуется, чтобы программа общалась +с внешним миром средствами Колибри (т.е. int 0x40) и не использовала +никаких Windows-библиотек. Помимо этого, требуется также, чтобы программа +размещалась по нулевому адресу (ключ линкера "/base:0"). Как писать такие +программы - смотрите в уже упомянутых проектах xonix и fara. +Есть две версии программы, для программ, использующих путь к исполняемому +файлу (последнее слово в MENUET01-заголовке), и остальных. +Выберите нужную версию. +Использование: (в командной строке) "pe2kos <файл-источник> <файл-приёмник>". +Например, "pe2kos xonix.exe xonix". \ No newline at end of file diff --git a/programs/games/fara/trunk/Release/pe2kos.exe b/programs/games/fara/trunk/Release/pe2kos.exe deleted file mode 100644 index 139e746398e5b696be39dded15b36d3de38b324e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13312 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 N@csXx|93O+zW{zRzq9}V diff --git a/programs/games/rforces/trunk/pe2kos.exe b/programs/games/rforces/trunk/pe2kos.exe deleted file mode 100644 index bef0e7ce2dc89dcc6c3a8675f0b1892a10205e2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13312 zcmeHucT|&2w{Lnv3JJYKsDf0b8%pRPpcF~yy%PvR0!R%6ln^7>(AV~Yh+;uel&U~L z0ULsiCQVV%&{Tvdfn0pQ@2qvsS!dmK|GM{|yVsgMGr!rhpFOjlHP5VPe&ZQf0RRI4 z0LWGn3ITwYt^AJ=|Iz<@#n@^VRcR9i+!cAQ+5+@=uDUNiAswHZMvY60NXAD+q@+-3 z_{bQ18a)M{kb-yI>x)mOM#mUnFi4GmyY_Md06c(TKrnsW@jsq64Zs3XKo|gEw1wcd zQYrvYadRtYY^8>+^e4JMIOtz-|3Uu5|BrNS=|62-@@HKCRQ{=Nsej}D&i-lrW_wK zZ9LjcKcwxK2=XQ0gu(&7<4tny81@|25B421(&;B`evv;2Lt3+QtSn5x>#=MXSZqm` za6D%{!&p-&yu!J~ufJze=A>bTr$Ma9@yTmMI*Md5w5e<;CwIGKHHY~~+f|kRj;2Y9 zc|I9g0EKLja^e$(q`c>o&(F(zsE(kk${NI;>ZugLE7GQHZ!H%nu)Vw$&$G$eB-TDt z>G8JFf)hrZ5&-T3n3xOgPj37iD9Xg_3E)g3#5zzWi5gyY++(EMcK*r+CLx9u0AWG( zH$V2gH&`JLjlGqJV>=;Od4dw*H|lsZ3(lUR!}Y$Hffm?w$=J19dF>Cx(LkD%v#f$7 z58ekkm^prsdIeoLgP5S{$U!>Q2qXOVf)DKVGRdbv%fQWC~ZH5D+~?V+qBY zKO&K$M8{kNz6~%IKJ1*>m@o~fW6t-{Y)apcio*iY7jdzI`4l zIUoi$etZkNkn%xzlIzCi@-ThS!x`_TuQL0E)k^Z4Z9TdW?ehUWRV|6sg7(*<(uM4h zZ^o+xr7pGsmMMjyhNX_1u%B}IH8Uz~Mw$6L6jgfFv7d@9{^cP;@{KcYiJ&IGk>S}s ztE>P?z6I;@s~57UEBVxTYTUALGN?)LWK|L^#@H!QF6ol=c6kJSjKI$$dg*LmED!0f zL%7NEhMCqCqq=uL&qL|R_m~0wRL}IrUfX~G9x>0R19#ME>L=&BgpW`t1qqj1UYk@{ z9j#2Jg7+{t)ukMj0Nuy)Zq)=^BVMq3!}f+{pH>uEX4^xAyCL?Y%fc)XHWJ$ev|}NA ze8QyNSG`IHca^N}f1KKBtWlGD>X&uTsxyX28*kYt#Ud7RNKn}ZPdD%d;$X<`Wy_-pCr;8fsiE3=XB@HGv*vzLwBW5gQ z1Qs?_eO3zX-*zOLyv#pn9vGEiX<9Xr?^#`(Ju+gHEDdQ$&UB69Uh?mJchiW81Jbcx zMesXK8+l3&Jb5VqT|yN^k!LIEZqPv}ez8YxqeZGJj}bxZ8^DB5ylD#QdBGK9c_J_i zb~k5X!)P9uy=_~;+i->LSam`_`-R7Y6xU z-R`}nvLHhP36H#;8rQm}O!UJVa9Tl}8^p^}A53>Ba>F82l zkgg5yBks%Pt055xd8>d(q2b}=Ui2Cwft`u741=)fD|z4?+4_4dxQ)I(+>t9ejmv&--S?c&baeUA*DdCus5h>vCV98fMi6JyhqHyFkH zn?&z!3&^6HMzb{Gzj3UXxt)T8qdsVjvezuBOBL;56t9=#LL{aN!=1UkNkQ#=f;=~e zt2vz&1JBHiP{#)xMkFd0i+prHS3eaakdln9LWmOCiz5YC)x{b{hKNcvL|J~~-Qvrv z>bnv(Es!UsH)P&5K8Hc;Gyzu45wl*E(gwNP4E*NV;UXo|)ZzVlQcBTx*$wn*=(~|=(Yz)lh#|+-Qq*78Eh9qCq-_r*|1=46g8SX4#hAG+{k_jV zQ^{tK%ZV2Z;*4q@LQ^9fo67@qY;@Z%nrF!WB@=_IH>_!+=jtMwe8|0yKtdUko@(shte zeV9Q)l`@f(`|#x{PBN=kj5tNS#W|^?+xYV4!zYD;Te;7|2_=7B#gLs=o?`$>J5kjA zLKCAOk}(cx=!q)Y3b6UFT$DuCcnDNY6PH%j%9a>Dbtd39`zSvw5$caH6nBrLdj#jd zik~uN^&AoB^>I8`#{YVHX5rp7*_{#Zr?LOI&%<6?_BA-^-7gnrOhMQrh8@Y0tXJq47pu+Rv+of(e@$5o62s z#(Zp1R>fLh@E2i8XPG4T3yAqX?-wFX=SQtjbo9)){8=c7gb3)ZJReQz3x39N(>)d! z(5ndqfi4p}7AY0#&Z;i9hcENm7O^lv`U-d+KKr~g;mo_&&)AMfW?7EqvvVe%uT19V z=a-jXZIxD5_kc6RuL;+5b8Emu`!)UPZr@*)Sb7 z2gae3!Mi4p-D=I6!7q>D>^JyGLdXt3+WW=g5jGi|HtL8clT z^DI7MRT#iTKJ6*Az z2)BqE?8^SeJe~h3JW6+hpL=B=lM7it1Zz(3#alshAMqSIOtmA-x-jzFb2DE|x~Ske z=m&xOSU{2_BfMbETw-HyFA<7li-myS^5(dop+*NzzhO^33n4vPh29DFVOs5AnpMh1 zwbr_(0#)c2=kC9eKIMyZwRL^yo469-Ke@XS@{)zdo%+}ympywY`N!fypQigezQJUPe z$`Tu$c$M;S-jO@X?FQ&ZJEYp^8yvb6WF5%aSLPv+tNRAbYP2cicAWY$wLemmQT>Jv zWy}=tFohA$!c*`3av6^qYarO4PX^D%G6y1txB;2~+1;Z2(I&j8x!z`H?8=CL%F z=_gR>7FF?I%-@Cjf1yrP0cS>(;JK*g5*O*;r@7OgxiB0`&S>z-^XDe(k3br@I%i``JeOgBpWe zP==*xRGv@gLyz+N*zdPzELd<(sjL~i7o;jXhArf-H){6g&bC3^a@%<@wn){ZdP(|F zzH=Yr5NFp_vvj~EgFSUg`;7UudT{0SqeGb2>=*ahC>FwSlzRVesVl>Y*<-nx+h#mI zUxKO^T8#)fCL?suApoRsMyV31P~_jX&viJt(4(32)8E8QnBE*^GAcukMfbC8%0To3 zNq1kv7;eM~B$$p|tDQLZ8vNAe+vzJj(R`c8L zuOtHRI0YFuzs!OOGh{&sK5Ip|40WP-$FWK1)$Ss?$;3z#Qt`ttoaAY)@I~6JKh)}h z)r-!u`k=%wdm&-SB9$V+Kn8`YlVVYrUmUpSktCdeWc`A zkR$j}>*-(o^&@H5z8b%5O;zk>e=q*TS!}?-mZQ-04!d;bxQNgQZx0_#eeJ*;w%rds z!LWXI&5Fxfz(pGEHD+g#PY;+zIURY_yDzZF695jDh`0j?YR)h7YU-A`5TQ%`$&BHD z$wMrdEM?$_TJ@>xasROk_(xinQarWYv*I)Mn`*v`9waCe&TE-*k5Up*8 z{k*xvxLr)C+WM-1+ZrO{+^>+8X{uw~@y&zsccjc;0EKJl9Y zOMya(K)E?L%Nw$)i&JKf#26S80pf-B!Z9w6^Y>dvdFfAeUkej~gAIe8Fr)Bh zUvPKJuGvT!U74&@Xhh~H>SfV0-`f3PZRjc~!ohd%WL0;Cj`)6BCJmkK=gvBs9U)kk z!rsZn94vQS(@>D_`eF2U0$F;!Vvc6jDV+$Cj{EXGqpngVfbd9>eCKi{PRsRx#@#W| z!qOREWRD6waZW-D1%!?&?3`lSgTA2H6S}=HoFxFR<;-b9yO$|(^^HG z2S9^?W&JL@dX!Yn6qp|fug+mR#!<=Chx~m7HsOxCG$)8$&h6xri`MkgFf*EsvSY+w(g01qc`G+-^tAsJ;b|V^AjVAognXBzZZ|$mi!#7C%c-_%r0U+Y(CYxLcB1<`e;6EHm-QL_3;vOYtB}YSfpWHe(r61Yyb`UejGQi2gP0h~)KE3l5p=aKJEHTn-K5d*EkQo5pFsDBb5f+=|yIfmj zDWO=(#%8?7`i2j$iUw&s0Lr(LJEnCfFU6Y89SoB4N~yl6gZ$a|P-D|V_U*4ZiRBEw z7g*rstBBuKc`*5C^+@S!g6vp>+wj|JgyFV**LoH;4tkMH1$=licDq*XxthzB3F%s% zr#)oTxLvrMO{OY`!>&JMwLy2H>SF(7}eaRs;x+4&X+OT&Q{8pps6o+V1U#=EK z9C(QFZ*hUpJ_2W8Wsi;=e(*!unTUGB8$i#mn#tdIqllpw3 zQ%<&2**OMJ6A?j((4QSKHPa4vjoKY647q1-kh{7^f7(7T%-B&Ex(y6v7yflyrvJX0 z)WBPkFX$YiWTn&awp#EGq62U3nBHm+kgj=eRR;Yj8N=n#+n%AG9ga50H0EbWB_JKuJv|6p9%J(gQb`gB~Q%$ByRs||GIv4ghU zd;B@02$+fjmRO86F$YTl!&SA6no`@%u%h^tKIk^*tF7`!B!%m)Zt>-|%hj`)Ahv#V zxaZK&h?%^Iu#OISBU+#T;x3BTp}N4+4j*{deKee~F7s6Z)Dt`zb6M>vlV4Kk5NJMr z18uvlJJwS9xBK4@CU`_5LYDpu_FcEvFt~omEMw0Q{|FHj0{-Go1vZ-qhfN7Q+RmMI z3n0Bwn!2K2oz|J8_Zph2XGMdWtvx?)3l?F6Nf-P-jgf78c)njfYD;e4)jsJe4BtMs znT&a6k+Tk2)$JoD`sq&~-3P9%^H6Q13-#6Hv-)J~eZ6Pc;461qKOoLAWb}`}l#x*n z(RgJt0$HB*FR{+wz3*R570VB-Q+pm=D>{BtFYnk&EH(0NZUZVSfw}KXkC5 zX3Y))+tHG`s5==`WHOIqfm$~5;3maG?776vc!n|U_($jaLQ{Yo{saT2%)ZEVKr6ouOG#+)u!ncT+l&ZXvVx_CSgsNa~Uu~WDY!7ChSUF(T1hdTT`{4qLA z;nZXpw(tNX{u$f*mk&7e)=#vhH-dV$%)6b!7&CiK;UN)XEO(FtN!T2wo`env>W+K% zjO4J>$lt-pNTqb)w>jdsfE|KHuMuYx^|J@{v|-{;-v%4ZCflf{=Xf_kI}qH6dl|RO zhbG3TcSwGmBwQUTB-9SoDoLZljkByYefjFaDc2)Ilt^d`gjurbC^C7nJgwYtCb-!T zO+XmQcbD_3vr8g7TgG{ck2`~Lk;hMJ*@j4;m|s;GyH8;2u*wpCg|0m9XZDm z=NB%dg-6A?;mGL2N|aCe{i%nAO~tRI#q40|-{Nt?ZLSY1zm8k<1?YwGv@UUs8qPX` zRm_ec5?9Dkul;#mzM&k6GD+3XCr``l-Vkf)V%eo>yP;<~7~P1z_DV6d_Wg7126mFN z;%#r-i%9R1BOv#Ocd9zQN(0|v-zZ~%jyBIsqfHhb$VdQr2?t|Jm@ zN)U}q*@B6noz*6gHw5E% z%JLLgIVDm20HRW zRt_%9&xo5uN{j&M1=@S>`xQVEZQa6Hr(R@$wLL7x5=$gJ!A7n(I)AnsV)5yUoo5)Y zmN*{3Ps6IY4UP|nQdpaDx^z`bJtlWrUG!6tvcBs51~bj!UFS7mEN>Qw(%Y2l$3j97 zV3j1H&*A~Z;oDpxWG_=_n{)7L(#OcKH)l`H6U35krc~MMW{Fj|wfh+6@ZAFCE@wbl zKc19qzI$t@uuilg{Lat}x(;dn-APMQ{?_4bwR30qgSM|PRrf`3)lP{iKhS?G{{5xu z2@jvnz<_}!w~pN?2to{~r#EzTdj5?_Nq5xM{7%+U|2t=RlMTOgP+BZQ(Q(6|Q7Gcn z?x->kIAjSgOqtp!^~7#+OHt{Xj6AHfXnQI9#Vg+Y_~VQW5jhOU@wSL8Pe)@hVBY8M z-f20_00`FHDg$x8xLL%4z0YZx72lT4k`I*-2qS)1Taqv<8GENvDA^%(sx8*3;bK@n zbi0WW5ndGEAPJ9H_2^UCsVL&rxOV6PLe!FoV_qtyXw2BhWnwp79gwc90}c{FO6@0+ zkWDdWmO6bc5d4bbi<=A-7kQ%|;f?#Y;uVkU+5Fyg>{Osd)6;%!-Tq@@rX1Id>FHrf z@1R}5MRP(-ll-j}!(}zoamkWBwZoOWMm-v_7MCV8UGMJ47_uNIjLLI)mhQTnE$*3+0*bE5el!r*Jw3G5NVQ~@Gg zj_rP*OO=@+sOze4qF&I^J(7f9`OQgZWYa#w=?BM}U7F6xMS%SI&uMfr3Y_EC#E z#ox_|C5&=)OVlv!3%eoKH1X7vgkXPvX37W83=i_abZqnMPC_C+I;`YzE_7(dC4r6K zPaaO*_sapPTktK1y9s&M@54VgV(^(3=U)AoFZ{5m zZ(i!i0&imJUmw9<8hXvEqIf%GbW<0kYfe`0RF%^)8}LSuPV1GZA!mvuMa&bQ>QC$oXCYZ&!JPw5GtCd^%itk3 zp!iO~-)vFUq!s=G=K$7*E>BSUuIA3I61z&c1WWR{WtEJU6&7bhFc@!AKFbLoLrhXu|_uwjU8Fe%po=-Ij4|V^h8F$OkaFrN@SpZwxJ@Kysx|Bx3v*smpWz>Zx4e!tjhu?E5 zG#UVx?+1&1eb>uaE^@;9mjF9_f|-!WHoU~47mA0nRy~DZPwA2SoMzE+A#*elZm&b5 zl+a0tKN5lb3C?YFxv-1JO%u~o{XLCczcI2TJ1iyXa$y1uF5e*s9&MJ`VzkM%VZFzsU zv{~6J1W<3e6Fz+_`_~bO`jbvte}O43O(sUv&9Ovb{8ROWk+d`Le`1FP=}u--n$32c_BKL1X>Z* zz{>6)9ULp|C0R3P)vY0%i$IbnqcU_FFx*5FC;8~99sROL0qL6mwc4nq zp{J0@6S<7w)O*?f7LN$PYW)yOFZ*|)fj*^9D8DK%8PIo>tLC>1V4zvne%dM@L`(5- z9h6quvVvvf+~o^HasG7+t29rZt(gSiuEZ(d_n>Xpi|EqD67ogL7ez;w_nntNEz-MR ze0*<}t}^(E{DpuXIj;Eg{VlNv_M>DSXHnlhj3D@1A|2Bg$9xhwmox@8pu(@h1o9de zj4T7%DF|K|@Mr{4`ZqSPO}M%FW3XfBVF`1$akuYPLtr6ou2p)mXWu50fhsv&)Gtm2ruDTUsl+$ivJ0h&wwU zuAh>?7E78j+N{;*SnQl9!)!p>Be+at1hmZ3J=$S6RY$;W+>`D_e>ccbwK4(bGdDUf4t9umlHSQ2^JX|ap>F%gIwcWIDM2sP*=FF56aUk^9DMWG(E^`SIF+mlq8oOW8e`L&cvhDC7lu( zKke)omj17qY0I#?AcQX@jcbWrIu-P{$3=u!%?;F(#ifZwPSasRClOm)8&K0;%kv`| zhquWS>8^>@((Nc41krjp?HkEbFX`3;%03?KH>%syXxUleI-t-}iQj&WIWc_7Xai!d zr40_{K^py-1XY{Xlk$F>;qLrQq2^)9)&{Y}4aw3Y`svg;Y_&#&oSXioN zLS~fHFWuj6*MbMIM-8DRB)j6t_#fBo2mJ)A_GR`$6Z&9SP$KyEy^+RYrYR@ei$h{f z$*qg&*iNf&D3R3LN28TVChFEl1;CtC&G@KoUcXa<`huTuIBBth0^1q!yEN(FxUv(_ z=+cVt%srE4JVkjB4TlfHaC&oi9~f1Ng;s#hsP>3%o|}}WU78#u@LH66p1*rPg9|Tp zQ!(FWNL7kRlgQ2##ec!`F5)H{rag9dd@nzOesc(TBhmQ~GHu4>bAX_qjW?Q`c_GNO zkAD|+;e?3In0HPb+q5xfFsknDh2$_*k`C>67cTzBd%CRvUITdjwgv*LMq$8r=Tf8- zciuM^TN4E1xxSLUOHl;U_NkF;Re7 zq*HmSWiV&o=PDlpT-0<_=sYytoB4s=7Elc~!YdgX?lZ~oLI;JG|5YD1?N+#JZ&_38 z@kOy+ixgRd-`hvjj0&@cqi(@|RY;7%q?x^w)^e8;^pw%`UeCC?4ojYF;d^-zQNY^^ zI%+uIZ+;8A?~fxPEO;2NfnMUGK|ECRth~)h+y+fo{EwtvG8gNu{@oDI?_(ZTM2IWPd_b?)L-o@>ip;AhkB<@U;H0HWuzN5;gG zm8*wdg+D3_T;)-C-=0xU^kkOUixNG9R?ftZ(hCG&h$mW75eT}QpkeM=ewnuiq2dMg z2gk<)5res&<^9mK8@HCD6p5J=*J##y$LP-F(tRz4`-6Pr=ZzZkgQD4psxBpUo|@FJ zXC(Zb!a0YP^KB+-z~wuuK44#HhK%VyUVv$G zv(vkSZ!|l0SYZE-6*4VOUy8(>ypuOYyGx3my_dLnB93;hym9nlGN}%1eONmlf6tS# zbmC30;qCpkYW6atz5DCl!j?ZF*p4L5Zefl^K{KTJBKVuz+z+&+?Ae@9I#gGg*}Vr5 zZM71OkgYblJ8q6{0K#ou3qzs5mdqboHN z^=WqlW0-6V5o=K@A6!`AngVZ zfAX_)*qQL7JQQ=>cy(0#9&k*@m=rcQbL^g?pATPok3)p+ow}dT{u+&UeU?oFAVln- zOC5jVg|%`-Kr48Qrb>(L6bKWNWAHI)Y1A}40DwX6^VsX_D|Sz%LMRIGb=%_taNO%@ zC;o9^^^};8nbA%Qgg)LqB9an2)v-aNZqZy5ND-8TY)pJiM5_5_(E6`!=36XSYY06q z9-p2X5jDe(L!o9SSVX|6vpTbPQq0ZLY0(SKe;1mj($jP^64GdN)yQ#bl5uU6 zIz9?b(H>7m{t7b*+a8k@Y`AB2EXg1C?tRz}%l5PD-D}j;82=sVRBUw2y~m8?^e9~m zXRvB_y+&b7v>bV1wIWyDJef|pL5uISmwntEVMw7yCCQjJW138&n*~y=bBqjhEpn8**CNv5=-TOFMmuAQvtw|BAHt8i%GE;06Tw-V*5j*YTZlf|m88Kcr>8TP} zGGADqd@@?=P)vGyL|lwLHOme_PnSC;AEs%%(;#}g?Vbz4`6*YysDQm8dndg1NjV44 zcuj?+UG**4CcNdUp-mJt+iGU&Mgr0zB|M$>_&Mz}+Hvd+i|>Fh4BN9BQ$K51l}&^L zfnt{^U9Pym2PZM}#cC?x)(}Sq0E+5D5n%~1B}gSKx+0c?I8si8MH4HII&Njhjx$Y^ zJhkDA$isNjPrwK0ak*FcC{)6kSi(vqT%;d)>2kuE%eX8tS8>lq${7s_euQk7+#ia= zY58yk?M6!5uwpbkYdQRY_ZD4aI(ty?%yrvYbY|cEaOos1%oM5*4%sWKaB2P81nh$d z8omUTyMz$wR9Jl=Q-LBA;8^m5wMo>J#MC$#&%}I}Q8mTdF)?QS4qnDSGQJqIk#IOU zEFg#C`HIGrNxqIxRZPRIKEU@GG8zlb`oo#{g*%x#D$GX!rkzq14V0q%Tw^`+Owah_7?s{(WyBMSBOb?4m!3=(` zG>p^t@{MV00@5>GNzSV2z8g^EFkf19TQ>LS}?Vd z>Xs5qz2Quur^j2{(_>@r}D_c#-Idy42gk z3+b_j)uEo$XgcL%G;wNXPeiilZKp`&IHM^)O*>t7u(>IMye%R6L1fxKs%O)kQBMu~ z1GH8>>E`ZH9J$@m2}?aNr)w97b}(@vwdUFD>AU#QD96;o#`Q=yt`dh#?RuVUenWHQy_$n(qMlhqT(cd9 zya(ls8SNRf!;-0+cAK{UnScKuy!#iu0ECgmN7;AtesNymf1$vm2R%Wb;W8ET6mg>~ zXdIm3;M{OQG8%<*KIuMprRi7UjRs`{T1*zr#I7RQU>?Q8IpGb`iXT76Y5Ts0gZ1AA zH-U%-TH8DxpWX48IR{R|aHkPly_w5G z8jbbnKifb4FBLl8?!VOkn=>XCRJZ~7Arvx)fE-Cf=7t~xTL!Y<3d)VX_9aRv6jrc7 z%P?SgE~LKDp%%(M5a5 z`bBpAe$!7_ska4gnZsFNW)FlnBdj#q0wTTu6aL)l_&*bit$PF7f9?+a58}9m`)sAi zf493k`RsA>*jjrXJv_E(AV~Yh+;uel&U~L z0ULsiCQVV%&{Tvdfn0pQ@2qvsS!dmK|GM{|yVsgMGr!rhpFOjlHP5VPe&ZQf0RRI4 z0LWGn3ITwYt^AJ=|Iz<@#n@^VRcR9i+!cAQ+5+@=uDUNiAswHZMvY60NXAD+q@+-3 z_{bQ18a)M{kb-yI>x)mOM#mUnFi4GmyY_Md06c(TKrnsW@jsq64Zs3XKo|gEw1wcd zQYrvYadRtYY^8>+^e4JMIOtz-|3Uu5|BrNS=|62-@@HKCRQ{=Nsej}D&i-lrW_wK zZ9LjcKcwxK2=XQ0gu(&7<4tny81@|25B421(&;B`evv;2Lt3+QtSn5x>#=MXSZqm` za6D%{!&p-&yu!J~ufJze=A>bTr$Ma9@yTmMI*Md5w5e<;CwIGKHHY~~+f|kRj;2Y9 zc|I9g0EKLja^e$(q`c>o&(F(zsE(kk${NI;>ZugLE7GQHZ!H%nu)Vw$&$G$eB-TDt z>G8JFf)hrZ5&-T3n3xOgPj37iD9Xg_3E)g3#5zzWi5gyY++(EMcK*r+CLx9u0AWG( zH$V2gH&`JLjlGqJV>=;Od4dw*H|lsZ3(lUR!}Y$Hffm?w$=J19dF>Cx(LkD%v#f$7 z58ekkm^prsdIeoLgP5S{$U!>Q2qXOVf)DKVGRdbv%fQWC~ZH5D+~?V+qBY zKO&K$M8{kNz6~%IKJ1*>m@o~fW6t-{Y)apcio*iY7jdzI`4l zIUoi$etZkNkn%xzlIzCi@-ThS!x`_TuQL0E)k^Z4Z9TdW?ehUWRV|6sg7(*<(uM4h zZ^o+xr7pGsmMMjyhNX_1u%B}IH8Uz~Mw$6L6jgfFv7d@9{^cP;@{KcYiJ&IGk>S}s ztE>P?z6I;@s~57UEBVxTYTUALGN?)LWK|L^#@H!QF6ol=c6kJSjKI$$dg*LmED!0f zL%7NEhMCqCqq=uL&qL|R_m~0wRL}IrUfX~G9x>0R19#ME>L=&BgpW`t1qqj1UYk@{ z9j#2Jg7+{t)ukMj0Nuy)Zq)=^BVMq3!}f+{pH>uEX4^xAyCL?Y%fc)XHWJ$ev|}NA ze8QyNSG`IHca^N}f1KKBtWlGD>X&uTsxyX28*kYt#Ud7RNKn}ZPdD%d;$X<`Wy_-pCr;8fsiE3=XB@HGv*vzLwBW5gQ z1Qs?_eO3zX-*zOLyv#pn9vGEiX<9Xr?^#`(Ju+gHEDdQ$&UB69Uh?mJchiW81Jbcx zMesXK8+l3&Jb5VqT|yN^k!LIEZqPv}ez8YxqeZGJj}bxZ8^DB5ylD#QdBGK9c_J_i zb~k5X!)P9uy=_~;+i->LSam`_`-R7Y6xU z-R`}nvLHhP36H#;8rQm}O!UJVa9Tl}8^p^}A53>Ba>F82l zkgg5yBks%Pt055xd8>d(q2b}=Ui2Cwft`u741=)fD|z4?+4_4dxQ)I(+>t9ejmv&--S?c&baeUA*DdCus5h>vCV98fMi6JyhqHyFkH zn?&z!3&^6HMzb{Gzj3UXxt)T8qdsVjvezuBOBL;56t9=#LL{aN!=1UkNkQ#=f;=~e zt2vz&1JBHiP{#)xMkFd0i+prHS3eaakdln9LWmOCiz5YC)x{b{hKNcvL|J~~-Qvrv z>bnv(Es!UsH)P&5K8Hc;Gyzu45wl*E(gwNP4E*NV;UXo|)ZzVlQcBTx*$wn*=(~|=(Yz)lh#|+-Qq*78Eh9qCq-_r*|1=46g8SX4#hAG+{k_jV zQ^{tK%ZV2Z;*4q@LQ^9fo67@qY;@Z%nrF!WB@=_IH>_!+=jtMwe8|0yKtdUko@(shte zeV9Q)l`@f(`|#x{PBN=kj5tNS#W|^?+xYV4!zYD;Te;7|2_=7B#gLs=o?`$>J5kjA zLKCAOk}(cx=!q)Y3b6UFT$DuCcnDNY6PH%j%9a>Dbtd39`zSvw5$caH6nBrLdj#jd zik~uN^&AoB^>I8`#{YVHX5rp7*_{#Zr?LOI&%<6?_BA-^-7gnrOhMQrh8@Y0tXJq47pu+Rv+of(e@$5o62s z#(Zp1R>fLh@E2i8XPG4T3yAqX?-wFX=SQtjbo9)){8=c7gb3)ZJReQz3x39N(>)d! z(5ndqfi4p}7AY0#&Z;i9hcENm7O^lv`U-d+KKr~g;mo_&&)AMfW?7EqvvVe%uT19V z=a-jXZIxD5_kc6RuL;+5b8Emu`!)UPZr@*)Sb7 z2gae3!Mi4p-D=I6!7q>D>^JyGLdXt3+WW=g5jGi|HtL8clT z^DI7MRT#iTKJ6*Az z2)BqE?8^SeJe~h3JW6+hpL=B=lM7it1Zz(3#alshAMqSIOtmA-x-jzFb2DE|x~Ske z=m&xOSU{2_BfMbETw-HyFA<7li-myS^5(dop+*NzzhO^33n4vPh29DFVOs5AnpMh1 zwbr_(0#)c2=kC9eKIMyZwRL^yo469-Ke@XS@{)zdo%+}ympywY`N!fypQigezQJUPe z$`Tu$c$M;S-jO@X?FQ&ZJEYp^8yvb6WF5%aSLPv+tNRAbYP2cicAWY$wLemmQT>Jv zWy}=tFohA$!c*`3av6^qYarO4PX^D%G6y1txB;2~+1;Z2(I&j8x!z`H?8=CL%F z=_gR>7FF?I%-@Cjf1yrP0cS>(;JK*g5*O*;r@7OgxiB0`&S>z-^XDe(k3br@I%i``JeOgBpWe zP==*xRGv@gLyz+N*zdPzELd<(sjL~i7o;jXhArf-H){6g&bC3^a@%<@wn){ZdP(|F zzH=Yr5NFp_vvj~EgFSUg`;7UudT{0SqeGb2>=*ahC>FwSlzRVesVl>Y*<-nx+h#mI zUxKO^T8#)fCL?suApoRsMyV31P~_jX&viJt(4(32)8E8QnBE*^GAcukMfbC8%0To3 zNq1kv7;eM~B$$p|tDQLZ8vNAe+vzJj(R`c8L zuOtHRI0YFuzs!OOGh{&sK5Ip|40WP-$FWK1)$Ss?$;3z#Qt`ttoaAY)@I~6JKh)}h z)r-!u`k=%wdm&-SB9$V+Kn8`YlVVYrUmUpSktCdeWc`A zkR$j}>*-(o^&@H5z8b%5O;zk>e=q*TS!}?-mZQ-04!d;bxQNgQZx0_#eeJ*;w%rds z!LWXI&5Fxfz(pGEHD+g#PY;+zIURY_yDzZF695jDh`0j?YR)h7YU-A`5TQ%`$&BHD z$wMrdEM?$_TJ@>xasROk_(xinQarWYv*I)Mn`*v`9waCe&TE-*k5Up*8 z{k*xvxLr)C+WM-1+ZrO{+^>+8X{uw~@y&zsccjc;0EKJl9Y zOMya(K)E?L%Nw$)i&JKf#26S80pf-B!Z9w6^Y>dvdFfAeUkej~gAIe8Fr)Bh zUvPKJuGvT!U74&@Xhh~H>SfV0-`f3PZRjc~!ohd%WL0;Cj`)6BCJmkK=gvBs9U)kk z!rsZn94vQS(@>D_`eF2U0$F;!Vvc6jDV+$Cj{EXGqpngVfbd9>eCKi{PRsRx#@#W| z!qOREWRD6waZW-D1%!?&?3`lSgTA2H6S}=HoFxFR<;-b9yO$|(^^HG z2S9^?W&JL@dX!Yn6qp|fug+mR#!<=Chx~m7HsOxCG$)8$&h6xri`MkgFf*EsvSY+w(g01qc`G+-^tAsJ;b|V^AjVAognXBzZZ|$mi!#7C%c-_%r0U+Y(CYxLcB1<`e;6EHm-QL_3;vOYtB}YSfpWHe(r61Yyb`UejGQi2gP0h~)KE3l5p=aKJEHTn-K5d*EkQo5pFsDBb5f+=|yIfmj zDWO=(#%8?7`i2j$iUw&s0Lr(LJEnCfFU6Y89SoB4N~yl6gZ$a|P-D|V_U*4ZiRBEw z7g*rstBBuKc`*5C^+@S!g6vp>+wj|JgyFV**LoH;4tkMH1$=licDq*XxthzB3F%s% zr#)oTxLvrMO{OY`!>&JMwLy2H>SF(7}eaRs;x+4&X+OT&Q{8pps6o+V1U#=EK z9C(QFZ*hUpJ_2W8Wsi;=e(*!unTUGB8$i#mn#tdIqllpw3 zQ%<&2**OMJ6A?j((4QSKHPa4vjoKY647q1-kh{7^f7(7T%-B&Ex(y6v7yflyrvJX0 z)WBPkFX$YiWTn&awp#EGq62U3nBHm+kgj=eRR;Yj8N=n#+n%AG9ga50H0EbWB_JKuJv|6p9%J(gQb`gB~Q%$ByRs||GIv4ghU zd;B@02$+fjmRO86F$YTl!&SA6no`@%u%h^tKIk^*tF7`!B!%m)Zt>-|%hj`)Ahv#V zxaZK&h?%^Iu#OISBU+#T;x3BTp}N4+4j*{deKee~F7s6Z)Dt`zb6M>vlV4Kk5NJMr z18uvlJJwS9xBK4@CU`_5LYDpu_FcEvFt~omEMw0Q{|FHj0{-Go1vZ-qhfN7Q+RmMI z3n0Bwn!2K2oz|J8_Zph2XGMdWtvx?)3l?F6Nf-P-jgf78c)njfYD;e4)jsJe4BtMs znT&a6k+Tk2)$JoD`sq&~-3P9%^H6Q13-#6Hv-)J~eZ6Pc;461qKOoLAWb}`}l#x*n z(RgJt0$HB*FR{+wz3*R570VB-Q+pm=D>{BtFYnk&EH(0NZUZVSfw}KXkC5 zX3Y))+tHG`s5==`WHOIqfm$~5;3maG?776vc!n|U_($jaLQ{Yo{saT2%)ZEVKr6ouOG#+)u!ncT+l&ZXvVx_CSgsNa~Uu~WDY!7ChSUF(T1hdTT`{4qLA z;nZXpw(tNX{u$f*mk&7e)=#vhH-dV$%)6b!7&CiK;UN)XEO(FtN!T2wo`env>W+K% zjO4J>$lt-pNTqb)w>jdsfE|KHuMuYx^|J@{v|-{;-v%4ZCflf{=Xf_kI}qH6dl|RO zhbG3TcSwGmBwQUTB-9SoDoLZljkByYefjFaDc2)Ilt^d`gjurbC^C7nJgwYtCb-!T zO+XmQcbD_3vr8g7TgG{ck2`~Lk;hMJ*@j4;m|s;GyH8;2u*wpCg|0m9XZDm z=NB%dg-6A?;mGL2N|aCe{i%nAO~tRI#q40|-{Nt?ZLSY1zm8k<1?YwGv@UUs8qPX` zRm_ec5?9Dkul;#mzM&k6GD+3XCr``l-Vkf)V%eo>yP;<~7~P1z_DV6d_Wg7126mFN z;%#r-i%9R1BOv#Ocd9zQN(0|v-zZ~%jyBIsqfHhb$VdQr2?t|Jm@ zN)U}q*@B6noz*6gHw5E% z%JLLgIVDm20HRW zRt_%9&xo5uN{j&M1=@S>`xQVEZQa6Hr(R@$wLL7x5=$gJ!A7n(I)AnsV)5yUoo5)Y zmN*{3Ps6IY4UP|nQdpaDx^z`bJtlWrUG!6tvcBs51~bj!UFS7mEN>Qw(%Y2l$3j97 zV3j1H&*A~Z;oDpxWG_=_n{)7L(#OcKH)l`H6U35krc~MMW{Fj|wfh+6@ZAFCE@wbl zKc19qzI$t@uuilg{Lat}x(;dn-APMQ{?_4bwR30qgSM|PRrf`3)lP{iKhS?G{{5xu z2@jvnz<_}!w~pN?2to{~r#EzTdj5?_Nq5xM{7%+U|2t=RlMTOgP+BZQ(Q(6|Q7Gcn z?x->kIAjSgOqtp!^~7#+OHt{Xj6AHfXnQI9#Vg+Y_~VQW5jhOU@wSL8Pe)@hVBY8M z-f20_00`FHDg$x8xLL%4z0YZx72lT4k`I*-2qS)1Taqv<8GENvDA^%(sx8*3;bK@n zbi0WW5ndGEAPJ9H_2^UCsVL&rxOV6PLe!FoV_qtyXw2BhWnwp79gwc90}c{FO6@0+ zkWDdWmO6bc5d4bbi<=A-7kQ%|;f?#Y;uVkU+5Fyg>{Osd)6;%!-Tq@@rX1Id>FHrf z@1R}5MRP(-ll-j}!(}zoamkWBwZoOWMm-v_7MCV8UGMJ47_uNIjLLI)mhQTnE$*3+0*bE5el!r*Jw3G5NVQ~@Gg zj_rP*OO=@+sOze4qF&I^J(7f9`OQgZWYa#w=?BM}U7F6xMS%SI&uMfr3Y_EC#E z#ox_|C5&=)OVlv!3%eoKH1X7vgkXPvX37W83=i_abZqnMPC_C+I;`YzE_7(dC4r6K zPaaO*_sapPTktK1y9s&M@54VgV(^(3=U)AoFZ{5m zZ(i!i0&imJUmw9<8hXvEqIf%GbW<0kYfe`0RF%^)8}LSuPV1GZA!mvuMa&bQ>QC$oXCYZ&!JPw5GtCd^%itk3 zp!iO~-)vFUq!s=G=K$7*E>BSUuIA3I61z&c1WWR{WtEJU6&7bhFc@!AKFbLoLrhXu|_uwjU8Fe%po=-Ij4|V^h8F$OkaFrN@SpZwxJ@Kysx|Bx3v*smpWz>Zx4e!tjhu?E5 zG#UVx?+1&1eb>uaE^@;9mjF9_f|-!WHoU~47mA0nRy~DZPwA2SoMzE+A#*elZm&b5 zl+a0tKN5lb3C?YFxv-1JO%u~o{XLCczcI2TJ1iyXa$y1uF5e*s9&MJ`VzkM%VZFzsU zv{~6J1W<3e6Fz+_`_~bO`jbvte}O43O(sUv&9Ovb{8ROWk+d`Le`1FP=}u--n$32c_BKL1X>Z* zz{>6)9ULp|C0R3P)vY0%i$IbnqcU_FFx*5FC;8~99sROL0qL6mwc4nq zp{J0@6S<7w)O*?f7LN$PYW)yOFZ*|)fj*^9D8DK%8PIo>tLC>1V4zvne%dM@L`(5- z9h6quvVvvf+~o^HasG7+t29rZt(gSiuEZ(d_n>Xpi|EqD67ogL7ez;w_nntNEz-MR ze0*<}t}^(E{DpuXIj;Eg{VlNv_M>DSXHnlhj3D@1A|2Bg$9xhwmox@8pu(@h1o9de zj4T7%DF|K|@Mr{4`ZqSPO}M%FW3XfBVF`1$akuYPLtr6ou2p)mXWu50fhsv&)Gtm2ruDTUsl+$ivJ0h&wwU zuAh>?7E78j+N{;*SnQl9!)!p>Be+at1hmZ3J=$S6RY$;W+>`D_e>ccbwK4(bGdDUf4t9umlHSQ2^JX|ap>F%gIwcWIDM2sP*=FF56aUk^9DMWG(E^`SIF+mlq8oOW8e`L&cvhDC7lu( zKke)omj17qY0I#?AcQX@jcbWrIu-P{$3=u!%?;F(#ifZwPSasRClOm)8&K0;%kv`| zhquWS>8^>@((Nc41krjp?HkEbFX`3;%03?KH>%syXxUleI-t-}iQj&WIWc_7Xai!d zr40_{K^py-1XY{Xlk$F>;qLrQq2^)9)&{Y}4aw3Y`svg;Y_&#&oSXioN zLS~fHFWuj6*MbMIM-8DRB)j6t_#fBo2mJ)A_GR`$6Z&9SP$KyEy^+RYrYR@ei$h{f z$*qg&*iNf&D3R3LN28TVChFEl1;CtC&G@KoUcXa<`huTuIBBth0^1q!yEN(FxUv(_ z=+cVt%srE4JVkjB4TlfHaC&oi9~f1Ng;s#hsP>3%o|}}WU78#u@LH66p1*rPg9|Tp zQ!(FWNL7kRlgQ2##ec!`F5)H{rag9dd@nzOesc(TBhmQ~GHu4>bAX_qjW?Q`c_GNO zkAD|+;e?3In0HPb+q5xfFsknDh2$_*k`C>67cTzBd%CRvUITdjwgv*LMq$8r=Tf8- zciuM^TN4E1xxSLUOHl;U_NkF;Re7 zq*HmSWiV&o=PDlpT-0<_=sYytoB4s=7Elc~!YdgX?lZ~oLI;JG|5YD1?N+#JZ&_38 z@kOy+ixgRd-`hvjj0&@cqi(@|RY;7%q?x^w)^e8;^pw%`UeCC?4ojYF;d^-zQNY^^ zI%+uIZ+;8A?~fxPEO;2NfnMUGK|ECRth~)h+y+fo{EwtvG8gNu{@oDI?_(ZTM2IWPd_b?)L-o@>ip;AhkB<@U;H0HWuzN5;gG zm8*wdg+D3_T;)-C-=0xU^kkOUixNG9R?ftZ(hCG&h$mW75eT}QpkeM=ewnuiq2dMg z2gk<)5res&<^9mK8@HCD6p5J=*J##y$LP-F(tRz4`-6Pr=ZzZkgQD4psxBpUo|@FJ zXC(Zb!a0YP^KB+-z~wuuK44#HhK%VyUVv$G zv(vkSZ!|l0SYZE-6*4VOUy8(>ypuOYyGx3my_dLnB93;hym9nlGN}%1eONmlf6tS# zbmC30;qCpkYW6atz5DCl!j?ZF*p4L5Zefl^K{KTJBKVuz+z+&+?Ae@9I#gGg*}Vr5 zZM71OkgYblJ8q6{0K#ou3qzs5mdqboHN z^=WqlW0-6V5o=K@A6!`AngVZ zfAX_)*qQL7JQQ=>cy(0#9&k*@m=rcQbL^g?pATPok3)p+ow}dT{u+&UeU?oFAVln- zOC5jVg|%`-Kr48Qrb>(L6bKWNWAHI)Y1A}40DwX6^VsX_D|Sz%LMRIGb=%_taNO%@ zC;o9^^^};8nbA%Qgg)LqB9an2)v-aNZqZy5ND-8TY)pJiM5_5_(E6`!=36XSYY06q z9-p2X5jDe(L!o9SSVX|6vpTbPQq0ZLY0(SKe;1mj($jP^64GdN)yQ#bl5uU6 zIz9?b(H>7m{t7b*+a8k@Y`AB2EXg1C?tRz}%l5PD-D}j;82=sVRBUw2y~m8?^e9~m zXRvB_y+&b7v>bV1wIWyDJef|pL5uISmwntEVMw7yCCQjJW138&n*~y=bBqjhEpn8**CNv5=-TOFMmuAQvtw|BAHt8i%GE;06Tw-V*5j*YTZlf|m88Kcr>8TP} zGGADqd@@?=P)vGyL|lwLHOme_PnSC;AEs%%(;#}g?Vbz4`6*YysDQm8dndg1NjV44 zcuj?+UG**4CcNdUp-mJt+iGU&Mgr0zB|M$>_&Mz}+Hvd+i|>Fh4BN9BQ$K51l}&^L zfnt{^U9Pym2PZM}#cC?x)(}Sq0E+5D5n%~1B}gSKx+0c?I8si8MH4HII&Njhjx$Y^ zJhkDA$isNjPrwK0ak*FcC{)6kSi(vqT%;d)>2kuE%eX8tS8>lq${7s_euQk7+#ia= zY58yk?M6!5uwpbkYdQRY_ZD4aI(ty?%yrvYbY|cEaOos1%oM5*4%sWKaB2P81nh$d z8omUTyMz$wR9Jl=Q-LBA;8^m5wMo>J#MC$#&%}I}Q8mTdF)?QS4qnDSGQJqIk#IOU zEFg#C`HIGrNxqIxRZPRIKEU@GG8zlb`oo#{g*%x#D$GX!rkzq14V0q%Tw^`+Owah_7?s{(WyBMSBOb?4m!3=(` zG>p^t@{MV00@5>GNzSV2z8g^EFkf19TQ>LS}?Vd z>Xs5qz2Quur^j2{(_>@r}D_c#-Idy42gk z3+b_j)uEo$XgcL%G;wNXPeiilZKp`&IHM^)O*>t7u(>IMye%R6L1fxKs%O)kQBMu~ z1GH8>>E`ZH9J$@m2}?aNr)w97b}(@vwdUFD>AU#QD96;o#`Q=yt`dh#?RuVUenWHQy_$n(qMlhqT(cd9 zya(ls8SNRf!;-0+cAK{UnScKuy!#iu0ECgmN7;AtesNymf1$vm2R%Wb;W8ET6mg>~ zXdIm3;M{OQG8%<*KIuMprRi7UjRs`{T1*zr#I7RQU>?Q8IpGb`iXT76Y5Ts0gZ1AA zH-U%-TH8DxpWX48IR{R|aHkPly_w5G z8jbbnKifb4FBLl8?!VOkn=>XCRJZ~7Arvx)fE-Cf=7t~xTL!Y<3d)VX_9aRv6jrc7 z%P?SgE~LKDp%%(M5a5 z`bBpAe$!7_ska4gnZsFNW)FlnBdj#q0wTTu6aL)l_&*bit$PF7f9?+a58}9m`)sAi zf493k`RsA>*jjrXJv_E