From 20b9d3f89fe0c426294ab8c8b997b316f6f163a5 Mon Sep 17 00:00:00 2001 From: Ioannis Tsakpinis Date: Fri, 22 Jul 2011 02:01:56 +0000 Subject: [PATCH] Added support for array access to mapped objects. Added SpriteShootout test that uses mapped objects. --- build.xml | 2 +- libs/asm-debug-all.jar | Bin 0 -> 321450 bytes libs/asm-util.jar | Bin 36552 -> 0 bytes libs/asm.jar | Bin 43401 -> 0 bytes .../lwjgl/test/mapped/MappedObjectBench.java | 3 +- .../lwjgl/test/mapped/MappedObjectTests1.java | 5 +- .../lwjgl/test/mapped/MappedObjectTests3.java | 14 +- .../lwjgl/test/mapped/MappedObjectTests4.java | 115 ++ .../lwjgl/test/mapped/TestMappedObject.java | 5 + .../opengl/sprites/SpriteShootoutMapped.java | 831 +++++++++ .../org/lwjgl/util/mapped/MappedHelper.java | 89 +- .../org/lwjgl/util/mapped/MappedObject.java | 22 +- .../util/mapped/MappedObjectClassLoader.java | 2 +- .../util/mapped/MappedObjectTransformer.java | 1559 +++++++++++------ .../lwjgl/util/mapped/MappedObjectUnsafe.java | 45 +- .../org/lwjgl/util/mapped/MappedSet2.java | 4 +- .../org/lwjgl/util/mapped/MappedSet3.java | 6 +- .../org/lwjgl/util/mapped/MappedSet4.java | 8 +- 18 files changed, 2108 insertions(+), 602 deletions(-) create mode 100644 libs/asm-debug-all.jar delete mode 100644 libs/asm-util.jar delete mode 100644 libs/asm.jar create mode 100644 src/java/org/lwjgl/test/mapped/MappedObjectTests4.java create mode 100644 src/java/org/lwjgl/test/opengl/sprites/SpriteShootoutMapped.java diff --git a/build.xml b/build.xml index 33157702..22e1059d 100644 --- a/build.xml +++ b/build.xml @@ -410,7 +410,7 @@ - + diff --git a/libs/asm-debug-all.jar b/libs/asm-debug-all.jar new file mode 100644 index 0000000000000000000000000000000000000000..d5aa15e05123da2243035832b1df72fdda1d5090 GIT binary patch literal 321450 zcmagF18^=;v?dzcwv!Xvc5-6dw(aCkPHfw@ofF%(Z5wm$d-qPw%)3*stE;=K`rEs@ z)>^&x+TT}8K^hbc2IxNy?ceeI|IfpJUZ8=%fMmr~gy??Di8FkU0|6=gClm@u>mM|R zvrW zg^pm_;s$$-(1KTCgLGNO^{pC@{Z^Xgb9~RR$Au2^i`Sx5L8HBa9U}Ie*+RgCl$n-; zTf{Ms`KIGIB>e2Bg2h3<`?%lfG0Jlr54dNA^Jc493M7<0nrm?&Lfejtl_^8~_5-3D zLJP9PxKOnh=k;=Q$6aRTlTOO-V>Vv)8S)r*mN<>>@}lodRbN(DA^ONiLaE~x6P+I zV=nv=?BC^Z9Kyf*o6u~rXtJ4(Kzxf~huyW^O2{xOTtuP1U$q`?K7=NMaDE_bp_T$= z2_~2H7#6};i-NbKkGAYc9;IiY_nrt>po3v9AFPJN7XyU(7PH?iIBiKB-h)<*5@xBb zz^_pM%liMXg+g^&Z0P^}VqoY%K$QPK7E*VzbTR!e1F2i9=q#asPj|bwF>Ygl5SxMB z$6)_aM|nU&F#_ommh?gD1#5<5Bt|v-GY#kY>NjX!g>wO0s5TVw+ZVQw$+n_8mfpX~ zb!lluYf9_6zT>XVLFt(ljqvPUB*l>*KodruA>*4F5;g+pEA$7Dye)jdwlD z7njDL8%fke3VK=L3}DM=&w4`0F3zwE8y$u(cy_zT{yte|Cuan^zG`;62NKNI4bDR` zg6lfRQp`rj)acIcG=R5_P4k?Iac1-tJAJcbx{r5l^hB|M%>m5WP2zFqTAMy2;cb5; zq%Gc9{zPb($vs~@0ft=c=tUt3A4M=hs+od|e3;APa3Xt-5@W|R&7^(AuorbzCBLTMg}}Y zXRV1(S#Q8cP;z&lq`av!2}aDLiu|lj1)q8(?vQ0Uk>H4OQ|=vtYu8=r<0S%Yfd(XH1~0)VQ`{TnDdbR2p=n>B zI;$bd*xW4Et%(2MB&)%`lA=X`+SQ`38f1(jJ<`{yuqb@{AalBqETtyQ;@a zVD8=p^}&FZ+m8M$7Sj3y1A*?IKo0yUgGC_}doB;$UwB=B#L1Tk4>1v6V_n-u0O8oB zUz9RT^ST%xG-CSQQxf5pOBmEz|uFzcWQ_)mFt}Kj_)c_T3j<^>! znt7GOk<5h1ln zx>g-#MHRPkuuYs7c&~ z;q(`ttMZn}?K(a|f9&i-KVipI%-j{dNBC#<^eqf~dW=&JvkWuyTC41H72=2tWANJR zO!dGrVEJOPL);cP(!^kgI&NYa`NJ__+wYqmkm)h;_g4=8@|b$f`VzSPbH}#LiY`8h zjm0)2GGAr#7so#H!l8dN*nLuMTdgR~Hv(k39SELQwj?98*rLe9F{ZL?LrRxpTvr!X zS`##*%$wAfqv)zd@#UuJ+PQiIVWA9r!BMWDGpR$waw}k2SA1*4a_e_>CtgW9PsstV zs5`i8=4cc0l#<3&OFf8;C8Smnkg}B+uDZ^i)TIkz;E0A#@uwZHb@jO!w}@${sV93dKlvAJN>5vqC;hm0hTmW6Mc>xqugbE%LJ@))UeXy} zkxMxdPkOtB+uRyjW`-TPeH!PCzEGtuPv42kO!0JnR^XTu8_v~(@ zl6|2A-sQJ#zs0^*P%(-}pNth4UP!iw7%{gN$5=&Hv+t|T6c{{wk0In`^Tw4_338u^ zr4X?zR?XX4t$fr_O!+59GUeN6P*CqH8a$4Z?>}oTXy_75A3Q5)-#i@4KTLb^0Fng_ zvWHG@r;i?|IKT17gY(-Ck|0~ggHq9*OZJE4j`B1->m{=RC`Wl&CMyl&HVW-!s*MiN zG%ktb5~Uf@dTi$XVwDW|hy0JX)I&eBU0GL#Sa5P2RiH*r?QRzV8j~6HRvb>)jo2C8 zb`}T@WSLkabn?3@hA%lW8Nys9AiO5W=#Vf~$%K9Ep?l~|;Yavv@4;_XG9)B~Wc3Af zUt+Nus-7yUDec40OhXuW4aqa4hEJ~zWK}s8w7C-f=g4s&+7hgh^(A-v%-B+5i!8(i z1mTod^42S{u_LaSsEAh3P9FP*m9V?!`uU$_YUHa0AgdKp^}5M>PO33#s)5-RC@W=0 zQ03@QmC0e1s%>)B!?ITJcIwtlWy^OvCeShER`@5C9!suul&ZGr>+0u{UK)McE@X`w zv9+_vt?d*m9d1$NM|$1NBkkd`W zx|8_7uQ^>@oGgu8T}=P88dueIMm0tAW6!*#Fr+HRVHJcXT4${m6^kzdFRl++x+e}? zZppKmx5be}HEYaY#1$A8*cDJ{KZU2}{&E;Ri{jAnC@wfC_V2&bzVqCzAAwS(jm}Y`cyxDa8iOs#ebL8X8o^ z#;AT|ROb2C9Vg8<_mg*?%58)+spd)%x?(F@w6PmEZ96qz5-1``ZzHa8iDv28W~FIE zOsIaC7*`nZm{$vnDV3pDkH;M)4Xtm$btE2j1WC60)p)gQW!6wDBxV;zF|2^c-2>jQuDV*sMhB0wO>7^9cxVM;FdW9w7?=_f(9YD zD9hNH@&%bJRc(mtX48iHK~ z)f4A94%S6` zB+FKH&Ui;tcgTE30G38Jb@ZT%H1Hsg0t&0|pM$T|;B$i>&iCeN1V$t^=_u(Lg(8OUE!O? zH4UcYCw`kwbW9^|&4+R|*_~?$Ze3RLxjZ}$7SSBgAGl`54~cA{PS0cO?W7aZy&U4BaN!6oWW?Xl1YQ60yV|76%Me zuVYoz#dGw?nZvq0Y)p%soW%}LE8;(H+b})xiN7a+@LTg@ijI*qL>Vhbo}O#_AD~>P zgf_5OPLPx~{sOh8?rlJUc7;rNWRm-Z#@&pom}fZng>&D6`A0M*oF;)^3Pz+*SJNjT zN?rWE4k>CTw4C3WWakq@%Rccj;O)Ob6*}Q_gx!l56K&AaA-$R9Es!;~B*@%fmntBv z3niTY4)b0ipF5Dn%C!K2ysaY3=yldBMdhCZLzst=y72tXDx51a8fQV%aC&!|?1A~s z)Xd>p@WHONt(~0jiZD*p$ zho5V;fC89;Z!+J8;wwW*bcvc|O73c#BXM%WC+Rqc&0>KvFG z-Y>U`k3zj_i@s^7KE*HG6TSe>FTZHsFyHSuLiY)&?z(L3Gj86aq8NSaOBj|PhcbFJ z7BH>7j6#wVjSKEw7qZO1Po%}aet`e?boq(DhZYC{1k?rx1Vr-Rrb}T@7gM!=gvo!g z7ujmwHp;4a-*Oup8?L4o0U&_odL{#xUP=HoTuc4kdRiVcW3cE-j2#UXog4TjiPXM= z=q&BrYXl;J;|~=P19G^3I@Iu>02*7ttE3OakOV6e@L%Wat1EU$tk%cJENB1No0l(w z){~kXepsSlGY+RZB1n3b3Df+{2@(z~1)5ZD4va!Q2|x@vNKEvei$-rtzFseOECu&` zHb_ByXh^*%tuCnnLuN~i6Z}}TV&Lbo21$q2#jzyo5=zXVCrbm@8b(YlY^l+`jo!a8 z_4I+-8HwdF5hfqAcpfb+PbHshD zTX-^AxfCMSwi6AWAdM3l93ibCH2Zs^54+ zDo1TAWUVFZ1rtWhH*cEWEaXav_i;CYxa|ZUjQs$qR~OpkP*Vch5g7bv0#?J~fFJQ) zu&%XUb((x3bqLG~HPbUGVT{t~dn+v3)ve?hJB(3iX|weN?NK=gg9x~TrRV{jdKJY< zwQ-GNTqxqQf)o9-GFY&9Au)ory24ECenv2G!z%q< zK<*3kd`;_8GRR&QB2?@~5Cv(`ZXvcYdlUWakbWVu*B~&Ne_%r9<-UZIjUjV)jOL!< zW@6yB#l8)1Ycle~9y+dXtkWIw5#YOC=Cvc#I>X#)xYooGT2XI&2REv3A>j2vZ!yw! z)Y5cfPX3Bos!y70@JaDuTW0rFutd&#>Z+mdUNG~DEq&2z`KA#N5bsNz*&<^5!8O)l zKGerDq>ez=>6qu&u+RuzN64g9(xv>;rp45z&1KZIW7b%1e0?IOjcwF;_G;X~btEhj z*wr-hi0R2OCu4{kzzjbi7r$qYzmfpGZ~{j_7!^uHmql$fKQt&$256cgfKkLFqXQ@l zaxRnjNg?&rDZ;YyR!mLvM|m7auBoSXw@S-BssQf0eQdk4D@u?4Nq;Ds_2R#%MLeTV z2C@(&)*xzGf{j1%9kZbM0+Ttzn>jB?wg z-cziQaqJ5^5mOO@(KDq5lSC5~Om)43Irpfu7^Y@{0wU==WpCP{D%WvA&FYr?Q~rXq zR4F4~feDVhkU(P6iJRO?eUG68chjp#<0eK@>F4nx-vvjTU2u?h3 zGJ~==&BLa^^opYk2UGqA<`kD8mxtMnBicNVa=MR&w9YRr#Okb7SrOFRGn{O5{!f#$ z)SloAZ9Nlk*~SPnjZ)hOfbSZT72N~y#@{J zql6Bmdcf${Z}k{f>JAe7M3TP7us!lse+3}kk~aGnJeqEQM$x>2t2>Gv?yEDw{0%RE z)m1q_tjF<>VE-haZ=?0PZCwq7-6z&T?{t(^HR3@YeiP3ghH>7r=C!@%4vCHC1>w#R zB_C(Xu5MSL<)DdoO)b~Gj^GT^>@>nOt9W*c%*JbNh>#ZRWUDf(7l|@#j>R|(gBp8; zY$&AetxEk12y*({rGzLigjl1lG|;6iMsP36FV4hfJR~WDQK%@ix`vI`fI~YNo>56* z6?Ox2kd4DEw0>Aii<*(;)WAl=7E+~WFb3*O#R+UWcj1aYFPXOri93S}f z|6jzI|6t*v@P#!-{|PYx&_F zq)6<1>E867_I%lHef!82_yM^^?wKqMn{lq2r8EF`Pi`-rtYOxtbkyQ7Kq))!4-T!9Vl2b%$tjE;(|&>g&1Uv8v{nx-Cb=BQ-8HCk$2^lZ-_V7wlZO zX~|hL?&PoA^80c;<+1aBAmiB~Z%x|0)OZg(Xa_0yUE18KiycR{&>ULD9Zwbqo7H0- zN~%xo??Uv&4tau~I{0mY8YF0nkSiD%d$)@FrYqH^#24;R%#3=P!LAZqZix3Ha05kMCq_HwEn9z+7tEShNOZijMc9&5NuN)++*X z7Uy&R-PIT2A6qhBQr!Dy3|iWeS%Zsdnsc3a$%<}0t$Y;imFbLDam})D$?Y_Y`da=T z@!(-%9xLC(Rhu)(Ok?V0gDB20Sv;MCutJK>|0KD3s~R%ZN$H#<#>-;q`PM~)sB%(% zU8*t8m+DefQIYayaqN!I260rF`cYxjs4(0Tf+DBwfg6cIf4~Q;uFzZ;!3OKk=#=^8lhztkNh zH=zubswr-w(i+m18b4nLGo#MW4+Obx_;WWO*=Mcj0H-$?0l{!z5BF^4BbaX{w!r&3gPcM!T68NtnP3=Pt4Hz|V?uvK zHAViQ)DgGi0em={$eL{MX5k@|)Rtjz7X1CTR z2@$RXIbH#P7o=qQ9f;a!h@<{toRDD+@8#h4)bI7=-hK7fl zf~{1?VJoEBD(Ja@O>;nD7q5|Db5XzeM&^2(v6wrjKx5_g+u|Ho$HUb;+$$(Za`83p z`oj6Rxj=G?=Cq-FG~56GC}j`Zg(iP-0|7N#0|Al#-!p-dsiDb#2~E{LkOnHM7^m$= z$y8%937&z(!30o=ae@KBzaE1H8PTA{1X+opk)WVU^74!#eTVb}!3R->8p`63fIBI# zscU?%y4`iv)iJ-hUb@raux9`M6yEeWZ?vD}c&~Rm>*sLY?ur002LC`+7l%7ilwe5zCouThviFqrs&k)@^E{(0L8;i&I zfNpE%!y(D%o=o3f{-Q%tj*m27;n`A%kEje^yM}6tkA4&Vj7yqCU)u(IFbAMSUmC&p zyRYoAp3)S7HUrv^xqppTFQeJU;s5R@|( zuC%Q5EMru9IC@=$VYV!a6=-HkCMrk8{gT0hJ-wU&z^y3aOFbY>)!0cu=&zD(LSJGz zSqKt1R6`l(QZR?E!boRYS0%JP5*Di`M`G!oj)yx3#TmqnVZSx~cH)b$-TgM$zW`+* z|Dqhri}((903uIMf-4dd2Kz@f$c_<7IZ=)kn=q1#P>vOvP?8V8@n>xtN{K5lCnOkC zhR?bnpj;qyc=8jP-p{GxT2miRQ|`uv=_ranK0Ik2{n# zLmcc3@7IOvR*2WPaX=_1SYn!F4x1d7q05#mp z;^n@`E z+%;KswYaFG#Y$@-LQM6kaU65W;J4FnT`|w8towJXah{L{M@u$@jmDxHzu$IS1*WR# z(WNSM<8<~K@!AT?+p~d$v{qdh7`)Cg>iMF2*KmtX*20+sZ2GsrHyJ7Ms1x94b{JGc#ceU z%#d#5Wc6j1Om~eyE2Z2u-I|K6PES!C9XJra%(1L9?N4n4Pj9RO%Yt3!CO|*?=M@>_ zXHUwNIH}93(^UoK94QP!F|%6Cr|Z!7Mpb<^W^{6<%je0Q__~h25XDLgjCTvG0z|N< zt4jWOC9WFW>;{p>V&q}VmsMJe)>G?SCPpUWd`UD4kc@+aM=(t|kVsG9rmUk3ryMK< zlXRBV(A(t&b(E}&R|x^%GQ8u%^KoMv^`8${aHZ82YGxcoM^E=Rs*Wzmc#~ILI7M2k zv$O3RsU+7bTnzqpsFtf#1fj^$QfzLh$7#+XJARocCu>)WKIrF9jzAn;CXJGyo}jLS zWgl2OJ3 z6pMhvYett**&_#(0ro zno8MDlz{CQW~4^ zmDaeaYHVuiMEgL|*yb>J>C@A+*LWW{)ezw1IA=@|R#LxKM=ePjb`pO|>mS4<1@uM6 zK%zuE0YQx8hv;Cc%1VXfB??NSzlj@C!>B4^#oz~+dFDQi$gW1mYmQ66HXI$vTWnzu zqGC4BC|g8oozdiwF%xwmn$smPuXh?_DS!SJk?5%>`KHT7*eW=b`6N%$mSAU!;)`|;YIZcm&?XuMgDNBHKmj5m#wf~q$X%PIFS)hiGKkC4VX!V2XL3|o6NE5P zBIOFz2P{SFrSIZ#&Saw_r75l0=McsCV8x{>qLhRCXcWpdgjl)rx1@g+4(kLQdyu#;>)~(Fz_P&+%{CMCF^+r>kYPqDxZa_-p6{)yb|+q)3ZC*(SCC{02l$KLZz)$M)Ni#ItPR~2e&nH* zvr}t}TDD>_Jm(*k!uWnf=?SMJpkg8&>G*)VA=1MbfJ%B1P+v}aKBnFu_e5XBm$%Stq@h3i^|!0m2x>n)JTk$ zrU5D$-sXCke(0aaN9qF`dTQVTUTu#B0V=X*a`I2;~vDBB8`qhg4WmRM|0IE8gB zyrzhtt+v2G{2iLGKWg=SyXqR6xFI@~lWI|N!X$Tp@b3E5`&MVz8NPYA|9At{b0h8? zooG!wz9w3-ERJ9ga=Uk9@Q=H>zu!vQ8X&yC4^>=wBmEpKtXqt+?EX~zPD>S-&b__= z^`^(*A0cpc^x=`+mwR{r_wMgVi&M+Cm>A>EMDEc{Jl54nUQr>iCH-3F3H&!AgMZ+` zeAnPy)Z4y8TyiNpgM_ORIwq}Hds&|9aD{r;rz*2d&^XDMU@1)e2KEqF*`_*;7+%lRpGM_Q6X%%002~tc zg;+1%!Wi}ARXJFFVXiZ|!Wsc(VM>&LS>l%p2m54&a$=(*=3M0{fdx$WCmW|&XF4BU zXGxr1$l|V~i3B1aGtXL@I|}Wp_fv&(cuev+(MY7WGfLpy)6-FG!Ek-%?vs zPlchSF1)Qwg`AyIW|{~BB%VLF1Alhu+KBG*UMSX_tfueMc*Z?Uma~;vA99z^+jz27 zE>~G2XxI)qm)#!(A)Jd#5zQN?iaWxO>$ z_|yac#1lCLSWA;wVVe&Q2+;2&G9`iBa}NA&hi+#xm&x37Z&n+8f{4fG7rGO793*!q zhy;tm3#ch?S2v$UWGVN!S!5{}x&B-=l~&BU)*maBMRA2%095%!9;k+M%NqcC$w&x!Z#f3Uu(rkwI z%YoDV)pFjy!_CURtcX6cgr+k%j7b0{s;rfMu0o#1L-WvVt}YEq%jt~kJUu`81;b2Xd^hALnQ1SP6cjX?)clT6b0ZcjQA4zc6xGt(};z z*_HQC-GZR+(a^Dyquf7f?cSsIEgLE13U>0E3KGr^%nilH9xW5=4EG+_P^C_PmH#Ob zgO7=oBv)Tb2W@bjTYGUAV1D756db7)KkZheidi0*bNL7+&SdY*)_9W}FRPtk;)ZW_ zA&_K*`0K_lWLnBvt%04(P*YP~_W-QjG|H8nqZB=FiWy4==}6`j+t7Qse^tJ+L}#z% zNjXkR%9}Ac89oh-$>|qCo;;1l9nEztI@Q{s=_aC|mE0h$gg;n$o}!LkQ$we(c(t4L za}xDTh{s20*nY{D7qFOLz~cQIzH=3GJNsxqPX&GUt4&yEX`#j zXQuL6HbkDp;ds42{p)*TRozrVBg-i*`$uEgVAUCmL&1VsYEs#4YcGQ4*^5PHt|lpl8bzHgBL0n zdxLW|^ozb=_*)9$ayJnV*zJ}ZxPLJy{1Ou#^94WGUUyxofP1U3jDVD{;Qm*08OEvA z8`2{GDvu8>g;@F;*cTFuq{{WBbE3Zk4mZVcjLzW~n~*}P=|Ur|@2MKwGPp~Kh%AIb zcw+7aFKqTn(7<@1eADOUE4$gMO<8$c+dFP8cbvd-5phvZyQ3IV{y8*Rf2y$9yXo3Y7z zYTIxV*{@y7)?O&uozMwZG{>&cI3ZXh?ULFoQ<78Psw0?pAmYHLt58Jb1j(&~TV!FJ z`L<9wZJ`nV+}_fdEVv;*nK9^^SlBlgcboZ+3J-1M!)9DA0Lv>JzdO?5frCnF5t4;z zT1IEHnu9$L+}w#{Sb|YlPZ%+GU;L^c86`}*&_xOhwJqqZ62+hSf;K+Ia;Fi3GvdQPF*i)CVfqZX=u!iL;_ec2*~`A9ChG&DWH9x`t~(&Q z8Q6p-mibM2gPzIk)|8aF@aK8N!74xteI^iO%&1CfupNvXk0u18CVHbr&`9DQXb&_v zBfF=*3I*HB7xSoWFV?RR=JIUpTNJ@dT86ZN7ti@xTWF&}_KFW@F!S!W-F%pHf0Xuw zgkze+b1KjrW!?#H#f!+^7h3CflFlu;4Do>j-xau6Z7xA>c%`iY!C{uzQrK%(j^nTO ziNA_FAaW({Jp1UCkM1Hoyd}6UFd-R~X)Mn&v_|S^!blC-anrFHbYAawrD;g>&{4EC z^y1KJ(S53S?G3*Q+Oy*pVaDiaiwpls7?KAl%D=8zX3oO^YZ1JXY1N@tsY$AuGLUfn zDLxY06nasPL!LpSRl`yxOy7dg#Yi$@!DBczdq!H}OpJdv*>qdpV&d=@e7cU1+?2>5 zk(pUX=qs&brI8$P`M?iFxG_~;gt4SU67UyOncYO#0^H{(8moF=0OY@cD$>bHWvn-$*#_~Dz`Gr;wkUj8{x zg@CT&fpOz@G3O%!JO%evVIDT}JFs0Kw$=gPQceW@(m=R0Z@&eZ0JyIyyat5qsbd6! z+ORs;GfhqmGZSX^&T9f+48dsXvxl2Dj@dxbm?5)=BsW-Iin0TeNt+U;jLaL>F4bBB zn(Go*yQ`v_8^kVutMzT0My^5HfPVyLPa@QL*)>318=q|&ReH#~!4MA19U-@5$eUQd zqPb-#b-0#gti?eJ^v3R*(HLTV!Y++RJHKr*MFQ4%ZWEas-!92tIdITX&D8*ZObOdo zfmyYF6#10agd|)QuL_Q_^7Z#PR0si>)UL;Iy(7K;$y{=KqdE6)}|XG#;# zdI%mwi;zhN5VPddP}d3TB*U^i``{ck5Ox;sjBHdn3wDpjn53>9!)6pfc*+Vh&6inm zavZONElqGxcp2ha8A6YNQOgmjZLd0G{UUR}o@ulEL<27mku|2tOylM^lc_BuWdf3n zLWEFL0Y6Vfd>v@e%bW~t>psMt(9LYr$*dy?53Y+F0@#}8Y-Tp%*D5$;oG#SBsu*LC zZq)HN3T5Am46Q&;HGtU-TcvKokg5{|XEnJlLKnQWzH$%6M?dgrrT(cd+%|yj62iie zqo3Ukm3Nf=-p3xrMLAG;}!87ylx|H*v?#6QD7eFdg@x#c0Iz&jpKZg z?~-#dz1;@)d}gXl5wVWkhR527XEmfu;z9$rGpf1q=@OzP{7Mn$9;zeFkQ27%u#p(T z7k1)ILZ=C6Ew1vBBwlv7r3jv1CYAB`J0Pbp%Tmh!d4Tj3;U(YL3w(W!>Kc^6I>_#E zf|1PNAD3>h4UwCl`H6fG0m(G)qi%_5C8Sb{)ZiLHG*4JVG*2IhC!lPZKN!!E=Uglp zJ}2M0I*t(F$qKX$&1DR7u2esdpasL)MSE4{a47Xn1W{{s2dJRdSAk%NGMZyG- z?O`f=N+r1pPI^L4xBw9!DpDQycY_wWP(*X9k>ETgh{sBXdk1cdsTCY#%RLi0ojgd% zWe2(t&_HIb{qoo_r_qiLVZ6g+XgP)}G_juYq>%911ea;Os?(Thy_Lz;c!=H@r1g8E zZ>m0h5*U`s3zf_pc4!yBZnYEZqAQl=6$qjZ(Gcka>V9>^LRcV>>5>I&q$fc5nOw$D zzYp%2ZPIL~SLYc&V*I5p>I*3PQi3z&tEi0`TkIc2MIPW-9gH0|qXerHLy2UntH(WVQd zYuN}3Pma?OJAbtPWH5@+OW7jbu^fMvam~TwBs39{A9bY0-nKS122|+oz=N@A;buH3 zwB0AW-G~2#aBU{y3Ay!*@FTyaNfs{FQ7?%T>0%!5f^pVI!iP9CW*6-^kju+|svbiz zL@+{sz1*KdF7IH4qVn%c`j5#lIZeUwtGD8>lN2*o92hEByiReI`V4CEa5cSHE4fy^ zn;7k#49yQHntNZyP!aJt+QGNw=p&NJ$>h0dvSvYM$mC;aXw*!r$CR@gwiTa)z1Lpp ziflN%I_Qz%zLv=ey-%^I=;|PJYjo8X`y9^?|Fuahz`kHuJ#1OSJ|aAe=DoO7a*S)) zA304h)8z@lnoT_USxPY-uuji5N!+X6Lm7T#uxb-gPaiF|zY3)-JXr!SF z$6hs}1cmn%<)O>ihFU^s=yC|A8nl-7!j)Ww1Xmff8ffvzU?N@iVESnGUH3g2#JZ&s ztAge206Ek7f~H|i%QYta#$G<4n8E-Dhyt5ZNkro>ny9Hz(DG4FUpZv;X1~Zt^y;aA zw6I~V!twzEuNcvPp&D>TR~h8tOL5J*FqYNvUgYzec-n+NP*Uk7nPLt$%@vA5?nHRI zIR=f3(?p5Tz-fyjHLR52n_13YGNCJG;wk49_9p}geDf^q3M~kl_5JZB*@Q(e9>@{3 z1-Tz8cCq%XR49ykiJyp5C}MRiUOYV5r>{V^`CDn>0;wGOnWCPHpPKy!+`Dyv7eeZL z1g|6Kd&EZX@x9PAy1Jam_KLLM*U?dIHCpZ4U3yY<1Vus<<9g+CKJkR-Uvoi+O~A=m zQEP9{A-G&QE-Wuy9ZSpSHx_};M<$QvhqUp9jIU$7ygWZ~O`ba}?Tsk+@i18+&Ylw* zIYSi9=>o_=qWr)62FRCU5*O4q z6+-Raofe2HiHX&n^JY+tg9+28icMf?EtJga?TdVU#zK5|Xr!~)VeYbegCF*?9Nf#l zn45jyS6J*qr3p90JnYN$#uRHz+V^}dhvu9*T%z}>8woezsXmplDDnKG^ykYEY-;+d z^Qlt7)MuhR%#u86E*28Q+riakkuX1^R7*uvxz*X|5{r2Ea; zk0WoX>UXI1_jy^aATf3qkX8@~^A=`65o)9}w%QtniwiZPVtmi>wKBE}z~oEbmh!^#3)Mrb;;eiXg^GeJ#MNNHRTq>oVC> zC)~!FD@Xr0J;kzBlQ6E&cY{4Z>W~dN0c}d5i>oR*QB9l+-v>P*JPyhfb_+bm$3}~w zugac*<~q&xv6FCNUd8DG2BD+^1abB0EF-|nD{Fh=?zy_0~hlU&SiM4 z?(^2`l=0ZcVa&8OJ>`K5rj!=aTk$gvHF@&J#v_J7OeHLrF6*<$yT>XK;CG$0G^FmS z?ZYva`%_^eU(!jc2L)8XSXyV%n#AbI92b#eU?UV&PB~L@o{e8>jLG_Ey#nq@gx?CCg-dul z?Tu8t^(-d>e+ZiMX`NR^Wc4k84aNEgJUq&hD_hXomv@<~onX-l>RJB0Pfan>nqbc( z>peh>*2&N~!#?)D2c}qR50I@kV|NixxKtrTuUWwtg~8i)=3q8ot)={8K!Fy2?gwgu zi+AJ9t;`l>#9BirwHp+hRzOnK4e$;}_FmgqR+s=h)cv`ix+Gj?x|pMZSP`*e1ZWR9 zXzlHey0s}t7%#wQ+K}Ly9BB?5SXB|@t|c!r1(2PvpD=F(oEV>m3v%Wrwqx5JeT>)w z|4k+&C{BciX{`%a^FzsM27g!3HT6)TVgT3%c~oIiyfcZK=sF{DLHxj=^rHVM@cFu*X}Pk5f2_Z49lYm3i;EXZX-RFi;rpC(Qj0 zH7btUU=e$3I3?k>jfZKUBpM>I!nznAOl30sLh<|?Z2IM1t zkQne!u=xwQCw(Q6rqP0&tDBY^BF~p{Kv(#C9Tp zJ$V~i?PDvOo?KgN8!8P3qquVX8C$=}-K6tWMIlPoU!O)?i~lX0Tp*UDQ2f{3RHvIk zt+qMr@^zIscNx?;R1d9v4Pn`_>gmdX>S{z7WKns4gXzb;nW23+$o^QAm`v$2mJftoX10Q1@IziUN$o9io z!$rGGce&M;;nucEPn{tFX> zsCjTjS_17hgojG&1+N+b)XiMmuo5LihnreQI1nppMw(CQb5ydbWU4Z3z>%Pe;C zIWsxu8a0BZvP$dxF?3gZnq0htYuu)RqJtBUP9atJpEo8yntysiGy8}kZ%d4E8yPae z`6!#(i=yz&V}TZ5N6*R{$@fGfB@D3(R!rsXa3>5!wa~>LQRJaE*M*_@=(teBQ?Ui8 zGb_4UKH702A0EM^#6xIL#I!{T4>otbVkp27JZV6q=4f|EWSMAV0)9RV>Wcf9FfMv@ zUw@%7Wxuh8i4CJaLlnxM<8qq;ztl&ZK@S`K2u?Hhzgm65sfsDH4@Oa(#(A1(WM0iN z%Yy5*YP}8LDXmCQCCJ8Fg@Andw1F3P>DCLh;O@9Vpi!vtU7K?JVlKpNb{U03ANTSg z%6{0ac>o^HsPy3a`;!FhBVhVNn1m4QH!mazFJ{LrujGjcF#r)j?86y#U`TmHnwJ$D zEaeAByN6tM^5#H62!2B3Lre&}a_d+Z5*upUh1Bv8UYCj4H{gT9+xKh0PY;gamg<&T z0E55pMP1_?G#BFU{h33+j6o3L2+EsG%Am9+b?(sn0T1rP!|R<5XYPpj{TppAgMslY zv<`TlMh#C_DbEyE6nn^ z^;%+AOn1M$8R4zhGpN16&r$T|t}JhO?Y`wFT27z*QM(VDz@OSZ@K09$$lU3PH*6m+ z{mAO+L-RfVlZVE);!iw3e1U(e%+zNs)J^Yv_9w_Ui2jKF(f{D*RpWj+5?Y8yx=)=bs?K_ul zpYPsE1O!OlaW7NA*DGRtt2GSen}#`gjjr^{V@TSoHg)2M2K&ld9}Xm=?Rzd(_d^5z zsX6H!ChZa18X@@gd=ob8`qgHBA{Q?9nzRqyqjqs1H=g^!u^x7vlJOzJk>2||>@Mv{ z{3{Z7R4?Vv2a5-{pAhY?-2}?3Rzr3#4b>}`Beb8~%Kftm$~S+_9>Ij^SA_N`UkcmZ z?BV5y)A~ejeB2G)5z`0N>#uLkp6T9%ygR$2=MSz|oNwL5*EmhOugcVZzr}`Ezvh0B zCWjBuYH=u=2zv{bfkGCTTGv?dIa;KM4U>UV9g2?)7h;LcpzG0k-#jSG*$CT>Nn#l< zA?Hg1`IQA3JGMa+QJ2RehGDN5^Om|q8&j;_*Zps!!-L0*`^fhux9P7P?pq(i+!nqR zPnmq-rBixCi?p;)?b`bqYLV_UDWp%Gj6?S|+P8>mx$g65=ydI(QEJ*D`!1`>x1s0m zw@(6vMR>QwL&XH^rw|r8QuO^F+ zcL-gcWftu15=y)}o!d8&c1V1##EO8QZPG5+DLPy4#%#|(lT5GPi#=a~C)Zx;_YPp< z=hpQE+_P9i?>i(%ABk}ZnFzweLp+h3Ud9m?DWpfqIQOgr;~~l6LnfuBF$n1K1!1Aoi-7f zhi!ZkPwTkhtSZN_Qy%w9qgJXrewq@G+@wYB$&vG{m1F1$6UX9x67?f)d}9|c$7mLH zsb}Ye#}2P!51SV4P3RHyj(7W<)^E87*%UGlvkAs)Z;dOR-xwY^#>LOt8b>??li$Q? zp0z2GSTPVer5 zzwS1IsXcTAbGvwns8|0)C$jxX9xDjWxH}GRzgr1LIkJIPxqAvWY4~Fh(nSK0*vYUj z*~+vp@8a4seO(RKI`V;b8+%7#I+_^*H1IG`yZwnx>qLP)5{g(n8jN5%DvW?VGKw&{ zix|RwH8$+_rgW(G=Df9Tr@K{rmEKpmTOUGy)!tWq^){^h5ZkwXHQa~2I~qzms*I=| zUqt~XUz7Ea^h$h)`ewaEeaw&@KJ(^%^sj1tox+aWc?TW&c@G}i^?1MP0l_@x)T#pP zGDp0fSgtCU{z08gKGT|kb~&l1of=ZN&E`LWvNY4JVp7jMC671VWsi5=C67c@MZqQ_^S68IaRa+9~7RfxB*!jKQ?$*1>bqAygMS%Rg|S1+r<&(EehJ}sQTv#X-- zqvl2*Asg!7)HZ>BHLAOO5?QBuRcNnPO%h+C)ocGS^LI^k*5zJ-tYcu& z^bIiXI%fm-o7Sf0+rcLH8_TBW+v5`KJ8DDl+iN4@3$Z!rL(kIWD`-PPBC~~kyp~2n zaz2%`*kW0N;|0GYC!1NbQjT%~J1Mfcr0AE8%7V0w%!1%$Q&G+amPDMTRZ{NUjI^gD z7uR2o%j_aQ^Al2^s+_!s3|E1L+Kpie$R?@83|9+BwabP>=F7W7{Ed`xlIF^!`(~@e zQS;S51eH2@+7;Dux+UB3U5cF)uhuq7j*YHPciv3uzk#*e8C^n~ znIC1YYInfq&LrT%m4q+GUR-l8>30=R{72O`FTAov9%QPe9z?1Y5NyR92r;wR1FK!_L$Fr%iL_Sn zNoC*rq_k^r2@LSrm<>2-)&rrl{D$r-{=|L}f2X`0MI8y_*`3pd`w&t6Zu{$eK=6eTQ*ymhPENqhI-H06oQb77I+qb_`m_^cKvw1 zBp^Sf#;mc0c^t^`Ea{+F%F>ICKkL`~!FN8h&_6k`?s8TVuQwG2aIIbgOVz1-jBH7o zzDeJf?Su<0_mU`iVl3iphDDM>#Fo(lNvq4P!gxr1yzs`!_8gAaGmfO(ViH#o*MHInLfsZB>6xhfWaC`uss)_eG=E2ZLJYUwyxeiH*B0513+zu zjJj^J^BQlK_U9pP;o=irG8><*jy3Bz7_BN6exyNs0B;H~L8k8y%7ZAl?LGDE13}9Q z22k(~y{`knBeiV40)rG?K24jhSzH^o2Z3288<&a*g7A|<=H7kaQET$JZi4xUsEr0t zXkd=|%s8>~2D>Ch%+Z%6V7dWttRR5>KJ2!Yzh3w?Q{us-V61}Oi*8iZu5UYW+FTG; zWDxkF2kOB`LJIl>(uRd~){46xn4_YN4D=lBA$$WPzf{Jb@A1w+K28tCUN5b2aS)9Z z-)=!zf9eL;Q)qajQuQ@BNWd0rRZI8Os$WmTIG_=)h?3Wth%zrz<7x8oPu!OI!Z1)Ie6`T?|RrHc?7Awx0E#1!0XT8gHC) z;?9bdk1d^I%9`dUUsc-67>`wAY+7T=nHDw=FWpcYkVKxiUviIJrw$JFJmVIzW)&Rd ze#`}7g#_&7lFqWTVgTw+lxNLdx$m5VPnhL`r-jUm%&N`6vf>>5qL;@;HoF#lzTVeC z7HD{Ye!N@(%o+p-d}%boWpTVae&}4tfF98xyUao!x3`XlBy}v~)5g!o7KF3*uX7u` zqE6-cPPOt`k!xKd* zL@OJ`J`~@0GQ@e6x;leHY+3Y4w(XW^vJ7ssb&&esUIpGVHP<`IJS^rHaZP^I(<|*G zN<#nbK*0#C@od2%&T_F6tul~o)<$A;cXx$*tq4?{mn zTtv4mKo);%`eX6#;yGb>OJnWM51|K9sB;;5?0fLHa(Wd#_{IkodNn?H**Uo|&QCaY z_`SyZE09lWmuFjecLS*3jigP5v}I8Ojr#G4C~VWbu1wd0%{9^jzqz!RH(G_ut9L z%pK7L$u{ylk~-;M!Dotf>BDHgc*#R<X&D0J=4?jDK}$w3>6hC*WlgN?Hv|QSxFeFN9c!wc z-mKW3P-E)HRFzp@RpfcW|40@jvu}exSRj(a9o&rD`{Lq6%c1dhFHSXd3R!q+v>1~k zK}|GR1Nf=C-jU|FB46m-ZkWrw>Ri9{pipXBv%BtN2X0?Uc+4Tk*{U}>^AK!qO&W!7Bdc~lRzK^C z!5`lDQe$12&}y_02VGQfwpQjz#hTkc>sZxV1f;}p*kVe5v#O5xMW#>$sJgg`S0&MW zJgRTYwlx+`9#j-Z3$>_h6Jsq8T-TwAkWm%b{eaa{HHEcaM{skHcXUkGk7rco;Om(g zEk*Xo3^Vz>bbN~VRJF(Bb#pn4dx+P@tH0uv0@{eey(fV!mFfz-J)O*nWG+tyziIE{ z6>*!hGx4nrJQ{PuPa)u*5Fw}yp^5pQ+vBQDa|HiT6FV7S z(}-$2;Os=a_CC50;_T$&^r~y*+K+I#!g|2n@$hWA?p#_$Ifs3(uO-`$IX~yAvYUt& zdh_IZ(+%-?6c?)Ps}%eKbSitNR?chda2{9Jg5J)p7_-@#;m^X~k=IA-U1cQfA7xTU@`F;0Q^#GhikD&H7+fbSu*^Y3G+2jENT+t06N z-}rB9{~K)SmxrJM#^6&6@%hm?;ZTEc>Os^&__TC`HW7+}d$`&%`d>qaBnrwnz6xf) zBbG%Q+LpwT(@4Cl4I-vRE82!niEY^e_iYQa%vlzOm_*%fsR!t=d4{w^i%5kt3Ode8rjr`%TGa5P>oMHqV0~1Kdh`p;A)Mr>j#|~n+ z+xsv{Cu8;;+mTbva7c`q1~70&$0}pOyJp7HaH8iO8yQ4xSw<$rq8;uWf}gQa4x>Z^ zyobq?znLQsF+?LAJywI_{HDJqXZpku&8G1UtkyI1BRO3;xuSC5X&u;bCT9drPSEoh zW@d)V#z~m;>8wmo_GW5vX-7W)9pi-aG5cQ^AmWEgucD9B5wcfwXVOP%3TBZeu}s5^ zk?oc~F}NUx&4p?g-{un5_Lpd|H(79f7~W$3 zyuOW@X4cC0PkT2D*eSAIYp__7U0g6yl)30Wb&wemLg_vpC^%yOtL}%%Gki(69u>5% zf3}f`#aw*4HAM{%v4qCFBh~s-{W{m$m}XN!#74ZRIAnd!MnqH0vVjLNjOzN-fsTbB zln&ROQ|fS3(ZzH6%7c_f9ND%@eHo%O+Qv)$deJHN848GOSnzf0=8-;20k{$1R9b7p zZDINq7e*(IM>LTqf+-?=A=?E{?AQ=wYUMd~2#H@exhNUaZoEfO#-&F*;Lz(9o%y!9 zI9pngud#?uDCIHpa2*c#SDSRVyg=BrSE`g=~*a-)bHAZP12i#Fhi*DE8XB8+u zYE1N#J!i?)w743{|E7t={iFPOm{L0>w+!8NaHA8G)_%QmgrfvXL*wFw(x8#;UDm6B znvrfKLH9Zby^Be^pFzp?^TQ#5m;i9g^Fh?)gWz`XGb2GjKH^dNJ!^wX9 zu#e(__rcUDV)}>=xa>WE&S-ea8Yc(H&B8VPTK-anuyvM%ci=J?&9q@Tr#_VgT>;iBg0sYQisqeIWvJ;OrL9*S{$7RRmLW^f23l~$={ zVEbB_#Kv^LbSssP)}L`J{tZzN6#5y8@R*8sDfl?_+gNk{$}Iug{ya4F>oHIgxNoE_ z^H^`5xao%savaugXFKAvQQ{kDe+AlO4(WKzk||5(7Gg`5+1Btl7h}TNl=#^|Oe*{tEu}!2p z99^KNi-la<1`u`=^q?hD4+5PoQw-9IdPNiBI0%lIC*U19J3ijZ)frqbHPmL%m65~g z8anZ*f#7dl0s{-1yI%-3G=Vi^&0qN$pnXQB#3zFB#-;*&Q=zuUgr`==ee6#3(yU>9 za7>8knL-939B`Rad-j2?UO_;cfCZp<{E+MXM!;L8hiljg)-Uf0To zz@Ket+atDOlVhi|7+i`h(+ZS++SKVjW57`PmeFjCQtB^Eoqy#k#*6vcZXotgs^9ZK zLAloA5Pf&jp!hlet3%TC034Tzg^+S6*}Af?#^2;&h- zxg$9&>b1=4(+MvT)ginaKy{+9EcwR~%7E*Udc*p4G@%^V|il(QwAn!lVSKoiC^Z$?H{68#Ta}uTG2KfJ3zKY~?Cx_XwjpUdJ z9Vm7(iYAhh!~R0=u&nPl%#hgl`JDyp=g&96-mOBkkRD3wnaJhT<8(6P?cLK2+SV5l zKms}%yg(cdD$>S=SIXytQG?cDXb7)@8Xl2Tde^3V77gVBfq2A?{T}SZgh+YIvd)%H z#n%D7%}%O)eD@{Ri7rT~2Cj%y!)T6}(-Tda`cU$v-u;$)G{R(Mf&B*#Ydu&rQfcG( zF9NigY3jY1PcgVyI1tpNIlgrNcN_MBX8-{&vhEZ-olP<0?#^Wuvi-!}!{3yh*E5Z? zi}jLq4Mb8B?rDt@HTF-{(^HxxvIO25U8J)p^Ly)FH@Bo81AjT4T`&NTZZIYw0RO{E zbQgq3|CL`8RS=X_Dog6;Yo^-*LCq29RydtiUTdqr2Liq@>|enDv;WadjFBV%1itbz z|6iT&|7$4Q><#U$yuAF<{@n9yIxfWsjWrdI^lOD)q7N(@8)+OSfI2?-k1$b^aRWai zN)mJwY}s%#t-6|a`G%+i1-XPWl3SUS&AH;`+vEAFs+H9;?MjQ@9I3ovc?$qd_-z0jZ$DBLoj^*R~eMxbP_T|<9@qU9;xidnuy=g*eE1kUjxKbTQ| z2@dO(za&QXB9rL-ll@YD3FLfB%zY~k_F7*6Wz)xFi9$$>nEug>N<_HYdz1p$XskG` zTn4mmYi)}W`y=aZwkNl;>7yuRJPFu32-JyCG9|p>$M?{|CG7n6tvPZ{_e>WTrLMV_ zC-^^c`)0_X{f$P!$b*a4JvbeQbXtTzgLVZ+ zDpF2_Yug^6A+)8_5gC`qsB!Kx_C!Y>DJv@wZC2QHjf`03)Fpjx&8X>5t0^joiFBj% zjG&Zh1%bw#Vwg*KqX8-<@T{P8q|8YG=TMdf`yiCG&ilX4p*Q?jEcvGmN9&Eue_%f= z%nOQ8q1hN0=FNHgQf`zxL89d-J1f*DV6!UB%ZMP-U=fmwqdX|4MU|bBGy$PMy?JcJ z!y|u^0jFB!&s8Z~6wZfbeW81oM(CUdpkN}$Tq#}GUXPUZ1cpM>~_|2PZz53#gA)*BY+w??q99%qj z6#l{Cky27@OKdC5)HHTw)Z6k~bMk5$f!&zwR+drcsn%sx<+Xqw|KztsQCvAx!PJ!% zmh^BR7l)i>B|^EBWvYq-3m8x_p@T@rsC-6y73Ea5l;stbG&btyQ*3zKGE9+1fN%`o04A;mKG`wJXg__N5ia%p!1T2=#TI&>Z&Wu z@@W+thE*vQ8<~ILni@7#{;06W6+*OH2Qid3Q~>sIFEnlPTh5AySxlBBi16m$#><3~ zIsip&J=x|IWw`A>S;}tqDTz&jB`Pf`ttfHAng2*v(AH`x>WUUgA66IjWcE>`mNm!q zCs*j}jc(~riuzfZNA;T2)b^U$TC~>o_Rd^e-9OXtm$1ISzjX%wG;XAtI|fEhJwgO+ z!!a7d(X6B2)rxY9lPuT7_m<`blv0S!N?H%{#>$)J_4YEYZHIQ*+}Rn$bNZTrbD?4` za~EdHF$ACzlGH74Ek&nZsuFUvaa0zbyIkTG8&&CrAO$0FB1m{*ykt2ybG}> zSa|?w!arhftLTw0g*_gs57w1enh+k2eo5&3)K;^t=>;YW#g#DFw}J%$zU1?2SM@2j zrdd*B?^@g*AHyg+KAN2BtHfC~ra0{*?6285n5msjqw7VpSk@$h20srpgLt~h6`Jj+ z8v0iNLJSmWK5ZJ}QP(imPcClFAr3YMYWY-6P>)$U99}G{#r>>XMMD)e{=KI8rNcn8 zOgTrDy5-gGjn!3=HVNf1Q(1d?;`jNT%k#e6#RfUYlHdQZKV+EL?X6{CNMy};O%?YJ zy<*@T6q!e=NJ1N(DwNhD7@ zHuFsA!tu2oyc~YL4}=Hx7Lk0j#Th0^oCK@WmGmv zIS8kN!4+jS3TjrT5RuV(Lm;6Z}T!x>OIP{RZ4XN)H%X%Hwcr^YQOv`M-3Ndb^5=tOQ@7Hwt z^g0Q&$=&W~+?hY^)Bya?7$PdU)nnNvDk1`p=6}r5Jnwe1d=Le@j)}gLeNwMAjwrEC zHN-bYPG%?jxGvkLm}+VB!!znLAiN4=dUI_Z4KoDuip69~M9)Il8w3(ij4AX!x<#HU zRQIfTzsBYBnKQz2{;(HM>6cHkB;mV_aYux*O?ri0i3xH3HJhwxp8guNpr{^%Kq5^VXS0$XBh?2k=*!8`%gb>j{XLxJ5HT4Fm%*YvjkP34 z1U@c>@)A>2$kd2BGjBx{g1(3wrZc+s30@O({=_R{nCBv-vDfZaz>Qhu*$nq{H@UZ^ z1lbPVpp5ygHYjliE02XuDLLWrI{=pH(=wy}Na#CCsC#ZjC0vMi39r)Wtm7jdFB^yBBj=bw7-i=cqUDd6Ub z-DAjy4f9|Nf7v2Ifs}GBZpx~cG_oqrtDNxYTB>Qw9*ehj<;?YO4%-vAzus)U5@v4w zW}LlQz{1AW*KW=%A+I;iUOBUqhDM_bzKQ5jJGKUWMc^l=pa1pz?Z?4%GU__Wz2N*S zTLQt84QqJ4R8dMaLAU%8^7X^xtEL6hYtRSLl6G?3U%00b(dihk`O9Z;=P&y2m9m;U z%Z1n0*ZdiLgSc4DL|c*^z5#;eb=@b-EAyi9Hh<@yG`^C?(RGwUYKr~h?h(opP{Sp6ObXp6a z3>piGc!R}+b_4FsUK%+&^LX+b3F_UPpXlFHXRh+$dvbkr%+eYrou80yJs~-wbxw0% zoWSsQApgkwD#r*GX%Bv-fo+POnUN zj}T)y6a1W^B4Me?hKH$F=E4z zWNYd5`4!RmOK4-r?WL2`FOF|=*KFA6D-Q*|ut zu>62GJ;Tn*IcwwQi+N!wP)V9gtXpK$q0Qr=(Qve=u!Aixy4Zy*cWT>mPBrRwsL>XW2J?P6fEDMU!Shv+q=DkJY4V2>Z{HLrR-DYA z6wx9{WVK@NLs7yr7IRNl7mjjh<6%wm3dmaxU&*O#Z+tY30?jYoc^qQ=(Jb~45K^15 z9g{EG@K!&n9S_oINh*`EkL2a?wC+BhzakK~KI5&;p1~`-gR*w)7bCcuLvHPTO zr0r3kpL(sgf*FZ;Op&Fifw@j^9iB%CtKQw+zMh4XQ67P#?b_(kf9-f2qJcnsm{2D! zBBz2yzb*!zIAnt&v(XJHDlvHz82+yd)F~;ZmKo_Pd*>&LVyV#cK4T5l$$<~7aR=3l zL-(Z)n37@Uu`TCddIS+dKj-v@YCY2c1cDqa$7Q%K23G(hghYe+`Teu&yQayArY80x zcL6aClTlMMg#6IUDlzawu&gg#pZJ`o{aX+U!IA#|N%WlBxF4Tb7 zUo)>4+WlIwJv)BNF02qW!Y@_SFP7w!JF$lf){S0VWa z=n!A@fM4{BT)|Bq@mC}H$4U4%G0ZpJkRMjaH`{)1ZcHqrRK*oC9L zaS87PMo*V{Mu%@e2FGtIn15d%C1w}$z=|5+*e8ZjLsBcWhj-9IwS~-|()C3M9Ph4j z(daw{7ub)O`g8s}DR+u=jB~hZ+muIPg+HMw8)wi`LoV@vy&HY($(dDSAB)r{Qo}6M z1wD)M+=7%>=dSZ5hzQv;o>9^CA%Sk4C$#DZMz17sTiBD=( z(%(m+m6I`S^2%XK49xCO{dS~!M1f+vUj0fpuyi#nkSiXj0tYZ8mAfO zFGT;#8#OVrFJJxO=`RPcNf zbx@dEa7ewM6yAS~Z#c&e9_x>Ly!lW)>#+mJb(KF3g=UDxkV05nW9lILgH#}h@uzL5 z`VyMCY^-nAYDqxQequxSqJwuJfOp`N-qZ?F_WmTj$1y@Vh$jY6C=!90)c?r` zB&Ie8(03v31 z%PsMmXh@sZo3ybf%{c~}=T)dTx4Y9Zic^RWQ-`-P~<*{O8um;PrJ#l3L(4xd8i3>o;RGIi$qy0`C*Fkkt){B z6qAe>LXM<|ghK8`j(@d}gq_7m0(t|tx+1-vG?yY|>QrU)t>zBqBXlOQr#*m!4nta8 zvRQ7*oT!UbM;@*fXa%ABmX@{wBgez z^{r7`k_~&h7_&PM8}u)w;IV*4MAcmp-Y9TdOdY6257{38L zzWK9kSFOX~tgUXk+mD%YEbgar@}fZ}+k`WPIQ}!)km7`E8cW?%1;oBUVwan>YhggB z4my5-1Q$!{aY3cs-cR=0b`JoX2eKw&hU|u|y}`Mx=`(4b-9m}*JbG4B70E6@18RuF z+A-0v(ZSN)e=$qjaDkLG%@#3<#m-S9J^K)(XjXVGN4sY`@qguw!xZL=)6lYeHfh3cIKg{66xyx)gUuR2`1LHtpz~Ci4?MOso=AP>mAT$S|3ytq?ZDIPJ)`pm3)(9sQViCXRW(|%E zi6Ig-PLfAe1LBtAX?}{=98IJxvJ2ESp}wb4t1t3Q-b-;+o;JBPJ-zq z*RX{af0=XGT0|<-N;6?Y^)x?rSX8WaaDl3&Mj5)6>C%exk&5AMy~8?V57U;2*JFkT}pz?Nb4kY9N_K>a5Xq zz8{z`T=waRVsKxXRDd*~z#n@GoplV&HJuE%j(@117$B4p9wwRaLxmU_I~aB)%J?P% zdX8eNPC`1kdLM3$h}*t79c(p%xlN#Gu$mb33SDWJHv!s97#%Ls;-)Aa;e8m+U3V&2 zO@y_J!gO$R0G1Dx;|4Gmq!+<)gTsKqi*7bxR^Z=0q+uOMZj3U#Zr#A1CW9ejovPk< z92H_6pgtry^jf7&ZR%2x&JwA(LOr2gNp99%5NLxeweG4gUV|~YW~(ra|Eu`|x;_x^ z7u9-LL9EYjRR@u(V`xM8yx%K#8tNwzF5W%n`zMjGFCP1Xx|A#TM+F(HumpCfG~V6j zN51nTK?ON>$avnJr-!Riv^`?hhe8Ee1iyGbbdV4Ekh?!%=SO>geF}!hiz9;?cB~OQ z4yo4jTcfD#|Eky2rra2Ib%<#b+@k0qy~5xc)^$kvhd9&hV5~;wMVt?f?t9*bvvl0jpubR4mn;^+|8puP2nE+tCfL;^ETf&aYEXW9@CjN<+# z^lT_=uu;!ISX0cPgxeL>varI2Bi zfHhX=3RL|xVGDc^pP)5c_~qanGLh>Q1mZ8QFaTAynFux;HVG@jV2L9g{+BKB6XsB^ z0TikiQy7u>kZ#Z#7aWF)=WXOEiQ%_x^m4)m9|+L^q^r@#7crc&QhxLL(H5vISPNVr zd}Z}uT@0sA7furYh0E>FHe*cMKMN+E28@cdgAS1TTwj-cy_2`skp^v!K!F#{1A(=O zy&aWtHN-&{_jzqDxYd}xM>_Sr0U3ID{)^%8D+Y1YxF9X=pMUoy(rJ4@b?XuDhJD%9 zxWP}NN&$kn{@Bv2ICCN_5y;#rvwb4_8r&JP{YU$Rxl=;+h3@#a7-4((w;P`y2y1y3inyurEvREUN}Dlx_;_KuVLW zH0NW(ZWs%sp$rK^ZPNmN20uxfGYQ%SgxMHq9l?fY*%)CcWe*>R719UO_P@j$o=B~m zm^!=UVkL2rlYYJZY}>n?S4e#^QO3Ng1K|u~S$1t1%s$h_71+}T_f*muH?YREE%H_- z2*|2nn3yT9#Ic*rawwi+Nq$gro>^6JpNaA9v`-S-P2E!PHkOyA;0 z#k;_$lmCE@9M&sP?0|{tg@H4n7?KSDaplM&L~{V|WP~WarPT^vc2827KvzzimTvAr z4qAVKYJ3-Us-REK4bnp1RY3j63$g3X-@I(fjg{lv$;e{)nEkTyYQgK}iS)|8WFQ59 z)8Q_etGNw!&B>ipQaH6Be{e?ign;2e3CRr+oW&PAt&Bx^J6jXf!xlPi97TSkR64a< zYd%)?<5!a@7pHT~JC&5MDghfw=0ZLy!Mq}0DqhD2XAM z|8l^z9UVDv32MBgRP0Vp-QHIiEn1s^5m#0%usplzC=0WY1kEn43e_xz=1hjo7txjWfojpaBnq9H-n#IH-JSkBAHcZw#QadHUhUe=T>wfw1+X2xK;G1 z^me7;|JHFs+Tsc1G0!7gHr-FO-XIWlp;C!GYVYlMfq}Ma`N4~`SV0`qc+3%-(O$e4 zH;>$hBe#ivyP)WRuCo@cgpSQG!l?&xTQPxzMVou}u)P|pBRH_Dmi;G!MG&eeT=pi7 zb{r0X4B@qofxI8&}IEqTe6K zg-KriFMS*g6xG&*8`eJw!Uk5&VBN60DVtKi{@Zuy!m$mI#pI?;8|^AtP5(mTRn zq+az`bZvk)PK}Tju$UVJkvwi-a6;Ez)B{de9zQHC<@2WF4z;V28@^Wsp|5lT$vgHX zZG!2>?Fi{Z%OkgZ!XUM*YiuDUZH@ZK#I@uOhDtfM!SJZly8Vt*3((cSLS@%5J)w1> zcw}P{I2aFiZa~}#ZHGoy^)FS$b1&uCgpC9hv34-S8bgp%sejy-C>(C4W6L#|Kn1CS zB^n)IxBG|uw=-2Ie2nU#RYLBN%9t_E+9hgmzx0YYa6KP~%1q=!7Asii=XVKRPkhk% zuGE_&e7ollUy4}`T&XbCq#&xb?Tg$4S?ySdef&s=eP5=T2-sez;jj#`F=Kq9Adh@I zpQ&L{d)~~#%;>(OF+kcF4$XlA_k;rZO-B(V&!Bq=F3=aXR*dLfVTALMuTbe5R$BQB z#$qBZzVZVe?@g^v`c*6$X*m^Xc_qoT`Eg9ihWAc7xUu-^RO8(D$)7^F`?U%CB;|w8 zyQ@dpZ0X!0yIJ{vm-Y)!1aBxK#tX-cAmW0ItqI$jjzf@pKL_mJBeMSL*!hg(d2ut_ z$7JUc4<78l(ov_pf27h$|971` zR7LQN&4}Kj$fqF!rpqy@u{(;`?!wkv4K)aO6uqfJS))ekd$1?p7O2lFn?Jhyf6R@B z9UHo(*AE%OY%YZEZH^9mV2^lMBp>C`&)^u@TXL)|!-y-U`D^LGC@o8}tLZ>QEmf3} z8`cj$8@A}~C`r(-!rc8^oQ=SUmBJ6|Gsl4sk#O#2MT8=J^Bp_GJ9eOR*a*w63bbs1 zom67*XLR^(5z_tU;F;Wart_LQeBiyuOkPM-3f)VfFJT-}>qyD95G_!-rX zJzh(>J}tz0KcZ=b(a?^(z7=fkS}5q1&kx@x$O1KdCZbT4s#%pvTnU<}LgH8g`pE7z zVEky1v}`ieS7oq`PjLSh7O(PynBO2XIIKXrFr4>VI1Cd;&GAQq0iaanu zADxUpm`*%!l8NQ;F~(-PXpX~p+K{8VP_cv1*$&Cxhp+Sno!(Vt4%(c9yJA05|K_sJ z8~>|#uSQ$ibxjcG;7t&lxok0g)T-W+CYRBOu&=&R|3}f6hm1|rcd$>p12y;V zPJ)3)w`;47Vbg?MpMX-Ik8+nnxo@#e2U5SD6YS_rJQ=8KSl=;Z=n^qr!8I|J+rsGo z^FjXiA$0?`+Q@Btku9;Da@-8s(X8*;N)1lBK(4kRfqPq^V7F+@N3XZ-sIQmP$+hwaBh6C*)GMKMP|puRr{j? znIXauK%YP;`;ALni7!C<@tI!g6EwU03z=uetWNk7SG7`)Kk3cvrqZuISQ~`m0_!-j zbI~ATvp-j49Xm5za#?2Ozd=D`($*#w zk$F;yJ=g9_=AY{Z7Yt5!jcV)E6zmb1>sFBz*O2LTL8Ds=RW}us=}WJ#Wh&c;9_n6` zk&gAR%t%9*+r625t&H~1HPmV-up@k|cyo_%Z>+L{d0i&OfvtEng2 z54ECCCh0;k+X$mn#P5$Dj(Xeea>z?Sy|ztuqTe&??RnvTj?a1gwJcreGH1-~A^xLd zL8ZKX#v@Pdq|xjTvP=?xG9T|Jo#w@WwL*^9?8PjdWCJc_Pq2(%y<H+U zej)OD&^yibnu%IBdF@DimnYUcy18Ic1m<`~!q>ba05hQ#bhk1fYy)n4DVbieEKs8w zr@He)WP_4?RaGdZ1>zrCvL{%L-0FhYWRMrL0dD??G4N*tqD|8(R3{VhYDu%GXM+Ji z8Rq=DodRFcH@zcFvp!!sZDKdR>xv#q3{3iYEqv41dPE@}1|Qw?f^sT?vyM1t5ntLl zx$vf=xC&PzI$Ji0oc$#Q?ew0-|8-qKm|*+SZ7WX9pl+YDD4+X0xn*b-%TqJ97 zn>NZA+hOW8l`y`R3T6LH!#$vR5S$8W*%j0p)i?#U0w7k0_)=puH0G)I#@LNI7`v@Y z+%yV3RUBee4hKqbgb{$b%@k=zo9a5EwQeuep{(uJ15dc&>BQLMTiM>JNQd+SgFZnM z*Z2$=R~FZL_0j3-tvP2t(1HcysZqa~4kvzMU5p;PG4iD_eO>(5oOk=MLCljIlDpr|zVg?IU@UgdPb!RQn<4 z(0ZXK)~k0cL`|#eZ;KhmVz+`8DcZlX50aoEJxwX0UF0k{q%nG;M+OizEIdh(_JoBe z?o!g_a+Rgawz8OE4x1Y^*LA%)F=h)QIkAIR-gbgRS=s?}Om4||2S^-ic^Gq|xe0lr z)R6d?tY5c`Mj`DwS!Jfpq1D#Lbvo^~_cKS9DT2?S54j>)(ZkZ*0|-Wsv;NyE-gHjQ zzW*gwA+i3H;79T?T6+1`=BG9~FtnnCRf0wj z4A~Yx5TTsVn^oofivbURct=}!?B#Vxa-Q{hE<*0K`yx6eq#QZ8{#ov||8qQb zj+|M_g^*ph$K1v_^FoBs$ci4WC>-%R*uodf;KAy3niy^ZaRt0umQXo9O{tlq48(Os zo~|S+R0K+9lggauzqG*2&(8GjUr5@Ie-ZNkeX_*=YQg_YoTaE)S!;`-eVGC~+g-C= zR!yu<=I2PCZ1IvX;9apd+Mul&ER0HBFO!#6&v8yjpSJ6~Rvi{rWTZ6BDTbU2@i5a)i32e5Rm%yR?i+5nf3JWP@%!%Ar2bso9>5tua z2eGmjeOwKK`pM8H04AJjlpeE}43-|X=Nx!G3x@nt zxKnSRkFW>Qgp*)cNFh6B-ykI3Xu2Kd91>=@Ja=Hof$BQ9fz)$qL3-AAGcy;LVxvao zLJ8_njzxEc&n8u}*#wy>uT}C7cuLalakL17Mamt_Z6eQ6x^26-lKV*HXj5q8ypCeBnrQ608GCu9z&_tDxZfUda9p*{WW%Y% zBLufA{rH)e%H?v=Q)7U>te0+VQweE3$|;|lQ5P9D6=9*72pZDG!DEeXlkq+h?=?jm zaV;}n%lrmOe^sT^u+7O0)170t!@bf>T{8HqkT75LPxg#(%xxx_DcTClTE}yf6}(f; zGnjNDV12SMvUMO-lzjDCNQi{36lqcGnIj3NU$$PXl-g~K*XVCMed(c$Y^ub}InJ<7 zVjLJ0y0MA*2z8FWsp;d~m*6^phe4Sf<9@|gYrHQJ5CF>J8B%(8tH~Bmh0G!fH!&MC_Fb&QqEe%T)lQC1aCAM8f(pz^Y{q~#7=D1 zA4G&sV|Pf;LU&2(ZWx(Q@Y2J~ST1TGZ|~El1N=tqtm)LYZBC7*yAmsz$if|u zzXHUDv+9F8)vL3#SZye76ix52jx+y*uXha6ByQHc+qP}nc2C>3ZQHurwmogzw(V)# zoObV=IQvGt&&JuUh>H4NQT5L&Gq3!m?GU*F?km;}%N<-E8&d=^cAgm{!$%;}Gbc+X zTh}B;em1-bgOxUh*D^zzZcn(_qRL8foZH2X=!XY&2~INrX?hPP)@ZiH9L@g1c776G zld@{!r*)LTt1w5(CJv0!DLf86DyyeMJhAqy>^}8RS;H|Y-R+E2NHgP7)&rF0NRqz{ zM_tO~eou$4JW))8#n*RK{dNx3$9LHdZ40YUZFIhR7@eR&g8orPiu-aBe#J3|f&Cf_ zkzU2Iyg_47^Y*cfI}&+cv0o;v;s!XF{z#?m@8JIE6j&%__zAv@ z33a4dS5>45(=JTp8ltp`-=f;lWkc!n!&aIKsORJ4&5k%)!G{S5 z<8>a;ReMF~O_pPL9D8i`!`Nwlg0S9!6Z{c98Dl`R2Sfy;$O7`WN3$M2=LhQWQI;Ul zi&;RZ^P3#oql3S;owKDqkTOi@csd)CtdK>4*mv``c15F*u5BZeOk>qO7b(5vSX)OJarR=2C=ymUuYaZkxTzsLy*ama>IzMW-kIaREA6rzykj&z_N#<|fC$r^uyKb|g-zkrt{ zug$dC`UMRaQEmtr?9A`mMOZ#=W_juDvy54vr(3fo@OZ?;BUj*XFLtFCl4 z+{mqT+odO1V^YhgG9hUW>x_A{1r!4Mu?j);NlF--O!`7??#y(fVLq;CyKCznvKSr? zdgFZV;TLapxS|{$JN_*1`>BTL zdL^j-J!3lB$K?|7m2!R7e1IUVPtz%z`$Muucn-zK(pSzL=|#ejf^c(xL+s2@esNaU zhx5K-hT{^DRBkoAwx-M;+snK>AAZP3{%cI|A?Gw4RMQy-PCiIUiM#AhWmNNST^!nAx5ijRzF7@sNi%xoD$jPj? z2j83p{3~?!d71A@z$nB!cYc|{9r8Q5_&u%j!P?P~gW+M@(eUkfN`g?MJ=jn>NXl`B~q*zwFO_NDF-y2pr;?BQL{CRu9X%(C>7ml3t+c|Rck zY0{27h@}0*1Oi&30|LVTAJv(-vyt8ZmS;8Gu%47sSj>MP{Wk6sgCz9xpBsqvT?kI{5P?4j>z-YnBe{VMT67l`2EZS>o(XOdkwZ3fX zYh7K{Hn_{r^l91rWz49=h<#sul=C&}Oo!;j2dAL&o;)*ZrGUDL744&HOu0qYJKV_$zo)Y8KjTk z=CDgA3if9=4v(l6I4`_tA%cCewY>>9}FK`Gn`chl(3tR}M=AUiNi8v@h$9lY5!6@wJOi;8>^= z{xux>$92f_Rd(`6rq!1rIzZ+DHqwu}=QWB_k`bi@6M8Wk>|8APDH}!(Ll?ucf6YDv zVQ%sOS1TuFggUQa(1}|G{P1X+n&2lA26;(#R1R+1?wdk1x!sxMNLIdRYisX+FjC4mmk#D___Et680!FITdx1 zK9`YiAmCyx1q{ke+h$6!Qd`l14*qDT)i#(5kpc$V<9qQG+%1jcYp&&_- zf`UPQ?A1Z8s-b#vq9ITFA%|ZX=rng$P(n{Md{&0Y1EfjH>g34r#QK?(PXfdt zzHEkC5;qO?t}hHrT8VSk=27C9B5o(h+24OnWXUc_;_}Pz>?(>rq8TXTBBZt~GeWVe zL0~Q;k0~F{!f>oeZyFh!I@!70BA|1CUy2?f8K4z8G1qvyHl!G=NbdZ~T^6&OX_PBL z$DAs}-lvlliKU;3zGfIcMn0cuZ`KElSHW^{8my|~LbJB^tD#!grZMCd9{q4MJ~dNdK~Gk;=7Eq|53v`f9?2HF0!ZXg%*z>6 z31KA4H?mi|-eO{my-LL7k)L%4N>*4uyWo@)%}df+6bV@Z(dfuQBN{?6qL$U@(o?gD zA(DGlcDMDxXsk#m%b^!TR#pnlaS%e}qK}NZs<`ZS-uEVJpQo&?9KzHAl{zG*Bfqr4 zcG1sRv!h81y?u&EPZP=EV^^%7og06N$7*B4@#qL{*u>C{P8#FQDEpOLB{m)lwhimw zj1-?HWQDmKGOLodV6Q}5X^XOaE|-VPT(#7N=jP&KGQ@2hk@op;M6FQSa>tUjp@uEy zXzHC_8Mg*Dii?TLsJNBatJ^EJHPXq{G9u#RXm}aI({X0(8&SAmPhT53O&tx=9dwExQ_D8syNh=?l!R-I&5Rbg0RTaIVQP?~c?U+`%*fBPgi z(7!fQ3D4-Di8ILnFNVRntXkQf&sUFZZ=SGCFA&mbV&_+G zXy#U~L?I4gQl>FIo~QKBl4J{03cw|)n4yo2g_lcIl)H%996wmT0C;D$Bt+S}SchDY zgLW?s0i-ZFhcLJ?5{Jk;vPA~P>s_$m_;#u)=v&;_3n>tBC&VX6W`@M4%C7)D1YB@q ze02S~{6$K&>X0E8urRrOMMbqm1qJmH{@^{I$5Z*AQ^f`jASy2B5&>^s(mF~(NqpC3 zY{wGMN9br6|9EMggCZ6ADMzQt5M4WOq=~HJZgeU9yM64@d!!V_~^k(Q`vvQAfsA_Jnm!;lT$%MQ^*k`kDpRWo6 z$zJk8tyY$Ta<-bw#d7&O_Oq}HC1q6Fi`-i#$sU9lRe(Jvjt+7jdrn*_BVSk)8>0Gz z^%q;>QCtXdSn}i6e{YUTf@%p8)o7IEBA66onVkY3olQGFt)e)0%U_Myv>-egnwUuD zxqUZxvqCzx;>4zI=&bjO{fS|7JtjJrtKg$fp?74^YqD4}bEkp}=4MJ~Xwg6_75>L1 zF+RIR<^O4Zsl@VTTNuE47b(IVoYi)R*G!kKC{{9zZOd)EdKALEJps6OF zs7sNJiKXBKBe&e{B9=GO*M;$!Y0;(08ClT~b94L|0Be(^lNoUHZ;=pIC*y(~vnydy zw#k`o5h-(XjNma+LVzov!aG&8PQ8U9UO=tR&6?-#UkPhjgQnLvYyKZer;dUy+xpEE zEeN!qK-G9nv4Zx5yFN%do*rmz(5*6e7Q5`x+k185)L7k+&~j|xF!_05$54B_tydJK zw_55OAE{1pB1cDHViy^oJaZIyCfGjnG6+qYOHL@m zBfCwWPkeft>KbB7B4{j#g%E`m>P{0DHy3G4121m2#j47MJ#1-kY~YZ`=8c0O6dScK zqAF%1wYIG_sUEh~=uQA`LmGuHs|r8tmnac_flJ2sZUgNkiP_S;L^siY`dPx%-t$*oWM+Pisihm&KsOdj8wIJzD= zvSTQ*RI%cD*aM*_q_7rKtVAEev*QVEmMPGujrGnGzLfT6NEhY0@X~yfvC45Cr=NV} zW&-j@diISz^rBT-d^9@8h9tIko^+Q)D8U0#h+470Y*()CwL1z#SIB`>(BVrDshxpn z;|QnAgB7@j!K$3mPzSe-Rnh?r*xiY;!wwnJZp&-CYU^^+=xje=SZ)>7l=zoqwv;}~ zpRF<0z`y_gi@O62t+|3QPFYrl^dV4+(uyieo*`Pl9Yl-&O;h&g=5CGWb%ptJ$;b{l7QemL-NggYZJ$H}31qBp4m&wr&(#hplr-tOxsq!)h)T;l5 zO12U1*AiBCo$?0g-WbA(h;u!@bPbsny7ok4mhqdZTcO#+ z1z%NP^}kF;3%>1ra#8`}?}l>+F*?~zwJVnQPnDl zhb8TvydC=0@~TL9E5eJ7#*oo9j;Hh%(45s;gYPv2hg?^pUXh*Y@#c&zz#TTb)Xu!A zg|Oah6GOf9D`CY_XM@BJSEq7kU~m&*wPa^PySZzf#*R{_>e>jmrN_3)y-nLG*=onN zKfD>y(yhVD)%lNb73_K12f@sqZf1^Vwsu$nQwPksz^HvF{%l;qR#y}0iIQN4`qFXl z4m4=d7LLuyeCzB*{iic1>R2gPt)#5b`=nj@jsor*FjfgaUh>FNvDW9T<))Un=)_eP zb@;#b#8o z4^y&wN^a}<^&VVbVoa*mp>NAB#oKXQ6UaFvu~_wJ7AR9jT1eln>m=y6|C?P(Tj)V1 za7pJ@%zz=%J4tDXL5PG;r1HR&>7)aZjt}~%Rh`%zDh`$P?At8bnJe5)FvnuaL|Kf< zx<4g;deW(=d>}88DF*=wb!x0iu5HdHD=uQ>#Hh3;fK|=xP<0pEVk+M<=^M_k#ltA@ zg#bVBROP6x-W5bdQr0wM5T9+1j#)uLxuH4dI!^739& zh^9u%%w|}=0Kh>@sM*BYzW9jY zMx?~SOJY~jpQtN}r<2e3mSlcLVJxpPX?_4OmZe}Osj(FPDD2^&IU%GwhfcKz-n!t6 zYzLxmhpOKMZ+YU`o<8xBckJ-#gV!S;oLQcvoE?czDMJ6a!&u9wcu?ztcvQ)GV;>Fi zhn~Aul+_^a>9@~i0?udIuHZbCY72z| zr)WY{(B3m^c!{PQ%#@Ft4kfsG&3{jBt$a=FBhsIux${4s5oBcKov)0!ieTVpa*L}D z+oY(hpKrUWh(TJ&p1wZ7^MHS3Xm~my+BIeXUQ`G@7-uRTlE%Y>C&GpK2oW#{fu%n2 zB#%k=Me-ot`0yt^A*PQr>mw|LVdnr<5gz=6plx>zj+lZ5Vtx=_{OK6)6zD@F?V2Ns z>4_1ejuvbH-t+PLTQ6Sf*l*bpN6JrKv7I8FKVR-JVUT;mytR3hk?x=wb05nK<^sm~ zla9gFa}-#jO#3=SyFpP{?SnxKnWe4z(EmONytoVd4+r2l@^SJEDMh*Z!F{&@da$~` z)jwMt5qQB9Wh)Jel8WL?(SZk~_7q&d?lAcAEN?GZp)R0Tk>=S&`YwMIs@`INSHAbO zF4%jP6_7up_U6C>JYKV}v2X{iTwYne8|mHoiu;zz{*02Bb3H+r?IK9;D&o$bVXDw} zxCX;QTkc?^IhZV1IdTHeWD37zi?uQ~)_JLL)}GaNsJV8vvl^N$xpnHQV$p>#H$vh7tyi0`eH_s+(DJ|5|c*~{;)Sfjcb*d~J7CrF?1^xi#)ZO7<5bR?G za`LKHqtoK&*-fH^N3~d_b%xAOaZ^fwRkPKVD_>C~gv+;sItB$$nuC8nP`LC?Z@ZhX zUQf%~R$K(T$B?d`snhynvP_U)3_dpo1>o=kY7)UJRXKm;zaKm*PY_)zPX0cr_Rtqh zRiW+TF{%3X;8f-sSQ#|D!dR$smya=Qy@7;N%k)%9#Uqbj6BEf4%S>~LdI~An?a1*D zH^=+@+sEt+Fu!(W)HAhuxw6bF{m5$S*r-(-sl~Gc!05-P7R$xyac_3S{hFR!_@sH_ z_sInATlNy><+YmgvZeiq9#Y}iz(qhWPUgS9OVPWkXRVZT;{!Rg(80tHgzkefoy6z6 z2a>h6&;dmd=*Zo%^oY08L$*sbYOl_vk74nJc67vysSo)z9K?Y|we`E4^YPc4ZaQ-p zm%3io1;1G3lq=JLHn2@7iNqT(vBtFuSH2`QZ&EaG z{26i3w1naN6{w?BUq`ND($PieqC8ddiKtjV&0Go|?}(88EzNtv6vK*9#z#|=H+V~aESA9$_O3O!a8~=rBZA|XG5JkmNfW%qI zz)?tTFPgp{XWsyOIJ|R)EI1-?AbdrOVA#zS1AV~UJnVGEm^TJ|K>if9#-!982|BWs zLH1|N^q%>BSa6=Pw;#<32J#Xl{LCq%l5$Vc4+vo`*(o$H>hz4%sU$C`_=!2=w?Rbl z^90uXBePz99QJ!@Mumo9s{roY%ITq(H`Lgfj8iqiC|?iuCm+ZYANE_ZK+aCF23h z7rO1D!I=4%UCi0-p7WQeZs8BS#zp=C&XcPg=fF(J~1l+ zVm1Z=Gvt2pZ^Qs2gpsjnK($}~*u3j5~aKiGnDG|q| zEVEf15qeL? zJX8jv-hfqzaH!;Jlp#fm+f^xm<$EiePPg&}|+1;$; ztH zMPip;AB|(rD}pc9Zh~jz?y7wL5(~r_wLgB@1K9ksp8C%zoiFp~?u2LZ<#RY2RzF^* zJ^Um#* z^iz_c_o9hnV-BqYB~B)dKyj$%3@r{zrZFt8iy5&BM5{&Gs?(3wdo!oe zV;-*aI0-M)I-!d@g?a(q9BSu1BC1i{fpeCrU$YsszwqEW6vnDw)NF;aDe^a02+qj#dtm-_> zPzQ4yh(qy-^M2P$to$Xbl?yJugYATkT~5k%AhxH6Bp{uJht}rclh?$f4GI`U4fTrf z!HVNHD9|UjdfPd!iAkaB5c9Po@(iELTCg@-vKfeOB#BGqUx?=IPfa|a9YZkIXx5JG zB8sbL(@r(YCp~Qfw4pe7+TiBgO120`#fMf8KLh8pE4RkkUWZOTKZx$3s~h)cRrKzm zs-3tjclt@&h{UhDSk%7|-D~5F?Ubtdqxexr zEY&-|sfE@lP7T5w7P53|djUPipFTqUmlv?)gV9e1tshyAeD8JJZnFU<66F0&65Hgf z)ye|I+_`Zfz~>X#6A%9|J}SMyRKmU~-%Pshn`JJqxbz7MmcrktD0{4TD*SK);fYsa zXJwCEFy~(v0TVn6l;eEj57ZZ$%TNK@R=y_z|3{}?Pkp@%>z~n}`rl3XKei1djqFWr z&72ubY>ix8+!Xm0hM3U!+N3~<=amI$F)+x^0!QGCg+++On9$rjP^#QgdB&aIUbSQ; z;XZ-<(GE6Zhe1O8PRqJ{Zr?6H4pIBDA(%JUW9u=E@`?7!>Ji zlPgISAItFRhM;=dH@nbS-hDFLKHvxoMT8(ct{|a-r!p}(x&xJCST+Qx)k`yHilT!A z%<^Y6`*-+Pv68Ua0+ZG{iT z!SM6AFb1@0!WN9h5!L{fEoO`C6dqASa)aiS9$`oF?l-5~;Y=QUjTK=C2|?P9%PV#i zj0JP>PyMLjFyg5za)TE;9|;K)8>Z3}n=27(Hp`%T{|3CO)yh7a^oaO+_Pv#C=&;G4 z_V~~)saqL0wQZlya8QL(%sd>q`{W46D(^dr5i{E=C_HVxeT6kl7K-$)(J4Hi(1cM# zK-o4(tD98?GcK`D!q4`S52;tw+nCcBWDqbvjszEMnV35*=d>PevE!slRmrAKO#E@B z@Sw-jQpXUU42yb2w5pyiD4$0a+j3Rb2rBOJ*duFr3xl5ArykTZ&Yf!N8;5y#D%b$I}NK#n$>2048bJ!yi7l7 z8qFtFhK+2K-YL-yJy2yK#TRJ}D#Tq@nCM$P**F|#FD;8Qez#U{~( z_}D!AZ*&@d=FtPDY7PSw97dUrr**k)Xn&Z-2)|A~rj34jAW7&uORr~nr8;(%E`C)? zqpgGI_`P&Nz9S(79WV$p%b`eX9q>Z344FgMFFgsxZaCBrTzx=y!Br?4o&Z#}0~GRv zwi^L9{<~6BF}e{;U~(wNITV_&l(dECkA6vnyv%t9XD9RSzQD%D?Z|ZP8&WTgZ&54_ z+`>1FmI`DgR0M)LG8%p*2^o*BSoL%R_Vyiykv!}6mK&24B1MHlJm}K# zAm0H+@+<`S??V)f)rWJgKS<~NB)J15ImcGK8sRA~35&MEZPCr6V&2Pg<@~ryZkOGm zmh=^~sPKjBPO4t53`|EOJmv0)mH0Lbha%5Bijzbs`Dt2K2y=;eSuM`SNqh>0%UT<4 z@udC4yqr#8dic(6DJGN>(_i`&S*9vB42FqAZZ|gcW2T@gi{uW@BhkhzaD@*MiJP48NY-V}%fApFT?{bd#pSXiAT zm)i&VhF}d(W+qP5QXfjxer>&S${C(y7!DSMAcGk^>w#X`wQC9~f=xVqcX6MS_Mf9$ zPhIAjZb*D-e!5bYX?~v`nlJarQ8sD0)06wH@wCQPlcVb1m^3?kOrOGMf?BnVMg z4ED*88=*SegKX#NibM`0b~g=Nw>fU9>7X9s4vPFY$VeoVJGXy#?g6~=tE(pvy+3n* zw|P#sejLu$^P%K9qi@*^@408cay}G#;tK8=;PN%$v}2YuaJ4Vod)3=?n<6FVtuFZD zxntrkA8Nf^ryr4ikorWPzx7YmC&HACa+GBpwb>85tw+jef(X^JSyZ*3D^^-;Y93s2 zk7Nn--+DUr#x`FW|MOsdh;|&vg9ZYUK>oiqxn+%v&20bsWDV2sQB+;S{>kl%@9JV` zCxW#F(ks>0)n|sOKw1I{W)N0PlMu4n7z0;N?{WPLl0?J2(n?{a9LpYQNtgxM+9J0I zvUx^!ExVGDDbJf6=O z1p)1_9^c0C*XXI;YcMEoz1*0D5G$mnhk1T=aiu-gBvP2->UO0tbD*<{wO&tx zLj>RLdJBh_%Q^8%NJ7Vl6jC3;$Hzo(=%w==qu~xJq=I{Xc0%-5Yc#7VI9|}~`%CLA zLICY)vZdI~1LP;ZNLXgUOdujsD>8?~At;Tg`_!L3&3YD$7)15fuooJmnzU(Rhvo$` z=8+<&u-UlsiE<3JL%2+6Ga)Ie`})O#xKVbL1liEbgG6^T!?J;2rzJalbPKQJU~YbIA}yW3Rr)ZEyRDL(KI7a|%Bxi8HeAxQax zy!EBrB6sKH427k${4Fgiff|*;>)R7CnA$-k(brE8{}NrfVvVBKR9D zgSb(agS%rcCN|rPe(^|HhH+@7R3;w$L6ajpmld9P_gM~Q#X*b#prGL^jhrNz*J?$H zOUko`M7LIqFKWT0vlw8G#cPW&vvM8y1b8QYD=lD?%%AolW)7 zD2z7Tp23QgeGn)1U}rBNFS-{7;5mCV=sm0He*h;I|E6M;4^L1V*vPRQlBXmX&<3bQ zpMExEuwca~5n4+he%G@UQ7Ul`R+SBP&ENkiG+e~hV0VyII?yMbL%t0yaynmwaGn$r2fL_y&eV^uoWvth0odNmG{N0<88qA$9CXa2$9IOJPrXU0k%s&Rw5}F zo{a>W4Z~4q-kFQU@31LHh1(?mTq9Qy#*UJ7yJ<$FIvn`O`x3I|WVszc``exDkOQlt zv>5>4ZjyLKXO~nx>+FjgJO8yHKaETbTBo@>;xbFmZ+R}fF8J3q#elQy?>dyz=%Mq8t9 zg-j5Cy|^+Oq4c4{b{u*nhps%GVJx|%Df|!)X?tg`-b11iQtBoF)=*zc_mv0DtlD!N z#c*oLd;@U)2)zcebtm5aX8RX9dEf;lUs0_*S@*NpbY)%(*}B8Z!|$c;1TVOl*RWlB zGRXhH82|1?x|AFJ<}mqvgT$KJkx_9nvQ2ZxvM2;EcgP@uJJN)x>5Dn=2hDiP%5@%Y z`cVN6EW-Ih_6&&xi)Xg>bc93aij>xE4hIiu(rjb{8S~aFJ3+sR&i*9`r zU9};KDZ^xklv;qjHD2UqJLN7!P24pgGs6 zKVx!7KdxfNhoD+43C)ZXNbJf^ZU>N*I40+8ikhok2V{w*Q(|0Pwa&ZHepGwye@{OA zZf7GCz8(>ntb)EJrI=idB{a%#_mUbb!~yRdX-865jAN-2eUTd)n82nBAVr6vwJE|+snA3v3MrSDTI?#ii@b`zFw#uXv5!-0N{*$8EQp^f_MZ+$DKn$wkNECK4F5j; z$uJ+4hGAG&J8HBUx413J*y$I4Az+{FN;%4hYU(bz6Y%x|#3DIJVYh>u{Bi<4-x_4P zt6z9i>rGJ;E7FU=fLAe%Ywu=u`5E*p7_&kIzfjbcIDPPKFi`aMkK}uyeW&_>*Hi10 z!~O-MY_3{*pc)2!sO*iG&;I^0W{Oakt<#GWJ?0GG_o!)IO>haP8(L$FQM+h^bp)%N z7CW}Y!~bIw-y$)#ZR!_)-xD~d%@bZt&1N9(J||XPp2*L#JC_-@MXFNmVv)cZ&F9DN zf$>IAC6Om~!&al!<8lWDj{2)>#-&}s(TR9XvF>t!c=3>Bc8=&rt@>e{ECsGN4o}#d zt|=#k$~oxwCytl*ckcPy!N_ZDVTA7wtJ}T78RetFzG*=5+S#q^^AD)lRlerjcNoiy zL+ATXi1>>^bK_58wqGDo_860ySB`(Ef;38AO0}nU(tY(&zZ5m7MTu-qYU6!cN=Q`_ zuHe7Pc9n;{zskVhWav?!%_`kp=gCJv{NpU_vvW=fEM_Cv-jmPllj1Z!ZD$<|(PwGn z#bi`@5`WYK`pK@fE%OD$V^OM5`__ZHr>F|>(9AJsj7o1&)MtV~y5C#BQ>7Q*IT@du z1*zKw{s#P~u%q*`Wa;^5_-8-`0wVt(%MfyAu9gm_!lp)!uK!;#qE!9I1yv1cSB3%F zt}e8-S#cAFN}4Jx3JqL)VNn@ZwotRYRqZHAcgrTZ%dz7r+E+&PNIVa^S zd?15jAhvf2<%=4$g#y;dief9DvHGhkGiOoxr8>=4<8k8!cqWf+X~;)LQb$HU+0XI$PhIuIqY$4R%QUYe9#2jBE8T(T?n@PpmT(ia18!O@}j9-%gj_)E2sRwABmGKv6e>{2eG1?879I+D+VUu6*>@M}pn? z=&#c=>HVYTGzBF?1}JC})2J}2Sn2vaYywq!_9`Q`X#TU95yHW+C|zh&_z`l=8PaBC z3a$EucZ#}d?hif_nqKMo#%hu*<9WWW0WAD#Q-k+$VCYTb``7g%$vBn*`8tQ`a{l}w z6{8TfFt9?nfK{)veJF8ceF*DI&-s*XnY#leS2_pR(B26%MPY0U0jo6mgF$ZQ;5=WKjV!}`4pFO z7>?534{oJ=y$p`5>#$=G{)O$W6IJWGxE_^GxVGlNHFueQr9Z@au>-H8agKX-$CAW$8 zZK)gDdh8eKdSni2q!2rp=0SJxyih$D*M0)zLr=$dBp>S&OMnkHEkR=#2L-8OlWdTu|Q=@z^+$lH@ z=vBV;*eN`eA;b`y(Ev4+?>gacD(TOv7T~q)eWjH6eH}uuJ4nTicUsAst$?6@g;$I~ zdMXW3Bs0joZBX<(HoiCqcwOAQz#1T1v2rfWNP(b@fj`iX3}8`6DSHx-tkdo<%yeNk z&~%aQm{8#hEF0=jMm{dcM+LBlUVw(kOYU!~c?jP1UJ%|wdIXO#T9kNU+a zIGN=Dkh}2%7^^{;3b;xLdoS-|8+I{E2rT+s%U)7bx$2n<2H0* zCldwY7gw!+P_0lDJrNKc(M8eM80RbeSZCx)QHEDOj@Fqy-u6yVLbtu*Gpf3KD!dW3 zgqrdjvu#4%)g$Y+i6+a3ZPAQwAF?%Q;blQ?(HZ(`CDpv*$^Mg7_N%=T ztNv8Hqq0tsdja8Q+J?E=E%}KpT>{lwBoS2lkfg!vTShf9Y&_p8$P{zJU;#jGaTBA8 ze(g|~qzp}e3o!gG%s<|c$82+#yxinZR|cvrUwBSZrqz#BBWg~VytAerzjxNp%wG^q zUla(WdHgB%Blerdaa5{67%) z(UnL$Aph|8jQ?Wb|2*^e-|_Fii}C-va;zewfU1P{edGF@-Yhg2?FjzBgr`&$O^LcF zSV_v0I`kJOiyft%6fdZs)~o@Z4B&A{rqs+FVte4fRy`f-j+1w$Y}0(AA((v z*`CM8wR8udQRdSS!hMQ%=25ZGXja`AAIH^jmyErGZpdT-Hsa|Ka0Ui%r^rich9Ux4 z)^-^2q@WpAs+Tyk6Rb^4j#x->G84^-ackoA)+8l}4VFfViqOn>*7mX`^-iWCrqUV0 z>F@mHJs$S#Ce-C7H)6X?nGxIR=^E^YmW-d3wo zSYC5Fu_c2!NoW@V|!QBhWdj$iqaU8ei2-Bd!!iC#t#wY7Di^lA<_m z=4xkH=67rHq^<3}jCU4rZ4E7E+R%Xd)xBUuJhgr+LBGxI{r$Iq@bl-c^LtPhDQ#pe z|6cM!Q1l(@X3S;~JkkxhKd6$5l7G*9480wolLWMbWf0SeE_a-vCn=+(&-S@Pf$303 zVZNx^7J_+08>IbK=VcP1%TV9v5uu`4jRp^N$&8#h7>t|*SVkb3G>uS+XCBeNSW9+j z>UHq`U=md(D*_j$$L~Xo)W*AwQ~*ZCa51KyN4DUjC2%lkpGOdJ|0S{2Xnn=Dz456D z-vm+JxbMJ!aj9x|<~`am-$=yIeWINNFfwad`0AJky^<(l8T*4KR674~(4^>hxv1B1x=i!JT&zvlGLd^fPDmU%TTb#;72n8=tlzlNYO z6u0;v*ICa~R9O-yvcKd0r-sBd5hyhO_YXZn0RfTxKQyGOm*f8)gUMBuQb83)`{sew z$_We>?kqe%>z%oO)NO^{bh7zdy`Ip@MysVeRd4_*rDYQ1S5sDmHP-w``o-fV-oRi?UBhe^Y!gAZ=Q=r7FQocd#k_F zXi2$jv5j_WFs)XR!!b`XSEyr1yR^{vU5&1sfVdI~X#9ywG11aTj_jdFE~?4m*4Dh(2E1 znjV2(U(j=h3csD%$~Hryv}x9+&+P^{aymtghPypRcjN$f0PR1Hqg=MxvzeA@59T8@ zmaIGuic>ePFD?+^^ckv1qApM>Fu$3L_bBY|)#L}br)eaOC}`U)ToUq`xBPQDNr^9QbMw<~zgq0HQ}T{StyiS>G^ev%Y{^QZIq#Bs)O< z6%xo3h=e1!-O)&{CEh5qP&F4VYK~L7OQs{<#+BpCO+Vv4KItDP5e29}43J94cB4wo zsDuV?1<46~L(K1|*y=l#Ch`D$ux&7Zg;Ux*%OU(YUxAJwQbjiC`tT{+auCm%4- zt<3z0ZqfO^nKu?eq{2SNh?~VxDTqDnjZ>(7@`~@Mlh+oB>tAZuU{*f*Xr6`IcLf?~|pKbm?BkA^c{rdydZ2oR9>zexB0%JlwYyuDOa zPi096ttUDR#Wyn5@8YE_T4*(1DEB2M*U4AMz;G{L`|LSz(sNJTS^eY0k zYfJ!NbE6;nM%)KKW=*k@M`Hoe5!W^k*rid2o;I8fDxbL15uctWaY5@Mtv6YJd1IF$ zRGO4NL}A}@n9^ne;H$V~EnbzN$)3@`qw&X2&GlfYT#9Up4SQ9NlFoK#MQtlYfW!=Ty?3;VYi+*6uF{u=3&dI$nr>Xz2b`B z9!owx=eZ8%f475$lW%`M1Po@mo9x`(-Ob(2Js59a4G;++0{?u|I&m z#x+{lz2N!e=~Gg@f%NE?tjRD;`(zeqoITU@=ohbDK6!`eJ1D2NL3wW(J29Ni{86qn)xiTcTBsWK51OExg<`IW%NoNsK=3Le7v`9=+3(JgJSve7L~uXNG* z;Ups#I=*ouk8FEnL~j`RHuoUWm_;!UB++wCufEZY^ZkloXj{I-2EX8C&RQ}mQx~gZ zq^BwlAJ5f<>!iKaIy~78L|mFulBUZ4I0vgE1;fhrE*@cKbpwQ-=BKB*Gr12bkL7c6 zGP79|fv1d-GPTsTwNeeV*~$A#IwOK?7U!KvPhxT+9AZ5u3v#C?W+(8n_^sq`xs#p4 z&Es;DQ+bVb%U6*gR)>+3#bt9?jJZlRSkL@V)Lq17r|_Bm+bh3W-LtuQEJUF88R4`; zp{$hOJRoigQ7H_0RKE~^F*!TCyHk}V1`(qsV?{WLmdO>#j`ri_C-d^yd{Rj})6vjt ztB(|jx@(Pm>YKS>VxX(i(`Rkb_BlJ%If<#kPQsL_qiLY4!I}2Mrm^3a!$6%57kv&EMdf%s(nMEgotR;!&em!76IEJj2`hQ2IcZs$Yq?RYJA<<( zfC!+LX&j}eVI1Ibh`!bztBI*F>503l@Y^nxW_pXt$V^o}KwCMccsEqmrdK(vW&YIW zDqXQTsxdIuXe+9!=?ZB+R8`X4WzXZG(ETp}l0a?0DxO|iYqFsMyosqam|qL6e95vIDMhIktIasl>7iH zE0D&C4uHAK%LC-Q!}Cy+ONvX2##b+%8zjXQ%0Vs{I1Du^iYkj&U;{P-38<`|TTxbB zg%z>LEGS!Cj%>wBCHZrUh+)2F=+CCIfnn?!hLj-V-43&zq%GMyN%rLqOpi($gNjRw zs|GVDP5cMt$@;rm{F|Jaf6tmRqsJ5!mrN-x(b+-PW zvdsxVNWbNjk>Da4*;GxRmPiFInd9hYa$;6i_}t`3j02m?qqcfsQAt%kO{-KMqf|~m z=9j2%i)PwUHOI#2m5!~EBxIFVB9}yB7GXBZ%9TlSJ7rF>js#MrR;(+mr1(j7zU4x(~>cwgqQiNv}mpZ6yger;_7tsRHQb`cmvPnye zs|psVDg#gwPfJ~Mi*|@^ZE-QpGFo%;V&;(%YkT?@s0@{5)fELO2wpYdva&_h2vXTW(zjIEVCqirr8I=*P>(29!u5Ao<`ACMd0Op;Zj{ieJvl>ZusDdm;5g8P7LBN$@3j#DXS=Jbo{5!q-H=6hl1WWd) z$;l4$Lj*Y`0mG@*OE$N88#bbFJ}D_fbz-y_SJ9jo(?E>^9O-;=`{oj>$B{TP`u0471qPTQk z8M!^7tccRGunNuE1Vx$@rPAE8a&o;KU)7LnjP#3XlAU$VK;?DT8OKYtaP9*R>QeHW zoCI4)j)}sitg)*g%q4S$mqdpe5+7(%mXIB-o<~!2sx%C%o;OeWuMD{m)wC&caDGvh z!ivi@MjP6SVjPx+9ub3%&9NXX=8!g~jB1L-`IR`MQTYL1z;SA0mHUcnSyfS8;6ycc zY0=Vv)9yl8y67|tG|x+k7Gh^{X=M@V3ZFR)DX+$w`6VTxnwW5E@|iP~W|4zpA_nDj z#8hCMHMx{RvZBIC3(5$WkvMZ$77fy-!X}v*W15tiC0%jJB&Xb@ayf?#dvhbZ#)rta z6VdL`6eCizI6$3VsYui37R@IM+(FhlqcL+$lBRcLF{yn_c;MQT=F`pMSYMRMGfjsZ z{($dHzRJy4!v}7@24C<#y*`AG-0(3x<>qVoMQ->6A^4PDpTXyD_<~+vQ}P@5*3E0N z3TsJ~FXoq+{8Bf+j2it#6&m3wG`pu6hMRd=D>uI!E3#SaJU9FgzGKkopMy#q8~=}+ zuj5y^;d}Ujh{o5C@B^+x;ldmUHwU`mS9r?g>)mVtztRmq!Ow1f6~EdIzrfEXzsAk4 z<=45H2Yx41`1%cB{Cc8m1KY^JbE<;4nT{i8f(Cs9zXUsO3(6ubaiNSU2Cz8r=Loet)yGDUE}h2)2= z>mI_|!1ub@0D|`M{cipM4XBKvz3`njZg!(-LL5u!wG3Y3yT+rL;-Os4evm)M~AAivJNG<))jRmRd^apn?|>2r=18la+0$L z;-sxW+Rg6Z&!80<5w>|`2Q>x@h8JP@Ux4yhNCjd0RLumsK8M~ZD(no^sKjna4dR>% z7%BX%3aWh5=FP;Yv`cj=isq`h`Lp~vlRxift4Lr^upK1CFW`&qBIrdoe+diNL3YT^ z4zq{c>~Z#ln?1}9nfzrpe}%tFcJmy{#z}e&C7(UQ9(D8A`5O${oq4~oiJee>JnH!A z+BoquMj~h2Ai*VGZaAq%w5sQa60~+r&K)`6lmH{(KW3@*QDVbYtLXe{>31|6jLc|O zJ=B8V7FRHgqN*wAs2o~aII##Np)|1U(mGmQc^Ypxe5+^1nO%c3m&)bTLLb9fV>@Cn z{!iPRQK4au%creV8KNUsJYfTJ+@X}_7U+4D$V)OB${ z@DN(H_aT!L{*STG8M>xGq+)25+Wg7Hfnkr%eu(Vy-2Y>j&2Fv*`cx8uLLfce@U0cu z=lTD?ZLOT1CJQxYB-tU9{AM>b0~-RF%~^parz-!T=V}+XFrPN>(7&!MD_MfF-0dIH zX3ZQ%8Wx4YML_gq*eFGhPP>{By?-9J+tDkzRe)=d^6dXf4Ge6h!h&F|h$beA)H#b3 z!wKLr{&92sv<66;Lsv-4Q1uoURm_)K|Nma+Rg9WN{Bw3&!Xo2#r{ComBgu%6WCTuN z%q2w?mC}aURUtQ|*@)cXv5Ao$%6o4*M=LLv8y#_pnLSP)l{RlaPFvloDpNVAQHg)A zH}Ev8=M>t%{|8=@G)Vi)3o6cVP^b>@2A+PcR~3|+IdSlaf7SOtN86(k|J5OD@PUaH=|%#&16Z@!F6H@u5X2blN1}rpY5DX#V0nq{wm3X z4saBn1O~?-9ooQgcnaaC>3A2sn0_WK{Vb-R3rjzb=@Vh;7cl)|So$SQzZ{l+1=FvF zrC-DJ>tX3PF#Tp&`YmV+Z#U_`ExZ$!K8fjf!_x2J8-s3qdnoRfc^G=*Hz+Hleszsaxdd|gg{goDTJq$8bll#`Bj(jG-0 zg{1P^Lh*%mA7t9gTFGx~=iA2l`keB%@|z5RPJTQvmVlXF(7}Z{(f)nF{0D$f-v?R) zh@?HBABBh{e*@_C_}v2rf+nR6e^LWj{`dy4{Yfc%!PNi}{v@A}klXJQ4G`(~=?xI& zGmgL@pK*8-r1|mF0MUN`9*91O^*mad?X@Yj6@2*dcKK78T8=SL@goNJ7gE5apk~2kcnyY9eb7MDB-H`ie9=-ec8l z0HfA!^n2|FXf5AuaG*XMXxj#e!@6>fyB_rh6hH}qro!C-bjjAnaaJlhMoY(LCl55PS3Ae6HMu#z2wEAV?Q zdkA*0hv9zq2w-3ZPqQcBRdxj4VMpOTb__mY$KfmXH2lJzVFr7aMX~1@_73F`0hQ36 zb-)RZ42O8`ha_;UJbSC{m_` zx*}wuaCBqcm54w#meBp8b|LX-cL3T?M^;%HzS=QuA9T1k$T64f`wfU-Z%XRjs)XjpEII#5!*Fc%4a7Mt!{B5Z$ETz zfNnts`h;Si9DsLbFW5duC1N$9p_6Hi5M(Dul)}scQT)-5r!whafJ~yG9+i(GQ z!6n=c>v<&H!lR*{d*B`(E4evXaU#gg`&ch&_z{wPs^J{%kbK1+V3y>ojvPIU z^>!p>G1jK~T~RoaHb9FcBs{qRQpgk~*Mo=BJ)LyVkn*-A5_l^xd25K~ZJ;%83+;Iv zbm0k-#8wJvki@Pm6>TiTPW!OFPS;8DMi@RJv<7AH4q?*Gg3{fOrKyIZ7-azsJ%1Hx zi`@ufcO0){{mE{&p$QRtpjW(C?1QtkG{bAeZ-v?vuaWu)^xgp7u{@OwTAvvruL1hR z_9a1};)kL4Ug)OL4&Ya(UeP*tx8Rv@0mqGE+r`Kli7 zrh&GJ&kLgdJw7jh{B(%xVVP=G7}lyV*s30;dkxQ!t>BRqVBS#78{t$8tCp&&wV)Eu z5U-J^YPL`{e-73}qBZJ0Ad(F*nEKD8*~z5L;a(w4)^JL+#;1);whpPoPmqCN57aV0 zSUd$Hc~6Mtz0h!+1wD9g=)+TCD({O%qaW1p{%{-S-^mBT9-aXY@xkyR9|GU-p)8VT zvc7x}OXs86P(GH8=Gkl#AIIkK99G6Buqu8oTh1r46+D-%<-a1D3aS3J5DA^(Qn@r6 zC{F7Y#AboU`b+3xXeskd_8vM965_sKUKty!>XD%c*dc@lC{u~h*=jLID4h+Y#T=nQ zm?tEZfq7&q2eWe=d-VjS>8j@(n$S3!bp%Enfpe7^YDuX*FfvYK=&6jVm)2wSeUKH` zGcO|^;W4)<=WYzWM#sg#t}Wog&+gmg=b<_-q_-0%;w!&<_U9znMlGq1VmyT+1=q&|I@EkTo4xO=~Y?w2o6F4N& z+Vj*%2A(pKcxNP?k-USOfd(;J2!|p0n$~6|d(Ft_L&TVPI>gaqD<{FP>UNdj?{*lO(PtD1+0T=-dLWC@TgY$INDUk1e;zk>I$!_{rIX z{=DO(H}S?RARfVoacUmHsd*Hq<_Vmdqc|b?hz8Y3L+ioLChN|p=0PdDF~-D=%4!nB7o2+M+8Q*EJwoMMiC(2 zv%qlzCyZCJFk0~>As`E(wa!YBLeU+km?e_|ra(a)Jj854D=Mv*j zRoq`uaeqg}{R0*EPjvMDf&m(XAsUA)O@kawhsl}^b2V4cMIHiP$p})(f}o5S1ZBJc ztrxj>Hq2lh&?VMzkYic4BkgsFf#TmU7Zk(8|tKmMahTA4+qm-*5M~WUYy2X>y zOj^wGU!`;;0rub%htB|frVtyvrf2wOaN%bR+A54*1u_O5g&BV#{@#=# zPE8iJZ>H&=^`LwH$|HXx$Z|un+z7DTr~i%TV*q1!EfylRme5l3LY&qL9l*B8^Ek-W z5};IT2j^=Y;0moHT%~n}9aGG5$6^GcY6oZ6HKx zgCIf6fG*lOkfaTPRBb4X(#ArzHXbHv=fVsv7xJ~qutb{*muNF^s%F9s+IeuZmJfB> zT-dG^;ItLO{n|WuR$BmXX$$3a&BN%p5-kNymj#zNibU%0c5u4h4o=tG!RdNCI9+c$ z(-j5Jv2!tY(jfsJmJ??{7kGe8B)05#8O3UCj#PY!q zjV!M~mREvTtA==O33S$$Lb|pF&e3XNgmx*i{c@PCT>i$|B0Bn%8`99ER!t65RXk`)16(i9A|~T zfH`(~tKwJxrp^=^?x}Jw$s-qLEqNbIL+P&H3>D5|HohL_W6m9Qkd;hJIER{z;7gva zVA%@c>EwJ*53cjDIDVm(jV=6N<32EM_R?w#JSvKdx^Hiq=#7&1+H4LAwdKwh?UYX7FgYKs#*{ zBx`l3r(57`Z5s^NZilg2JxtN=z@=*klxREQ0&N%S>fLaS_5f_w9)vrzhu|^o7#!D* z!)w}8a8i33zS5qD|7j=S5A8+PMtg;I(q3gL+UqP+dyi#n@3T4Dhisnq5nHHz&dRhe z*%Iw5wnFCz21XlbDf-C+7YzCvP2F{kVnF!H>IE$U<=;t#iY+Sm3$m^L&fj~@s zX6=RZkohx{a2fC^Yq#P~fipfHvYM=&Jn;-LzjJMf(l< zYQMuU?N9Vn{(?NM5%L9x`9g;hVL+uYp+=yw6%nvrxZ!3I33rPqctAwMBf4t;OQa`ObNoIuw*66Mi>%Gyrmx4SlYa7O>6N=q8`)spa|fT= zP^z=1WrA|IJ10m-TxGU!GNWWFHlb+%G!kL}L=Uh<5_m*1v=%9lEP6wR=mVofKNv3t zz!Y&d%oGD5Pn-iqVhAh|L!nj-gLNVkHi!{$n-~?`1sv|Icp8ik3y-!3jr4Yw$MTVN zHryi3Foz--LU;9~rW6F@zz-dERw*vFRa|TlT(oNAq#1TXoR)E?#xQ738n;1oyl2%m zu;V?ew<@Ei!V+qZOo><9CoNP#trM?|JJoF#W6&2G3sE8)+KC+KCe8)FmJVTGFY<;aQ^$chV)6)TYy7s60c17pQ1 zm?~DoJcLWcMNlDX!(=~EvV)?#${;%`<HOyn7A4yB0N)Ej{@^w zC>1xN#kdL9;P+B-3tEj$!SJ##bdem>pd4B|5RN;@yDNgcyFzk|BI)y4g(EC?IeZ%D znA|`lovaw<3o`79_)rubtwtVSm>2X}pK#*kcoMSEK--ZziY+Jx+t4)LhNf{lq=+4G zwzvzj#oZxC0LBFg9v3`D8pkT7?AtIr7#UZwYKQbMK>jEm7e}NfhkU@C15k|1^Fs30 zaV1>j(~}#Z#HXh;z+#_HXI-WAIf4TqZylvKhT^jZD8qF5Q96y)8{qtU1Tal-h0G~G zWwVRUZc+1FVEE({4?uhIAaoT6(B>b6OmPUU*~D{%rkh!=2CeGSeNufqcICK{2q;12N~ z+$%nSed0rSPJ9HfiI3qO@tK@}S;(?|(A|mmpMz+*xKN;XGB_zGgVE2)VDxiR9sp~y z9!;5$5KWmbp}9`jATSyfDgWlr1;D#{v5TrbnUFfVAsgg=k@|u7nV0mzyk%%u>DmAAt?ELX4 zJnK+t7olxS7YHmSKu4g200V*2qhQ4@uLqOhbkjM>GU*H}4P)JqMf3@uu^svyfE75- z3({?$O%u4%XOr?=h#wS^ng&>f_3Q?yq2%0jQQvqR5m$__Z(NFq0>E9>2EU3#|b=gL%cpE#cC| zo({`hUg7CbzI=^?j@r#l*XtYa4I$1ALp)e!8+3E0tiqwxrZ->U} zv2dvUduJy=aAF*dM!g%3wx-#FhN7dY9Zvxqo4;fxQr z(mWO|ABZ0j`On}Mzu7p&4F z;1WF&*6UGlwH^&O=pML9Zvk8MmT;%;g+qEPcua2xNA&jawB7+u=$+tYy)(R}cY*iy zuJD=O9e&Ug8R$vOt*5ZIdQa9-@5Q?6sVrIV!+Ps|*+9J?o1mw$^YpV>p`Okb=!009 zp1~^g!K_*z$}Z4{vDJDeyHp>}uGL4doAgm^o1Vq))W@*h`dD^MAIF~8$FtY;3G4&? zT=q47f6ym!&?j?CpTfK7(|Dpjlc(yl`2c+m&(!nzXniiv)(iMVy^v4Si}-APJ}=UX zd8xjTSL=)TN_{cEOfTiv>Sg>Ey^8PBtN8=^GXAi>oIj?o;7{ro@Tc?(`3rh2e_6kn zzpr1)Kh-beU+I_gU-fmGp|96s^{X_mezn$Hzg`=t->41MZ_-BU8?=e~Ms1pYvv!_- zi?&d|RjbnLv^Dw`ZN0utyHVe*ZPf46>h$}y?RtZ@L*J|2tMAwL=?`d+=m)eX^@G~e z`a{}_`or2u{ZZ{>{c-IJ{R!=?{pOA(3yH%~^F%fhvE3%ikB#x6&y?qpZ8|FCsP)e%-9 zV=n`q#^~w_#A2cgc1ZQhOJSlMk;x~*5;Y<|4a(Js`0T)lGy{^@dI?Q~eu$f(HAord znfzsVlwC!^3;z`EkyvzX2V5;7L)!;yCC#Sx2rQGMw6qstp5i1Q&Hhr?yZRq*?C5Vcb7P0o5B{8nYY`E-L){#UKRyMm!pao% zxi3snaRXU+g3tl4ImNlrKLbnu93u5E&^P=F67;X3tNu+`K+rAd+;pSg+(|0B(T@e? zy|Q+a2^wO&J~)v3DF(#vR291nbM}3+o7uH%X4`P;DZ6n|;oEPFw(FV(xB5@$x&92% z`Y+H{{}npvzd@S*I}FzUfK2^Q7^(jS=i)f07%aH|6^)X-#&P?n1{vCq-Qet-w{T96 zzQ+XtV{deIklxGFO?+RJZfP0uJ`;n>em*n4=ir3c|I~qv%NK@YUL8a6ygX_l5@OeF z20J14iaIcAIm7?Z&!VOlHtpcEuxYKqnyYovkNxDKgMsJ_x@VQ))i*(J+1n`&Lqg8q z5!C99^^MO5dg>{A`WMaW8&8nO5n}F@&>00V3N#}c48sGq5d+aiEMU|C?Tl8?*=P+t zj5g5AXbS_3I2dRoz$l{~jKT5=MrW9Abb;AMSI9TI!D6F3lw;l!BMB}xlHm#?1+FoA z!d9af+-;l%yD{%UqYpf0^o1vle(<`H1|J#y;Zw}}+DM1*jDd3UR-hJih7>eS6kX3o z^P-?@poarJiL!Z-6MKIjl-%#7QDM*;-jW81WBIr2zjC+2fUo3b6`JzT{3^ zBYcbI&kOIcn-H>)D;wBGN5XetdkQ-S8u57vdD3f0Jt7^%)WdYAD#Gs-bX}N2k5nx# zhdv@+e)NPKKe}>#LX7T2(T_0-Ok*^(F|we8F&4TT+0fG%2mOrkkZ$CJUGp3m9MnK| zv!jj!1GjAu8YBmAlC5?&V{Qp5<^>@C6dv?LLe?LV*C;cZ1V$Ms0#`P@N0r(D>q+fW zPbGK?5KNik^ccV|vo{ zICOZgioLqVle!i95P6b;JuxVgftlYh;_~*vHB=I>GUD>^zj(@|ZT$73=inG(nQ?g zdWchZ)#$D_>c;PB=*(F$@CSX{#U<2%FJ9C^ORRLxR*e0I$XY+sT?eEPqi`e5)X0-e z*a}^VGOsB~!_Q`jkb|fPcdf~4E!x=gik))S;h0<()W1Ra48bQ0K>jG80H0s*xegz? zbiW#(KS*BvVYlw~_`~nk5eH4l)Oy(HKlPSfSmA~Kzg^Z_=wx~Iys+HdW^(;TLZ0Cu z>g#WMU-4heY*6&xf&Mu9c_@1GQS=s|*cGG5ErkBYA{b(nK(?_M#u;UhYm}n_Iv-{k zl~7<*L8-9>RvF9SB4asRW~_icMh!e*tbzl^YB+4Hg=dY6;Dm80ykcC2#^*oqfw2yL zFs_0>jBB9LxRzPQbr_#q&)OL`u#U!!tPAG(jg4%9aSN+3Ze`WRX13O-V^Tu4)7i7~MxKCK z>?wAsG;*uh9nQ@?PQQS6R=n+4hc43J8aFs0ek;3)zZEW$u+{XO`0E8@xv99{BHGh*9$4mvtcom2;e1xRo5Fa z*E3Kyfm<-NjIL3)ajtNDE;l~s0Nrx|nC#@A`sCrW2%jbRtU+{H3f(vaM=Ed_g2NTq zAHf+4B*KO%up@$*3T%boBn3twIEKI`%%iI(H#2xy*EtR6p>F;Vdi`h*e|5PhXNRs!x+cjZclDy;X2;5mo z@`g9v(91|tSGtuYY#o%uq`)2Szis}R3`~b`5_*a6z8H2FUY3 z5B>QB=QcgImX}`-U{|+nfCvu>=dF3W@I7;bydtp4V-0eg;7#zW1I2E>4I&Rf-SpTk z`(W!sa$9KIUT{r~^Taw;@;szpIScagsCl(ISF~bpQ?;n9nrg|?%0TJ%P-$hbbZMaU z_E724U}?q?7!bZNZ*gu@$<;c312(I#2R-(VP}_`P+vFqAop!8}9cw@?e#qe;t~L~R z$g0ts z1f%~{jQ((p{!=mbJOW;-MQ(`2G|uJR#O(?y#BVSd6{007gcqXC*3imq3vJEzkYILz z?q)~mV|IcJvkQzeyTUB98x)w`VX>JAD@;GEF_U1OnG83XJz=xi3wD@i!Co^J4w-%6 z1+y=FWcGva%>MAJIe;aY=ddp35Z2Qi%F@kDHrpJ@7MP>hA~TCsn`782b1YkHj$@ab zb0+)7oW=eyXLHS*!z0Z+ z-rmgTz0A3MG=9gMMSQY3kIymZ^YhIGe2rPmH{!R>EaCO$V*Y?x7WBYhfDY_V`cW0{ z4&7BS!IuXhQgp{0B=Al0$^e;zootsf2j(R8Lo2;|Y=a}bo*^ZxGw4!^9naU+s8gE= z^>I6g5@9L zE)C@_4drHpax+4?XnK0cTgCrid(uQw(7Mt=nV_R}${MaFp*4*n$!UmX4kj&_Gf$T0 zID^gEgkjSjIA84{4@ja7)9N5wD}&I|Ae0e=k{zZe zH)T3DPfrRi2!SyWhsi6aQ7j3|l*6fZhNHT4T5k_)T^ZK8DlAjBt_-za8f<-gSnH)> zt(S#m%GOImtuxfM&cCfUX}ZKow`RkZoB*PXFzlIOnG$uH68{DI*~d*K14 zMwv;$1qm^#^+@(1kw>dvL#eCl(ObbwnI5m`DIGR}G25ph9qf5J9rUU`b_RbyIe%(U zC7rUnnwFu4c2)&flq91l4oMqPFGP4Rsn`>Z{mA@X*ydj%&H~ZZVxqsLiNTf-vn@*$S+=OOTw;|KA+EC`#YQVi++jtFd#xC; z&x#dKSS`demRG!FwG!`Jt;N@tPyA@L)ion?IXvZN=E~bK($$)Q-&|UByg}J(q-7S~eG2(4@kBk{O{UtWFz()Ln3#9#>9w?-WpdRl~*5ubE;E00Zz?-K)!HEC`wE%H7%=ymtG zQ~rWp{fkk7A-j>H5%rbnTb*Z{dSE6#Z-mvu2j0bRZ-t93qpen!>vhM#vD+Y#zHe-W z2(R1IyRaUuo7>Z}FwGsG6i>gnK9om$Kv7QWFs6K_&x)t>zlYLXURTU&*n(|cF{>I8 zm(Pyxvk_M?x4gO?LEk&-z}C|u>%p+nBC%ZL)^hazUasYOJv`@)5OvUoP-^iGMx&;R zs<%|QBIAu3r(L|6hY9p1&7^pbh15Kpgjx706nP6g?!3H=dZ_t7A@o=drUi(X(DbL_ zI&(pTsHOdNZq!4&T8`{!Q_Fch#L9uV5a_sMWvg*=yb~)iOv%WNBy5)qkL>d%n^;=h>d@~Ogp5G z{Op5A)7_eMt0}ovGXjz$#U_%(2KYx|ax(?f`|&xdzA}B(d0tTu6rybO2&;z=n<9T? zCvovhd~R?wz?hfk%e zN#*%dX^z>Z_`xV82_!Mp$DOJI(@dW`{QhJ@QoKTlB0)G4LO3NZS)4`!gE>Yp$7>YQ zkF8`jN@F2rQJL4+#Jc_y%31@%r`MX2xAXrq@{k1BN<=v%VbQ-L=y*tpB5B@GiCPdE zk3n=ubs8(js*)%sgD9!1Bq~@6C7sHsY3(R!sU)ggbd$D!{77EcrohijuA?jQnRIB7 zK`(WD;GF%XNBYS5iBmWBvGMAtVyUN5iZTcQCTmyS6SaD-0Nutg;L=GZ6z zmxRHK363O>Jd#e+XzNkm3e~g`N>^N}QTEB{MdHyPo92s>OHD>R0ll`uD4L=}N~|?! zdXnP3uKnLb&y#g(xvRc$ue{K^PWjVkIlgkXGCWIVFL6on5`*jv zk;s;!zVTgha1~|!edrP%Q9SJEi#{ymS;x%*j(PP|9H%@n{E|pdNsmI&@%!8jAcDS^ zwgTP(u+qS?CPJh&31Y3OkYLS#4%RH_W}OE;tT~Wm@f+bj2vJTc& zth03u>tStReXWgbuyr#VVQpq(tU8usZDUid+t~Tmc2;H8vlZ43cCmFQyUN?PD)l53pCQ1MCg!A@;WQFniZJ!alH$vX8Cf z>@({r_NDbK`^GxKez0C*e_Ahd!+M3sT5s}p)?2)*^)^qj-r>Eilf0kxE>E}K;~Cb6 ze2DcCA8CEev#d|~c_?VL3_~ds6A?T(vI7mwP)-u+VggI?FBngd&Bl?AJ|FSPj<4_Xr~Bn z_Y_ffFVV_AOC;F6MF%@oB-(vMU%Rj9Z}$_!?KF{P_ZJiG0b;U!w#c{BMKR`;+2@G! z?IB{hJxr{%GsO+|aIwiAA-32f#a;F&(O{1j2kk8JkUd5mwa1F5?QHR?Jx;t~j~5@< zIpSk`g80rpSNvv=)xn;uN7z&J7WPytpPN`Z#-$KEW>4r`u)vEW2EvV^``6>?(bcy;Lu?SLoID1^P;RrM||#P`|{k(bw6l z^sDXF`UZQAzSUl<@3b${58Ji+y5Vd9Y%Y5hmmC8Y4o>u8kzPkW1M}jF~#0(EU@o07Tfn5mG&N^+HNpv?7hat z_CDhpd%tm${eW?s{h)Ebeb6{)A2J@rHc#4*7|+>{8n4=q8L!)q8z0(F7(dy^j6dvW zOm07Gn)Y*Ml>NNf!aiZPw_h-m@Y~yd*&JZMVh*%lH;3A9$csB&AOW5Pjm?l=@%u1~ z?Uom4F2+Yef5H%UAAAc@+<^Y%39s;e3Jb5|Kg-fc45!QG z>3F2R6K2aRH&Oa=I7eQPh}K$ZyHpFUlUApCGZw%M`B!hE%qZ~7yX?{AaXY@cWv0{L z@kL)f$!yK`lCQ44pq0yW0L_>H-%0OY7YSNdd9YjNJZ(=fyRsPe z0NBvM?8F|VYeIas_>djIe%(e}mM9~LNR#8p>5tz;VO(*L9dgbFvYZ3>3M+;F=3o$Aisrm*elp!uV9Dtx4Tq_Q?Nri?4ZGT?SY#6QW&K*kxx=5VOa@OweO8CbQ@-GY9{mhx%E-xPc8 z{fD>0;CR1R@41!!q?z6`VH-r_f{2jxRO1s=SxfrFZv(d~!{%}=e8ek4Lzb5iTwOtT zbwdKXLwi>bNOJjMpeq@MW8N57ui%A$3x=`4k6FgCBl7Rt5p)zG_4|e=o%<8x`&6@`Z%t>4UjH>5Np!q%@8AF<^L<@D6n0l zp|vXuI=aS&F|$*UnodD#IypbPWbC-a^3?wWP)h>@3IG5A2mo10kv{9JW)vO@003MX z0018V003`tXD@GJYGq?|cV%KPVRLOSPjF*zWMy+MV{Bn_b7k2Fd=zyS2k`lmz$PI; z04cE`cDNG)p;WHYnO&MpLzB?$`zLxLfIh2BAW?_lo*QBhEAr`~zJ_uhN& zck1uGncaDg`uWVh@7p*3{m*~ei@y8b+4GvFjaDZkYEOlx)ZTKfLhYl?e%c(M%|Y56 zqRnC29Eqr-5p_&yrP-wRdHk+7{%h9Bw0V<@ii z;;|Hu^5StNJOz%&Q(WuC6DS^|vWIA&IN4N7&x47`->8Zp<1 zQ?k_GGwtfGw`ZBs$|;jDEj>wzDnF6Vqzs1=LzPy=iAF0{@7R_(-H0o#l2TbaiE)zr zdz1X3qmCJ`GyM5vbw_vV()9f*e?G3GTWQmtuDE^?(>@hBXVGi8NcF-N!F@D8mC$=rB(1F{?<9F&rZV1_RA1s%AXTWS0!=Gx zPd2iq<7V`v()turA1z9!jF?G9{gJYasiADYVqx)2VDbs7EO{UQVDgDvB9r9Hg_bjs z(^DzKit`t-dOO8IT5q5=@B&=QB`$r@KRLf?NmET*Q~TT+v%M=nH{W?9s_2*M42OP) zRu%(zONy(WmI)sgeh_oZSf*vVm?vF^Ik(JSqr9 zwl)aI1mV~q9EUI&jF1dQNCa6w98GId8JO?&UU1wmCHD@@^?h)-Q8SfE*CR-CK5^eaW(K<7T74JHGo==upb1&jy8)e_MI;zEc- z1L7Kr!~$l(bigduHf5(MoQjJJA)l#fNXIjrZlqafQn_h-il!IDWw&4#h~pVFDa3x^ ztwr*;Gf|nIs`H3B#HJqS)tf~ZwjVbkPWW*%jqJxQRG-d7DV|OBew?RzKb}MNems}z z8!~)b&ZBxiZl!uZo=^3Dd>hrr%`C-jRPVixKr z>iu{T)msKX^qRIq_m$0stEq6B7q6j0KVD0D)8cz?9qm-hGg;4Jg2D|P@~9hW zyjqjOO&oH;W)8Vv3&Mm~a1Vz(*j5g?U>jX_Ucq(_xnKu}JlIbDH9pI`IOLh_=8)g6 zduZ~p2ENYr(jx&e53W#FIh78}{BH;f;NtNN~mdVi&G>z)R@GUwJS{c)#)x z=2U09HpLHPnQl(=d3^+-WALDl;*H_zc*Ufrnr@6AxR2q*nzZf7nN*N_oE}ivCF4-{ zpglnksDMw>11jKCbn^#%njTOApTRRE&?!v0_>!l@vq%)*>6AE)*F>QyAU_AoKHzyY zJs*1OQ}Tsk(tn>*@(d14HUpG<5j{faEl=r}iu=bKExp03JxlLcy!{cL!z2*uj-xk{ zU#50ZCSIX8F(GMKbuO>rd3xl#=pA{4SFuN|-iS@6r!ys9Lpx{UWvE**!{*EVb?R`? zY0}f0CP%q9s1fpW(@fs+O|))!mZ2Mv6L^bWObN^HPu}J$!?LYH;vF2o#FnzIwFYM*3ld)`{SpgG^^HZ`{)Q<3gi+}V;(v=S=qg)OLCG?F?PrS<(t zBU7o4s}q%4PMcM!HPNP-HZ8Q7O`AMz=Fqdhx}$S$O-J+md`s8Td~;3Hq6Ibn;ONtW zac!=^@l5omTRO}fo<+-9q4mU}d|j*7Dz#qJ!D`eh_kpW~`@;Q%`@>4}u2^ zSL5Fcg)f3H7QO@?B77-4RQNLZa^WlBD}}FuuNJ-r9v1R&;g7)|5BXZ*5%9>6YlKI^ zqlIhXF~Vcval+%_3BuRG*9+eO-zYp0{)F&N@Fzp-F-cg5qrx#bE^NSw(E8O0*Tbgp z&G2O5B-{`>UsmXR*}^G!N@%`LXuj#teBID|GokrrL-U;~JPmFXo(|s-`Js8-7Me#}Xx$cs)~!9X zZXKa@TNqlm+e7EMGjyI833tJZg_pofh3|mx6ut|-J9J+z6J8Fl5MBwd5?&3j5nc{^XaCx#cGda0-goWwK6Tecr>pVvE;bcF2G4dNfoB6yz_Sks z@>&Qae*FzZeys#DzjgqjUrT{KK)=D4Aw(!aC_%DMrq4)V3D9IPVMqZ=5L%G@lkGDW zNd2k>SOU5X&J8g_6$BZe`9llP`Xcyiy`sN%18aabgAGFtP<_w=(y#Qdb^wok1=s)x ze~s5>;AyBJVt~+V3@{_K4=zCLwFbBrdfxL64{#XVL;2$P#0T6C?xB7Oe1ZZ92L(~S zm_Jbg1%ra9U)-Ot0E59klrQ#AT)^I7ALO*~?U&242 zGzR>_J_i1VF$O|HA%;RiBZk+6F@`dt^kVgjdP4bD0To|a08;?k(1y?klwO=(aZfC| zcaksx$*5jQJ=g>!0_Ye4$s$DMVnpS$kkqpfw09!%ccTCJ{{P*U3w8rg;i1M4g**Pl z@Jkr{P>kx80Qgmk?v(%qREuwwFzDX#!d_ZY{NkMr7uKjSG5lgD2a6q)&U8}GbkN?x z$=@;9K{5QIv!PEzEe7NUXB=aIwp@&SkQjfXvLR#qMQ0+!zKb>u7aS_xH6JmpiRs>< zSD<6Qgo*+bivtwT2vg4p(cU4+-yy@kgrdHL=tDAK8v-?88iF-o8-mtg8ba1!9RfLF z9D+Gv9fHLA3fo9%RJNAg<*M+E&$u1WF{_8rU$5F_6l+{?t*ori@mTTM8`Dt#o zZdSY1UDl}U6kNA;(es~nWdMGHUK4usy4-l&yv=^(I`}`nI23?6mTTt6Q+#fNQ~D1G zevb$;0_PZ)l)^EWpuH!84DQ}9UAtp7bUo4gjDpv6UmZZbcf$5?=5ZN56F_>-2X!DG z+hA|8=DQd^X9IU#051@a0^h#H&HZiXX80wqKD3A5sjja*>jGCl(`u0t2zys+gsN80$QEu-R>7g&ioUKuC$fihrOOpbMqh-~o=7N1>S9wh&ebLL zj;EJ{Wmw==>Qbp|V{Qr4l-1z5v^=U)a&F0OT5bv9?_3JLp~R)(mR?OhA(*xo2lT|c zR?3t4KF6 zQu+bUOs9vk^fQE)q=hbF=v5ga#r5Cx9i*B#(BfUvIjDDzEjD5c%j%g~g{=(BYsiQ% z6vj>hW{amsmd1Of0-Oj=5hYQId^oXe5I#^(I&-ygU?1=0yvnXnrt1!jU$(t-1Pad4ej^Ip>V;dM_+12AZ;_hb=0a_|>rLQf#F= zmFqoWsYS{GbJX*;WIDtFlg4Xd=PkWVYShuL|9)Dy1c5RLrUGz6VQmIVI@lb^A*LVc z&cKYyY5m@A4?kk%gTY)ym_aQ~C6hT#;k#41ucgM7W~eeMB7L`bh|z8aHWuOYWtx%` z?1Ik2uO?l=RqPl&EF+XXMR6RCe0xj8UI)V{hpvpVxeTZ9MoE|i;vM4D#OoD^rq9Ix z2l?vwTQr%vl{SlmR(V8TVba*{-LUED54)%u614Q|V!)dWxl>FQVKvpCj_eorN{$lr zRhOpH5m`QZSE~Rf7G~18&AwtwSp42N6go6=WKmn+cBUxH5a;;~{Hse2o~)~KICl!; z@Ki8$SJCMF zVr!hLhoHWlbEH4^%o<1BqP;q3`#7A%P`sgQarXMBe;VV~RJJ35JbQ81-T4>dhz+pY z9jR+!_QOc-B^dz(14;s32_m^C7!@&MvAWk77W-11H>hFuN@TwFzTgoPExg7?EGZ@Y z7%`#2ssk}b@!7bKFSX)$etg8*)2J+U7U3U(z9-IV& zL{>DPeA>E47$8blqY6xt_*MrNvg!vIWyZ{xOv5b}_j4%inv=2w111Pc;=a+^+s0Yr zE-}ulCvOr zI_7vi($+|3rg^+wD;21=rH#0p6>+uFYOWo3x+#o1S!S77ruon&2K$99s!pUjuKai& zO^OuOWZqMW*hp>ZGM@62ngrJ-_U4A@(C(Gfj)|*a+)xpZ(UIXb8h_#=Qbcm<2%hQo2H$bOAO~=LIBx zPorfMdBuY2cG}r!m8+U{v6TR(OC!PQQk^mA9?`t)t2nGb2!I~L_g?|hzMliVXFQ+- z-8Ua>Ao@Cj@rg3HMdz6abcfv)@~i+yMDAS)_CS_z4cq^ttFzp>qf2_SX;QD`5|?Gu z@JGK|9dV7nRry@SrZ4JNu_i;l1Vw_R3!9P8XwzENi5WJYI-I zMHf@aE)yMkWY}X`w58m~k|xM6=g8N9`~y$o8#R3TG)WdRhl)?gT7b>Q2XSiNS10Sh z4_0x56RM~1vh_)sFvLE}skhK4TijRdd5X1nNHek(?@QjPXsj>i<2y+x$K1X|eg5GT zb*nV(2^B8^ARu8931Y?0E&G)>APeq|m0Q;ZdSASW8;F7DnZpM}cze>j@4p>yxCO9%5`=jYmc0hrzCq@S6srS7Y6m4M$Hr2T z3luSYr58T2|Dg`3X}+zQ&)nhmakLxoUrumor^^zazF_R!ACHSt7|BWcz+}f&EolsCv6X)du+9b&ac{M1-8GxyGXF;UW zkwnXq$Y^dHlo>Wcf_gj{BF&6jfVxqM&RvP=;+Q`^!o!S-8Of(hci$Mp^Nntt&!UJv zqDGPRWWFtIowC@m5}Uwp?#o4W#oa=VZG~yCBBZZ?(1Guxmbe$mJB_s?!S%qE2glhk z5RmL@a4J~krtWncLAn3rlabp`JpJ$$H-B0<4#dv&b=@H1eET3vj}1tU1t>Qi9E8TGBR z)8(mdL8g_=hLPFyOg5j8ET8e~*gNV9Rgb5kyyH)E%}v}kjw8p&D}Q9b>jyO-rYHNe z?)YMfu3eU3VvPk`-Hm4}*84O3;hML{8&)jR4oOSD=Y~jE->(jvc@tft8!z5PLXaKw zJ_SSwMC_kUIV$4oh=W^A}>2M$mKdCu{ zP;-)q+YH+ZF-RDOHx7(z(J~69z^E5D7if6q$$1t?+YX!;!Wg5N>`}IUYlu2lL{jMG z2t|!AjMeu*BGRzRuq+6v8M8Zo1V;C|=G)7K?1(E(JO(@*XYk8j$~-R5FG?Ld*#Sy9EWk%`GrV-b@Ts{SlQHtwQw^_w z>j0#i5rKwthBMagSugxO&4r*;yGw*yVtE!P8sk_`@7yLI2Z&0=!%&96Or36hi0pht0=tmIN5VN<7H)nxT&QpDT~c z3oiB2?#}a##nk(D-fr~T&s(uVeVj6BQdG83`FBz z(bc0e8pXS%?GD)4qSu^yJwb6ta@NUqN7e5Tj1Tm#3f*I0p@>J#DQ-?YCp?b~lcNN%lBQmnO*T5eKjdFV?)Q_JE_+&X=7@+5k zs(Ayj_HUe?DG2+ZV|o2S8Y6OL#!ijWr^oQL0=-)DDNY9%6$XsC1-1UN(8t+f_u3<5 zP66SoRf1p9XqmOlI*YT7l_xYNZH-j~LhuB0mRx2D_&r|m=@yC9otZ8e@)c`O2u5Kx zb@$hBGi?{s4Gacu6XX?#AtT_36fjJR=mxZ$nX8YoER$vCNv7!9c2aW_IJ4T^l;H5# zC8pTT2meq9(>|i~EXT@hW!{?QjlA4QvF7+}Pd`&R1&~ej*cq$7T6Ndr#lhr|)8I_d z%b}rPj){dit!k>q=3QjDUU1&gKP)?B`uR|wtFADK&4Vp(t5`wAS&*Aub2XkQF@|ja z?6M_qWDrg7h62AgW_cE)O17JjoM;rCR7SbTtS%(SQYTe}z{pB+wo|4r=gBWUFdA1p z0HbyS`?eBaa#D$sW^er~BaM|r$W)#;+0W&M;q-5EPBQPhR6cb1oY<|nR35QvNoF8` zI(^Dhx|Qb6&ZS8wU)82jjNYV4$DSr-_In;HzfiNK5&Nz1GIk|5dZCQ=3JI)f~`ovnO|O@0(Vxw3Z!s>X&}p@;x^xag72W7t$95g6H)6s!LkwP&y+pTz zYWMcrM7IO_e+XYDKY)SVga%2FK=!vE@e`1DBEbbI5kQ$Yv*Vs2Ynt|~p{-9c)!fio zDdAI!qBtq4%+O*fDj|KgLX+W~BDRaxFdE@2HpYUu+xbAtk|3ihuPKUx8mORPt_1Lr zVOY;xA{&S#3LoH3RGdi@SZS`zC4`q%O`%GDmrPrlVD_5g};(!BjF-p{oFoGDB zjXa}pCL5SldSwA0G)>12Oa{H-;P-B+6MM#GzMw1ja<)khMmfH?$iW}SJ`-CP);LUY z!3%*Te09Nwq-7(Bs*#DsQZBmT7C;de5su9}x*n6YFRJs4kD09tY5tI>>-x;nFOt=c zreEjUYWw`Lw)`q@RfV;6UBd9kw>qOrZV71xiUDt_oyQi-7vG{@uh_=`gXEPPG@6&u z=@uxL)N$Pxb&87QW}wMZh@g}_pUJ}`le!#MhAqno-}SJr%|!kf%!Z_5*S2;agER_QhXW${%k5KmOB^ z`SC+rDoNm<3G=_7fBn864$c;g4#w7ICaxZ4#*9WTc8n$tc6JW-F8>$K^FPk*K6o!0 zA^iAJNc`gm{eOE-$kg4+#O%M&pGLG`Jyl20zvg;8JSI-=DSqiEiV_$#BmGj!{(+MZ zeVd#bVd&QEBZu*vbVCZIjV?B#QTL=YfTpypxmislmAy!^Ds5xqr+!%@P`#?XY)!b@ zW?(fp-Q&|N#R2y5)I8x~elnZK{V*4BlAHDCqMOV*|g}VNAyuWh~~|x z{x&_q4e~_KhUJJKgYQ-x-4!bPo)e(U{_JGvMbx=3Ck0Y;2(r165K`Au@(5DQEk|-w ztOh~py;qW_nHf(IX@WTEQ;|#%Wd{+K4KZd^V)&5s=VXG|xl+>SaM+kG7frMv`ox^* zeFv`K7^CQYsHA_^$VAG)hzg09Hrz`r6+f-?T-0I%Slj7{t3FbhLCk`ID}bES+_(Ui zu?rXt+kn#2d6BI>_`3|(Z>IM?k#SM6x7fb~prDF^M|)9?Sxa(eM7n?luln{^oKL76Luxq_(4_Nnb)qG!`YA<5!{@u5IKi$^=#)!P?j?+KE%H0zl*g_JgaEM!*b zWcDuGQ+-xTwjB#24ing?;jm^t+!}5pkAdGflBmSr-g#>SI;#9SY5E1MqY3#*rd~lD zgl6=~nx8X5eM;y+cJf%P67|8E&;x&vhezM^nbt_QB#cCeIcp4h*;MPQz^iojWL{w* z3Is5--Y)QVsN@<%=edF9&%M^pb#bcivOAe>h z)o~8%<^+vHqBm!wc_{GdHS{t{v)t(u67$fLyTl^PQX?^2e>Q4lp5h!*ak{Wl3gaL* zu?=Y7q+b^!i-CK-Nh+H@NmAoqp21Ag9Qx^S|L*ut#m%TSW;(=dIG9>FXi^Xg8T~fQ zw8EzHfqhr@W0}@q=mBd7lv%`6XoQFrdJbeeuUY&~SDYSo9)ojVk<3$N?!0v;r5DdG z$%%c_@iYUchnbyaN`qtftJ|_JXE#-?zYQ6C_smpWHgIS|;;fBk2bxCw%c3N4abnpv zEoLxfQE1t9k>!;r$w`)L%?W`HDA{l@-?MM(r9hq0qiOAbBi2XTq%eUUQeAZsb(eNH zsOawPLJ`k|6?#?lpknu%0}LxJJ2H_d?}6hz_yzUr@_y#~2fyVhnx)r;4|%DyShX^y z9-*@ryDC$-n6hJ!Qq)MPtFY`^rcqCpM~llIGDMPB@>GbE4K&&+4(Yoe_(crr<&xP%sdBQhbW+s61^oFi5bQc}k)}E>@wR%W$qT@!M z_3Dq2sG^3u_cT0@;Cc}*HiF5x(VKV;Yyh-d?``AiQ`j!MY>$tvyue5FIO9FF%ylEjz@>Eir+t zUv)yYUv&cQtv{R#ZaIF9iSIi=4Z3@>H_0(4m*tz-iQPZ%IwlDr{hiRx(&c1-J4$;L zk9-?G7|V90I;xQ@08qsaVJ)y4eQu7pN4au8FjTN&^7KY!IiG6j%ws0Sv%}DF$W4%S z?y5s}v}S2j-*E93e`!HFd*pmKR)cmKJHodyJwcjLWs*b)n)r>J)CIxH#4Tc*?;1SQ zKSEqqKT~&i*i0r_=5n<0+4W&T|@jC=R)P)j;FCwwE9`uI8)J5s^pq~TII_$=%FogdaYZ2TDPB%Ay z49O2`aDkH0Up6?18ZWfGL`isM#)z(x%s3z1h|vZaNCO_)BoC)X2d6&^fj{DzxC-Zr~7BR7QgTS4v3gsNE5VuC^HVS?0)8{5b7lNm71d{s$z7J-q zrR!foQFgkkbFXY)2CTLw-8E7L%pmgVri^3%^ixfN<6c%xV>-mr);ELW81G1@pA+*2 zvo=nfoszA3p*J>Vl;6}F*{fp*fPhIa>Zw=)uZ4gji=>VAEpHaSx9f4MG6V%k@%l!B z=PX1k_V(6A`g~BVm7s+>*E+Q(+P2B^I<(7+HEHo|l;-j_i8wX>si834DoY$6J9o-^ zsAjRMe&oa~j5E>RV0pAkOY$BGQj2hL&-MU0zxY7EzX|g%;{bv@JwMl3#l7e%O6V@s zFg$G?af%0#%z3vR?mN`|5Thd~i?lh~~m7=_o z6_)sHLO!7s){IJ3&m3}#yW|Ze+43%QC0X(8k73I6{3_>ORFKL@=7Z6sf0tkV|SBx@oD|i$S>X^4MUl=5dIE+7zJ-+Fe zqK!j5ow|87Ro7J9J4uIFO|J+Y+&O)a40Y()-kmDh7NAog=^W|8UTiFv7@A~9zq9{v z5VIcpitV7qghRW_32B!O87dvNy}R8tV+~ zHAazG7E>`4a`j3>>xxV1ip_KcF$~YRBHLHUkZY{)y$I`0Q`R9pFy(ncKNzi3zy5x+ zX?(K*q^$FKty(uKl+Zt0v1Mz|)XwP6j3leX|Ej3OC=z*yIEe5t&0J?v2kFGya0Pch zmquHNXEVXrGK{uk8u7(ri<{syve`HH#{iaVTFg6Dv7Tw#^fyT``D1S9%8iRUZK0VaJX+L(05BE1;y*Dq-fClqAmdVl4q zXgXp-NTE7tR6Xql+=Tri@I6;Q0dT;T6`Dex` z%6x4d>Yx2QY4ENTxo3690A1^v!G*dK@h;xHlXyN%{if3su|4^lBk53nba^Q7iqZ3`wH!SM$;-nslhscmTmBToK* zjwANA!d!8jeqycte$AR@Y)ZJ>{l7Yc;ncC}2d@)y?ex-YC$>s-Fg1|3OKRRyh5seRK4v9BkG0v{KlnVp4CC9y>;SKylpMkKxFY|9~7rkl{fJZyKcRSs_4^~7H>yxmkPlAG-u zIY0sTmREs^fCxdYe?*m%R3R(W$ijY|A|Dl30>-J0mb#C-N|}ceC6`7XBzd@*b4vdVi67zylUaqxSwY(U zWue)!Dxf>jp@j7+F=d%mTs*zPxJ|_|rHxrSsoru~X_U!FWxEpzDrP`p?y zOe_;d?ZeZ=w-|rM=Fv~(;Mg!pIraqw()(OlHNnq4BAM4;_G1zVC+Xp|8n`!AjPP|j zVXR%H5AEC${-?%;`l0ntt9FUB@_J+b_>sW$kJ9+xYgKzATQ6@j=l`Ns>$sskQ^lIp zcD|XV!fDBVjR%5oCrb$v;gM7T5XeAM91BvW6XD3Rn6ezb9LMV~y=x(F7%C$pO)+=$ zK%^pT1B>@(qSvC=yzAN>R(9GiFH$sCz6DdHScLXoIQG{5YG`P9sA>Fr74pBn046_} z;4Tl1*t_u|YxWr_x=|5Pc8>>qwtE}~A@2;eGy8b~(x3cQtrE+uVHF4+`P|_wMFVzb3Z+(t`8`1w3%95y*H=XKVC5MbJD{q_xn`}81^LNdUG~Sw%DNZ|qJHoKjZq-kJu^cX9f=PfLq1y&jWf)rTTvsF6Zuy(jzXotnF!Xrxpyvm{r$4)(KLh3F)ds9bzbZ(GVdD&kl3D(vJ@RLMxuIIP`gD+N5}_5&1$N}VCFP7IMQHtZzVKBM9VK2;N+7tGT2xgi&KVV ztZL@hHAZC0vbC@)B=iZ#M%P2GyQ{iOLu<+N0WswI#!ZGwAa|vfG!USD6?~ zc5bBzh_T)g#)4^UL0;@2^;mS8FSWNvcd%)DJPK58eS;mn@Yv5I15GfyRtHdQVY>2; z-6dzL&fKqVlD*Du!}(_7t2^d{cI}%djkT~_-69MAfu=!BWA;;v;piVt@fJFJg;cbb ztxs-gsgAF#V&HQ}ShZ=iuQuHRi#fIM%gJ_&CeBM2RD>vT3AY@J_FP%pbM3nt`h+CD z3LJXVJM4Xwngf?B5~1Nv8B;rsH{yw~>0lQj$Gukm@tRV0&I3rh%g`G8Y?QWvacGu0 z!5PZ55={98H=#6@?!xr*E9a}iY(pvv!mSd z-FPv1n!(`mbjS7#9uFNkb2~qE&xXZ1kO0N$DkmChZ!~;rXa^#_RhLtKt;7L=vV8u| zX%+SL>!)|gueoE^BInpvZfQa9G!EKXjB&zlX>&Q^`WjgrZUed9#ne+3=%?uN^in!n z$5n;R{Vwva*t!-6#+2JXIC-3)3vSdqW}t11@=*2rjZrgr00|w_(7c8fsQTd=xsH_E z$Dv(+bcT4&HiDX2K((Eb5V!$sd{zg}l=Z(B@A!X@LB9+LP_j9CgpY861~?mIr=wDP z=K;~)bAfaUR}mk1KuFJdXv6`)??L*y4cJ z;MaV9w(C=*=;)0vo>F;w)PWIk4jFzMjln?hXw{T9D&osZR3&rfhZyM!`2uZOBOmR7 zt8V4!TJYwW@+H^vD{j|)>gH2t5&umQDyuj%T@{RB%`x@WACLEm>5mfijHzajI~%- z2M3s&P3WXm$OkrP=?UIG{U29UfmH_=7gHC5LXiqs4}Riha)xztZ5h&O+6&vk!S3f> zW?>a=>f}qA1Pcgedrgh$X7r79fobS2eh~<1e?dEKre=|0G^x%YYYf?cWCrG1S2YwR z1^y6fts4zyRW!vTi%fPf)m4bQ&kSDMGLXK0yq06r=ucZV5E~~TB1ZTT(W&xC@yp}H z2R)Mc*4V>H&7 z8WP!WFbI6=oQm1oAa;gQmg=08r=>U((j4Ow@x&=4h>K~- z56mF~@dx4GH*Y$iPXupIdfYO?+eQEf(qe;G zg+Yg^;dR8@!M{L|PlVp!y&~K4ys(0yCs&N4;_-XrD^Zh> zwyk8En{auFqSL`)eYr&ET-T+K)F%I1RSoy1^kPntYLMC{mH8OKnSEgbTo}v1)b;w~ zN%I5J`G0h0=bsyResyJ-#Q5CTOpkU-?^I`^e@n>jP3FUv*Fv1%i6*BufNV4Tpeg&@ zRAgy%fr3fa`h_*F>1a>I%G+RZxg7uAz)t=*CFy+$R1l16H#Bor%4xlejARC z@$YK`&OY)QDGxG|8ylTd%j|$fih})odkKDgC{NisZ zXiRyPEm|~3c_u!V1Agr6i=2TICaDR8>Au1-1Tij4d24o)U|`9u1=9!W>TjWVNs$QX zILH*wrf0AZjUJhv;bw|_Qe6RT_@ym&uOSdzpjP&8}j*}}P&fAM9K zxmuLk%7Ro1N{@@fix(oGN?r)ZhOoS=7o+|}Bj7N`To2YG)!zhNr0%#T*V7eOT$gDV zZ)svLPOCeb!A(;?lQZ1{NN)z+sv5{_+NZZ{_*ON!VQ`7rIKWhk z2N#*R;;>zZZ#A2d!d>#%bLtihN;wm9SruWKu>I0#LxY^r1#ypV2`+CsGz?FXGaE+p zD>$fkL9q)5EXs>8hGJqX#l&*N#J0tx){@fwA=TD};6EP*m5c$EiV30CuMiQG=K9Nw zy2uRc%!Dg`fRrgdQ4AF^;ERW#j|ct41>+x_(QgNK+t2))aBOgh3n8EE)oVH=!x5!B zJS9y`UHOWR-0nM^BohQ34YfAa%>wLR`ORcz(LNQaofbDgW*w+I9DYi|!H3xh;NA+? zc|ErES<>IiaW1jVwAyeq)xlkq8wb?a*+W#JSYe!(2fC_=c4owPV zV;I_+FMSks<&}kfw$v#fM?v{e6-Pn+klH%e5v^RAsldHEPNt5e?uUAcytO1{YiSBQ zT1W6arif{c_u`B;R@kK>Uwy=RM^OE?xMrY6zjHT=`hl8ajK&bpHdu}mt8R?WzWFvx z-=K{lr+o;-Cp2H=+8}Z_0>MCm#QCeH=-60c5(DOC2X*ofjm`K|>y#fADTi($c2&&E zM7xrd9Z`JO=8_{i#obfrfFtE7M08itvVQu{lGvFC%;%@+NQ6cPH-3w=Y4^VSSIv6+ zKPw0*hLk&#yi#r+10x+V#Vb2XoXn&ok`Q>U;1hv@n{N6Le8u-@A~urLzNiU9&^jG9 zSD$?ADD^S;yxGJCCJQ&;APdh)mhkiV0Wu&ag5a?qMo0pMqAogH;-a{fA)gjv(V@*T}af6o(2Mng^r|636}zvo-sBb}9~?a-+!Nc0<{Dzp4E zM_6UhPpZ^~W`T4W!4`Kddd+jz;Xk42gC7lL6gk+X40i6I%Bsz=q9sZ~u`!U%Gril2 zgI8&dz`ld6VO7MJYw_9-Y^9iK*=cN?>FsO}YhrP{ z*0{y{Ps}Gc2?w2MRn0bZ8V;Qe2YMfBFbKD=xo9-KAqV zL2Ejztm+-e@*JA@FbJCi>ooHG!CUw{^!{FS&=ZDi8#d4!z`0-dtiwUuwBV^x?GY^V z5Wkq*D)6GIo6O$&_G!2I7XDDs2Jf{e!j~U0d!$SK(}>8AH7r*2@a7R`+q$p3nWQ(P zOus?$rCG3N`7JW9DwexOAD*t@Ize?u>dBc={fldNgdmHQ()1otHXE;u@{)S9kw0;n zQcPym1s8CSj@ovvdh361vjjE*zwhjp=f(N$$!^BU9a8Uzz?n8ULSHdX{x^`RABlo1 zEJPj!Qi_Ct0R%)1X_O#Fq!3I3K;D+`|4nc-@`MFtE0wI<-0T;=(a;e5{xHoht=AMX{mC} z!B}1QJ4bHFCp<@28D`(TlIzffk;_#|GDX#UduJ79lyTztbZ|?+m z$G*fJvel;wzvvk!P~Q1$V_DLJXQDw+_L|z-LFMD%TTuNu)|$`3va!!vFQ-8Wyo@;! zXJa|j>Ts{k)wcHcsV(27!Hn1)>(A%x2>Q&NMUh(fv9O%YTkD!u9n2>+SHTi-cTOq; zte25COmb%?s^=V&+Ge1(ixh0_sL@unQwT?laRBs~Gd<%c-aLcV1HwE+7~zlX8oA>J z@{XN<)Dbhy{Dgjh)mv6H5g_k42VnI0eD8`?<2gmnz6PV2$DsKQ+KyPKf)2eG$;=M~xo&gy3e5 z4(mxT*U(&QnG(alHWs}m>2<=zV;jk^SMd{6@8XE`s5PX~Z^j0GWoY|_cy5bV7l;n3 zc%u#U)IoJ{4w{Pd9<SKVn zB!EWQGB;APxpu&Ojq9Y$%Sf>1b{CpYB!9j$Y{f6dSN4LTaA|db?U(4OK8G@Q{^!8U zuZ6250iE&8>!4OZue%a6I^z-LuBlhCyOff!mrg+t^v8>lK3vXSE;+o0mI>3 z5Z&RDGqUfjJ=){ZAjacK?||R0!P8)mQD8oRQeYV|D&f)muF+rDw^)!^V5Ia7)BtRtl-Dj~VfaLIT&W!UfZB}IfY1if61RAKB!w|7b9K)g+*(6&@#g)Zl z+TXaKdt*{P1h()=p;5;yqu6wNlj3Q%@(DUp0|e%1(|BeL1a^#Zz^F3!AaF8i)S7#; zGRY*ChkJFMY7ARrVk)+dWv)YBp2a>gKDK_Ic_$aM&5wvro)i}9%uCBRz($tLTIkV3M3#*#*xh&cp6bh0-8cAuwed0V-uj{;e*ADk{PBbNzqRp2{-sl>Sb3X? zxf|KK8M!(*|F5KqwDdOzTrsqHeKURd56A-Pv>IzTY9q>}e7wX2C>llj7mPJM$BeQW8#g)&r@D@y@ ztraJ%uC!cvV5I077s^@cO}u&PEbfI)5{j+}HI&7|=t-04`56{Ey}Zco$(Dt`WewfG zM}MDXN7Z}h!oyqKEA|5rn}6tfbBu~4j_}@Xo+CcI*z?z%q{{l5{~%$3SRYHv6=m;s zF=VO1>4E=pG*!jc2&N`aff9%1rcYrCr7?s{DLbkYZQYh?C@((<&(J&WrYnu8J6fh> zp_#|SCZAzTsCmP3k8Ci4qEHm;KYY*JWQ`iop7wMa>?<6hwUdCdE?eFaNvDo@W0JQZ zoTwnz=H0V}N(j>X1GZ=;g{{FlNk~`T4Dm!`seZv$99u~(l8$C0y{zf9JdGjoFNwkI z3x;|4KFp`x89_~R3JP<@@_4x=dmyw-y#99yQr9PWNMU9?vJ$4z zi-Dqb-zDx+E#=Dj9wTYCLHJ9fi^vgPQj>cYZB$;7zSQ-wRAL;Tg-|z0xTxUY`i~-1 znuPh!_sF94zb@&M1x^pu2fRIRF`O6Gwd2%7n4?$cwMlk^JAuRtpe;hLF!vTD7W)wY zngM!$JS`wSNO3_!aia+6csB$*?(3UU8XJu7sW!L`T=u!r-Qo7gaBViUrVt|H2`j_@ zvdg6`i8m{8^y4n|i+mKWlPZ?MO75gb=FCLqOd$TnB2$*C^+CSeyxUtks_T=beY;?A zaa(OtSa9CGX6wppR&2$a{RwHBKSch8yd*7!}~cSGA!UzIP=Nfvo}#xAzy_k_~JxZ63?eiJr!*fzQ(A7fau z-Um|o4#r}Rq$**BiyyK}iL`;_tlXEByuDo51zn$JqpRt#B3<`4ew z;#N78v>q}LW63}+lwV>$a|gvK>7nQ;gkz%Sg%OQdv3^cQ{_;f6&usW*7U~UZq*7v% zU7bgcrlrUS8jVMFFWE#=v2O0kPW_WY?8hy~0~!3hd&^b#N>DoJtw*M*0ZbFpv#&RW zOpR}2HLkmI+)l`fT1n2FA}Mk-7A;_YHRrIZ6S(U)Ie|T4rGKLdDz-43)z< zj}IhLyzsNx;$!$8&YtP3HtyRlzkT`4E@f1naq+4h2Hx=(pM0+VCZwlcvt{uRHw^p_ zzP>Rylc-yFVmlMtww;M>+qONiZQFWd+qN-pY+ExY-@R4m*111URX^Qb)qDT!TD8`G zunZ%t;TXwF9Rv?}P#3g^PiuTtMaiij2nPFy4{71Hh3}A>s=~nwZjsBSz0|y}^veq~ zMKJgtQ}J)q!2@nNJQi(63VzP`E3zm2`=)1f!^T21V?|@C@9d7r#-h6IS<<5PU*5QB zLaw8L{gi*9(tkZdrFV(tz2F!K4p^`c^Wy&gf2w$d>s`v8@50vqeMU|9zZNzzJ4aV9 zbt@OE|E_7J8hW;>V(0=*JA|z%|CId?%W0uy-n3MO3N)!gCkK`1jYrfIyFALbWIS&4 zu6wrJm4rV1UV90am6GG339k$Q3FrgL+9Tu)eRq?&k}Tr7GY za$UYP@{j2Oeg8myB8sGs`Ub~mr_4sT{kc7* z?6@7&*EycVuU4dXyA%s=jyIDG!1Ch-r6l4J=CRt8DBs232`m70{e3-FZr5uoO<3vf z+LU~*rVJlrm#EDux-g2*g|!%?HU)axJiTIUevc>6jkMCRFIZoxmayBLq_u`OT3f8Xk|`IqQoB(=G?+1@t%FwCl8u}SiJqlJ>yqq zQX?b8s_sk8%rk8?w3BVg`BBj@y}WC`b?36pgIeta?I&DzzSL%~gP|0)Ag5eo!7Yw! z++#ZXhahHpw#!17JGwQa#mdYa^>|MT0?Gs|2P4E*qTmsp_1`lb>+|du1tzqw`#(*8 z);w4K8g*1}b;ZBr>s5teZdM~^haC#~o5LzI#|9YCHorA&Y@&%>1ad$2{DLCAUr>9j zS~qnqXO3xiTBrA!iO8+jumS0-#R`8ufGC!v75=CJPzTB-c4Z~efaA7RXzRlR$4Ib+<8rLS_IKcY{;-h^)H)Lx~b7q)KoR} z?_w;~#3gV0z;7L&7N3d&lMkj>ZQ`9H&65K7(qHN93O3f!d)qm|t%pX95#kr#jMmt3 zl0!!pgT8w|{$D6l=K%ILqV01_CT@=+gtFY>Z*(cADwo!nl zlJ}1N71Scg3NcGR{nZqv+{&bAmsW;E+|=kdqTWuRFC1)#d=f-Z0+`asA~=R?asJkbIj zcQ73cbc_AQ5|o$65rYMJh&KT5A8JAf`d?fC+Be~`uj@_&Q6k917)YD|#T7Z={3(Aw z@--j)hkpQ46NJ`D6nnthsXc}ea>M-=T+oxjlM1nM14nZz|KJ17f?41q^l3a{=G_tF zqzQpb=5|ATeVCbZNM-O;>eIC{Cht)E1447^6aySC#(qQ#e$4LMWBlk2O(QVY82~a+ z4zbEO;LVMdZPpG2o)?A>`iveIBW?@a5^E1dp2!%Eb%GzX;N8QPcgDQLund3e3_3JJ zT&1*ZmNYj)Qn>hW`4jnoFBmqW8gD-#!X2(i(THU~^R`zkfkj#yhKk>krx&pCRRo zJ%%eyaLjF>PXETZbfI5|08#%P%>!U;HWVpxi5(!<6AQprTA&B`Yc167X78~J0ZJ_q ze4oG}uLr+}O0)fIn|UdTkfVE1Ot&;qkzPz7^=JEEu^hV^du{|bQW=ZX55gfV*x)M1 zxSE1E5jP}6bw(E^$PQ;uuS|obaEqlEy73+jgqUtHugoMMW#F_Eon@!yhORg_V00j? zhJnXd?<&JvsrMNT8wi(2%rH|pS`by8M4xylAu;H2^ihj}Sq#v9;^2E_ho{bofK19@ zCbIMKa2`trsXj5?BvqE1WVhkzvC_BS+j!n1Oear^|M*En;aFNYLmzRy7rszH++~7# z==XbIcNYS`ut8Q~p}Jt003J_kZG9x*Wl>kcUVdE&oflhwP}bV?z5J#kFfR{ zPfG{JS9N7Y@TK>KWlKg95;TO2>C%XTxCTXw1V)Mo3zdu*71=ZienOH3Eg2>nj%HuE z&H5)qO;ClRST*=}rh2owjn0?t%DbA~PUl9|4(3(aAMTeOFE8xfAI~pGFFr4MUETk< zU$$N5_+NS_kOTtW$$rS5T-kd@?CcpDxPV!BbOMFlG0Ay%6i2Tq&IyX#QChYTaMuZ> zuS*XvQnpVs!4O;X-vuQ@!%s`Y`7eL)N=|U%U7~Qt7{)8_B?R*yhbdh; zamE<^QJw9=5z>kPKW8NKq&GMyIS0MxxB@J4F10wP&Hqqz;$Sfb3A$<@&M+JW++!HF@(~#FIg|AV+F_Swe-uI<^h9q%PdqpR;Nk!#%D(2-Y z-6N9UDBlyb^eQYvrF`Zj86XcKQN59q7roL-`^!!6rgY0h{(evR;V&}bK>Zex6pw$2 zM(Hcr^uSB=Z+Bvn`X5-&lZ5nN(TRNOH#qWu(nE)o&)j!E=?M$OXCzM7CSIw>0Ofl| zsE@YbuQ7!52HxCDm&v~V5HRv-1f5W4ZjHGi7*c5`=TzsJ8I^W0;`Zby1|$y`q@Qj@ z%2rw5$L2UI2*fnG74Svf@&f2kgW*cVXkGVv%N#*TiK^*h%T(6m?)P|2KfAR2ZFT@?*&z20!Yj+>OD3IITlWkp>R>lQ{z|A1A(5GCIEt*)vO zSYO3A2GZD7(Dt?08F_IBC#o&XrVUyikQbJ%A1j&|0jhfd_BImG21_zF)>V@-Rb~nv zS4mkv-5L{GEu|)+lEmDOXiY=)we&Q4*XcTGtE{E>bM@5NSE9+UsH?TKw11vlSL%1v zEc;HVsB|{_Dt*>2bA7xgRi$bYSddz&H22_-skhUi+r)AdPunNa{tbgOi&`QOA<}Y& zi!>EZCz&WxR#qSVtwzJOcF~~O)tEAFPL^Icz1W6Ip}g5o)q9 z>y=ur{ZPrSa;{V#T{J^Ao>1jTrn-$n`p@EWQFL)&a9cE;blI=PfCNpQmUuQ-2PZY zq@bj_xY1f^u#9ne-pJzNhA`d6+gwV$i~>i>sVak3HR3@5-CUTaSi=%j6$8Fir6l}% zzT90xBBy0?GOn2sh{0;B9F0XJV&_wZzoXYKyVAWv*4;Yc=xfWarUn~5p(Bm0BW)T= zM4Mm>Kh{}MCc9ifI6mFf)^5vt!7e(s%4X~!8`AJNO2O&=K5?5-*`{NCd15usdrIY$C(WZnLpoDPAJ$568YnY>4)zttN1Bkpb zRU#FQB0@N+Tr+nwF05L1kY0-2X-uohnC9}lsg>L&i=$x> z(^|1Pv!|&-3)6Y*n%8SzP~Twy6Bc)@2>!*ufa+#qNy~l4-X5VxegqEeVze52#z^^nSr_z_XsN3%q@u|WQ@qr$?%L&Nt(Jxjz=Qkp6#?1=eSwx?_t zF`jj@d?m@7aw`m#d{dHg5x$&pmEOV(7nzA1Rt{P0R4E5WOsJDqDy2bEU^26;0p8;jD_FiXRkjmgJ;72Ac$#?PnC{n^A=}M z9XP=R2Qf0^lGQHmhRRQ@EaO;jwoA5)E!Pd?_@>7d7Ymi;h>9KG?WZw4yB6{@BsXYj zs~~Iq7E3Uj_*zZ3!eT-~uTo*c2kzzkS*9qq_ONU2YNA#}DLYEa#2S?^ZMe84&JPJ( z5}Ic~mr3O1Xwb#?2kBehhD9)zKM3F-X_s6Cec?gLt`ez$b1f z9zdsNTAVw(2>18#KX0!3V;aiJ^$&1Pi2!T$;wH#e0u#8+e!r_7J!S)w@wL!Vbn9n` zuB`c^`7C1@&C=ldMK3Ue+6VSe5_|==6W&+t+c>5NV)-fGFz2Z)?~FOzOaQGsH4@sqvU=r%%&T~A+g-P? z%`}%6QdJcStQedPTUv&~vGLlh$n}|Adz^1dhMJY-buXa1wg~nHQhQw>5wUwcEUsT7 zQj5Jti_SSeF>~c_li=||CY#rZum+4?3)|1vL2fViHgpS@JcSWCztAIZia*yCnS9?r z9HR9qTrMbY$dc}NB!pREUD>Q-_|{$bc6?+QT{2iC{ozq6Xl6;Zr@0s(Qd79tslSzcZ?@?tG*Q%1%_X{5Q# zdE8#96AGOZNFE`cIDOV0&gh&dL5N0d@`W{pCzh@z9%F`yNpPxO-icwu+$o_P;9Xnu zhhdt!2_O#BmbqS3*!FFm!(Yf*e%l^Db4y7Dk1oWdPnG$+-A4GQ8i5!kxj_t+toJyJ zuJ(GO;W3M?mP_K07ykkfu^I>59h()fR)w>EH{25Of&WN0Lg#~r`aK{_=adm-27jGE zAf}W%jx_PfoGHlg;4t|KlPO63FvN0`$SrP9B1rR~pZPNJnKAt#mIt9QWexxr#U%i{I->L@1prPuJn^H%>aT_lF(ufX z5)g8vL4ULc`0OnGG@7kSi1chuJKsUq`cq3Qp<8nfHAN@P>Uf+z7H zQvT5MaLB(8^~)c@O)>zwZ{V>_(*>%cz=+`X#I!O{!0_)uKkmB_H*A&Q36 zJcw|j9Ekxp%^!YbWfTxgeL-m0@S%MJlCQit^X0(sIiQJcrkT(XwXQ%;yV)(lry72Oj$0LOOqPvw9EcbOkpB8+;1fmQXKRIu=O26*PiM8ioE2m%x~uocNV6Vk9*0WI5AM zGcc3(3xk)CqLC(JBu$vQIt*^z+0vAj4$P7TYJNB)Lk#CP4HWXoM$rZ}-a)4gXZvXT z&8Eq%yhm&Yvj8;pbVV4mUqUWXOgcqg?dY3UuuBt0Sz|Q)G@RUVXa&CEp)d*q7YhOE6#2+z;M3vHCE&2dyP!f_R#`(GBaW_Z5~W0HB^2pH3{*J_`Lf8PPlyM}NQR`cY&1`l#mHis zjdEpTLtgT={lyIs>`U))b589tva!R=;Acl6`AB=mUuSF!7fYh@eK3!MB@!b(f*{Df z{nQj#1@QThz9g@@(Q^#G1Y;-M-hyD>-N`*(yVPI6HDn8eZWhDJZf^ZdhstgAdOCnA z5=v`MGC$+I+R9rD#;0}yv!nma_*{anRS_h0;52nd(@>*LSA zLim4ZG==YJyCb_diU6Yd5#t+&Zn=0t=KunpaZf|>8!)dhK9K%XyPg>;b za!!PT6A3|Kq+unUoctRJ_Ync_9=ygA>En-j?H~LU1>p!rXQ)gEmmq(B^|vMe@ZL}a z-*;W31gRGzW#{NE7n1R?-y+RD2QB5|^bs^YHteCr?D>d!f^(-j-4&ehqBFAl#8}*r zU<&e!VfZ4|ZRlg=aYndg%F59753Lg6uLWw$3<_XWDha#F%m&f{M7*rqS4;<1xmCwF zC8rE&Hq~xnkz6-xzuM*NHWalloihPc@vA4+6lFg;9p=51xgiT|7@(m-6u~4%YEW_< zwmfrDE_o4!UA}?~;-C^`Fhg>`y>Tve^7-{A>b)uBw4AE2KvheBk$imR>>b6leF*VW z$}9P#VgS#;G;r(Y1pg&(uE(2Yr=Vj1Kd@ht1%X&W+J~A4>p=;?_k8*Tsk;AIhb{pV+`~HXgGKRxcrgyetE4mhFN(Qlw63hf!dtM!__h z?A)09wGg^$(NQM*!w4nUZW8hr_vUqAee-WbcH!{G2~gG2Xg^juCcG(EFhB<2qcBIf zuG7Cy)0c*44HglT;B$XXb#mq=d<0fE1MqYY>3F-slv6J}QyXgKn@e7nXCK9+7bS#F zFCXX5Wyt8S5*&S~$?u;vLcYNvQwDKW${q=pOP6}WIfm^)S-F3xcs54}pD7;OjkYF& zdCF(*L|I8;TSe_tm6F@gZ$&0x*4b7#tdT3c-)}|EAeHh;k@9Mu@|xC^#wAGLUyw?( zC>}yWfk3 z2LwnMm>lq}tE6NK`bXeVAlT3K*W&h}uV3}AM#juP#FKjkBanaPW~rFj7o{09iAM4b z9g}nHJL3?GvG9e7Cl-`iaZzxK=xq@G5io)wGpX{X-_JQ!+fvm_=pYYhOVZ0fdHv$A zwB%shQJ4xlBJ|z_M(17v(GpxM%GS&V8(6ROg5*Ht641usV$-6cN``Fe#P)sz&#Nz zHZpREYv9{#?Y-zry|854_@)8&NH!Gd04>OZ7t^BLeeO^&*;iCe&l=Tk#_wh@-nH!9 zn}l3aO`k%o4|c6CYve9mQ@b-F_qD0bPvM~s`BlWRO*JTZnW^8rXz)M|toUROY&LQv zS2I|6wNEB_n0|C}!ec6xLRsn%95bF}T2{ka7PQS2t@+aFu&YUK$7~iTcUl*td=?}` znukIStsj&r#-3VQ&<-@@w{WHK0?LzngwhaTX3V%nbVfs|(i}=!llQ3)8+@fvsWemT z5Yp^ArON>GQulsGO)7gXy5U*YG*o4{(AuuEHkjjmi@}QXuj4zsw4wetUkrhVz(JGW z+^=-t2i?8k`Bem#o{doI2ThRq(YIRBb3DEbqZVJue*>}PLrNyC`FwOkvb4e%uDmrX z*owlkj3OIBs#4T-kLq;Ld6 zFT;7EG5VH#&_{tL^UX2Wa@i9eRv(W32p$xAIB)gH+&lq)oz~}pcEaFK;3@1>ftv!B zSE0B4wsRv8NRt$|G}%sNZG%)tEEyHLApS?vRI055+>Y@W z;+9H~zpw@A49$!&9KnzG?b(Ndon3Oe4!LCJ%yUc*xkj)UCJ5PrVqql6jtKAu81M$Z z?>$^WACBNJB9V=MNRFUYCYArs1^duDMrm?|&p+Q9qn4e{7aK+mgPTRH%iAyOyQ)Rd z*aSE6hd}&5YZdIOJzrMb=NC(msXUS>^VDS^;`E|7PvGg9SUEOQL8GPNy+B|$Y238}wm>eIwtzqOg zg$tCj!5OOQZCUOHY&+IJkBq3^cxw2O zo*hD)0VG^1unO`wy~o+8KsaybJ#*G9CB~x>>P}>rGG0&C%DA2sdv7;jKd?*CQwlz< zq?DKCH_Rea>!OM0MpwzrS56c+_U%&-aP+d*4>^f1;-+JxHe!;B#(wXiA z`R?0jpzwghj~!$^SRrrVW-rJ;$B4@|1#x`QX?@cXk3pnX_qwMDvu>E#_9C?U9e8fx znV2Oqq(yvp4fXE+L-F?r)Max;dGgL z+*qA((#JORs}~m_W&m4x{wCG?IlLzRZJvdB#e9M6a)iyqC>!QAPvAmtT*nJ`O!I(9 z1oDt*+XW}n0>P}4Y&cpEg0pTN5sQRDXVSY>nYI=*6y=5AaH^dlB{wm>LS;NZ2~!*d^(yV{Zm)?Xi0X*`4BhT^ zc2r5W^iO>3X#^&VQFFzSND#3?7*IQ#^RVJ`Rgq|1+eesn$_u^ddZc9wl_H;LT-SX8=bSCP&8JtI9_gNpu&(D8 zefCCuZCz^S7T@=1VWC4f5r6raM;Tf=-!E2!$@)vkHZK2gYL|j&+OiCW7)UZyUq<@W zqFH$vnt>-@NFd0_;b(%OJTcG7&@l}0ri~HvZuI6wukh%XeX?Pa=s`QK_7INjM59^h zG79xZTCVOgtnI|jTH!}lx(TIa`ctulFW3GVR z!fuXcpK}7irUg|AL;EVjfpAaEkGAnmM(4yF()=;IHQ{o~@c`c^Y9pc^;0R1Uk%PYu zk&Yq(e5eG>$J(B~7v_0j%lu$a4NC2&8XHgXH7gcnrAC2t>uk7(7TRj55KQ+-R-!YI z`CbivDE?r#9kh3hgXoB)n8nXrcpEQ~Wje6}L%jSBRF|oiDmu#NKu`;d8bR(6^&vu= z<|c3CM8p>l`&Ki_1n|xVuNJQZ8vU9#b0*P(>QMY?nrY>!psEBib4$Mur$GWlGRk=G zJX%A_JcgYzy;_VlZ;Xf`WSub(G;O3>t>j8Tbgz6H8FYjo2!MP9zlVDVu8O+f6q5Hi zz;xB1$dz}K-$GN6?4t0Z(4R8sP)J;UD_vy;-WW56Z8Q1I<_=X%?>7PlO19D_lyoSv zK<(we7G=4<>aEZB8O*E2@<(Mz8&=U%sPi15qvi_X1#+L9e*%7;1j3jP`{gnvn%`65W>^& zErpHimX?IFS{di2RsYGEO^ydy9g<)eOjv)uc_5Q68U38BS7O^A=jOUV%*)z0a>Iul4Ob_)~11f*$B*Mws~)YoN}lD$7xDlVL-z+PE57o-_r=&N*t2&AU7YYw+eB%9w2bsBddIaoE~;c(9yf z%o)gYkSx19v1R{@YW-=Z6Z>sGfNKqE*O%Iq=*pXRnwL-LwK=7w?3unBw2A zgR-{&<%lHn$shQP=-KSygycy$YPouYB#=BNcWFLxK+{nU0jodEm3B>dzd+>P;J+@{ zSJ$BW6FQ(-hc|SGPA}CajRbc$hqWj>34____5~s z5I>MdIuFdHyIfLUh z0fsx@)iQ|M4xT20`y69v1GVaEj1x=`fO+~-Q^xN4`uE@drvKOb#TN#@@+bbcPpQO@ zA1wbXsX)r!#nsu(#MR2d{(sO4Ms#32(bZc2DyX@cUD#eG5LMGj5jDb!BL5N!3Iu?Y zUFMb~H_$H?_Rh~$1 z_{8Ur&u#9%JfHXFfNOrY3x<_kivYjRAHVew_i6jhT`ZWV}1D!w*ASj?^(Z|s;$e6T%sDad= zZ=fm=WiYas8N^H~hH3q_An`(hLWM$!%_Fqh4MLGZmA@H-7-En8=TO2~8dBh1AwWT0 zir<2#M5~c2&?`_YFfu5a3=9MNe+5oK)FHPk18D-QAuwR*Ff>U3sz97T8;CR*T}sEE zegx1d2z&H)DZ|kI8BkgXdz5zeAp7W1^iKXDbup8w6c14op4zwq_Js`UC*ES_?CYq4 zmIbPUE>cT9wy4uQXl=q+<4(>X4$*n>!cBDH7pZTS13%G`c_2Nga3B-}L6T25dl*5P z1USJ@Pucx{Qj%>_Ay@CA(I9?Q@syR<2~@m#nEnVC`OEH7^8e`4SD`O4)=2>xK&L=I zPzC5q%oDI8eDo`+g*;SG9@Ov=XR4sTsKVhe%pIA<67X}`sp*3D;Du`P1w~~1ijI|S z0PEg1q8$~jyu3EYI?iB2ec;1KRTwgl2iyVMsE!&ARn}$oqZ$MaOQ!+_))1JO{x9FS zxf^^PJ$+#9_yc-ML#dQ}!MqB`hRR-YryX0Bv|nmSo>2uH*wGP4fSGq|Ut?8KCtwou z7K!$Ly7pe(vAX%*D+Do?BLbOSLG}371z^9i_=}aPZQh#H3~l@Qq&2!)r}YR8CF7#@ z_BGlXzkOp;IRB)QXjof(BB8PMG%eSq(jt$tXZnCqDqmA=?;*XyR<$Aiv1gzhuQv+W z0wwm*YbpwTslZXTZ;WI?H}K7$k#p|WXOg@_YH(zVXL-Y+Po86hhz6ZW(F;Xq@Cewye zK;!x2fTMVRqo02^TT~0IL&w@2CYwsJTwX@xgP&Sx>7?0@c(pNid0rc&N9X*QBj-6# zZ1NE^yy51gVQz;5U+Nb%H-6*{757P}W9}tqQwTJv7?@ z;}(5_36WFa9A{t2zD_!irYDI*XW>Me0bz7km%1tqmQ+JmSN6;-y@%Y$79&`B-B@+@ zWjyv4ow@0o3PLng(<$ruANn$1*^#-I%;C}^3!K?#RV(aHmUGMR3OH~CLP029bZ;^w zKRkz_jdv?_4REds^`8mT=xH(@SW~J>B*IZW=~|(GY<}MJIVu%dlUGqh#yft7}|I;<1s+T`|91X7;p&EGA1Bt6gHOtpPX>uMMkCJm_2ToA4c_XvOQ=u@4Rj zto&qANb#(uspeA?m|g7u!|4;Q$5V8y9_~q!*`%39roLfY-5_AolW|gAQI!@sQ>QWe zgz;W--Fm?x)m`=e*=^_|*i#4>wH!2*`~2GTzztq3LEw7LEr`ACQmuacl&+dOSy4k% z3k@((HL7fLjKhIm5b$T<`}@nmo*C-cE~w^NA7&(dO&#;qG>|@hVps)p=&(yyPo09* zwm}f6(W!J@nK2~SQ2?0Uy%JS`SJgoGmUurbYq4#II-}NdHDOlZ7_F3JckD#an4mj^m5 z77*MED+KC;_BaL2H`w2rrl)$z@R@ZhYD}@P8w(eD)R9Rh4PG-si&cgEL(lKHg8(CU z@jk`++L5D1CD#M;1wJni$l*iqz_?JrbSRy%@xnahEDO~_vh^SRiAgvlSFw)!~ca{l|UB!@iO_~D3llTu^tUI3K__`^N83(ySZiW9lwhiOPG@E zIvG2&?;&c4^xSy||FDnsu#dubKI$Hb&jKw_fV2a>FU;vDI=15}RU|2WF6O2E%T>7jWA#jMql%;F-x+-Y`v68gAT941%MW4d3l z4MSWv(XpY`dObTmGlR`+Tca0yB&B(U_)v58OFLttr|Y4CK8bR7BCpZ9zJ+?SwM;=l zEZ2++icawWFw2#itwCo3m>up~t6(7raKqT08b#MKsh>@AOT*i=U?y0=aMS;tUnOhP zMV`%QuN7oG1vk!B|3xOVKfa%4L%4c)J34!3n>5xqcteeAlk1%2c0q9M`g0%-t(H=O zZ331D$gw>;W-S0SemJ#hyXpmN(Vc7~Qg9d0FDtc!usNF*)>UKDuIV!v>RMw~8+t#u zqiKP^B!_)7EzGj}Q^OU~^^PS#a?`rQw^06(Yq^E}S}dC4fWyYaCiKRXrfCbUL1(ln>of#9q=rk=jXCF(Be672EdkTFs3VE~kvrW6 zI(jW0KuP1HNk;;Cwi(G3d>U%nlxCfw)~GYwl=cea+85oHCRbea#}UuKJ;;=xmcLm( z7RGh77lVug#xaMBX8RY#AGG8x2j>qt`#!Iwf6lwym=q_2hq@U#aLHSi1Ycl$IlK=o z-cKG{0@9U%7|ZeHiU^Mde{H3cv{b=JD+Du>Qjpb}Yar_idZV8*iY}}TA)lbM;%Pg3 zAyI_C@>1|4YJ^o4`*K?>Wx4`euw=Tj*xO3g8Zd0E(i<@>teUi<+nOh8$ThX&_GRGD zGo#{LK)#XpjoEK-d;@%BEUWSrHF%S8yMsdbikBe^vW2n35@T85xX4S2Q!#!hj@$gbsH2GN?6T5vUuN^td< zR&aGP)nKbYz2Z}IO2fbAh(>T#oT|?yNIUG_q&EE<)!(SSx4~S_`uN9bUgGxsVmG=C}H5Ub8BKWkzY{cFrB0%x zWJcU)+t_uqR$OD-zQj0n0j)ZASJUKiNN-fAhMl3G$As&eS$tpL1fB!y05H)G{(`M? z_j_-^yck;81d)L4bKP3?z{muIfE{Cx*@U_kd#YhaGcb3Q=8|Q#U{o`HXH@)>J;-x= zJ&H2sYTe;-P}qbpj|~xMb-;v(JqH9h!Ary(c#eAF2e9uBx{OluIrxTP#xOcgzv3|B z2m;&h(DdC=^qsJ|_M!%C>bSc1tm8QKYHwSs@pqlvhJEU;J^!SJsniL)_OB2Uc0eAO ztSNpDxuFQS#g3lT-MtQ`hS%#Z-L}|J^g4On)mEeb=>UD*RSOL0!q}HsOMTsNL-2Rf z3pdc?Jm6fb6|Liya@mm!vq9_7MN$m8V2*ON`!*90h;qU&&|G6hKk<%3)vZ@7x?s0H z=aHJxB~*r6(^y`7LTGXS`emovr__ioX7~1EYt~lyYG!qL;Zihrn!&Zsi@=TfLy^;k z$&E8yxr#e$ahiE~sXJtGrgC|Tu4vaB=8648QE*A&BzuLeUsou2S}etgp>*Kb8OOM; zpzxRm$Gom^@7Q~ig>zAoRT48(hk9#UzIaA2#pJq}`50u99chW{0Xxf(pg8i_Da*81 zI(cTzD(a2nDEnrC?Ex&y-d~n=X3jG0jofScrV?OJYV}vKE78=BltT+wN`Rpmv1^&KD<$EgC8DWXS8#CMQ|r9j%^FS_!nhM>A( znod|7OO(|mW80Ea=tcH*=_x>N-4H`3h{8PVXQ;Zim3=)b)@D6n>k{22SdCSU10uOE zj8F7GYTmv2tw@_$Wy>A5{<*;}emc`VJ#0@(y6+ju>3sf?ecFQ-N7F3>!PaHT)C}&h zb4aL%iYGJq#-wQ<(Qzb>U8Rd?Y{T+KQ764yQbj`=&t`8;05axgdc)>gZ_LW|vsq1^ ziNUC~3O2?`cy{U4mJ@Ed|If)&L~u)l*n0aa!ut+Z-*{CyK*kpQV9e|$OS2Bf@mpa#3VAu zOcV~7p1otT%g|_oF|SAP_XU6Wf?zCJ1!F4ySQJ<2;!~#4d6bx93#QP#7M_$M9ISIi z{|b>e-}LXC05~tt422vX9m0WP_qDh?HwFgEO8q_KG<>=Mb1Msv*f|uetfbZA7Nuag zAjzhc0by6b3bAlAUrwD@8`bO1)We>G6osC|E9^_E1vcw90 zaN2^2Z|oj*Dtq++%y;yjeroQLa!t}btC6hX)>*h)Rgn-w0Bp%|RlA9)iwqzQyNO^LBh0@up;ZnC_8pb#)#Uu#eIST32kkTOxpYEJP zr=%N)be}YS6hfq2nnSe&lJ3QV@5n7x2F5@cj<5YvL|aXfw?=YTgb|wFg4JEuahHY> z{?g*utqfQJ*Fc*79%)TFZ&B^sbn;8sFIRH>DV%;BHfBa*2h? zpzC*;jYx$gt~O_SQk%PDgE^AfD!~c2^6?@ipl=VZ4oBDdH~}9qJ?-c=NT%J?!1)K% zmGDLo=|i)GQ>B8@q&AzJAF7IVg5dhD_viR=CjTksCLeKNT%BNFcXH@}YD5)~f6fUUl%rS`>Lsg)MrnHY& z?O{pjN1`yNl{O3~>dWKmfl}d;CbKxZOqF1kT_B)z zyESF4pV0krJ0h+|KLpwieZR$)ZAtt9@5m}qoVi{TDZ%$<)c@=hxyaWN!%8R&`rDVs_N}-{3VlmI$ zF1{2$iTRgPVIpRD->tj!=y>90Eqdcst*WRr>Ys-GOt3nv7aKnu3AL>=fIXUY9x3ys@Sm-|&qWt!(bBlUcdv%MU&z2lkJ@2#lIdH_V?qacN_2 zT7O8*>gor~EJi!C9PWy|KYouZ)<{OD(_M+-wHb?PqnHxjqUzfxl&Q+AjAVkOIcL>5 zNiK2tP)GLDKF^-1W)}6+-%uQ)OZQDdbvk|nV zSn6Trv1FtQmK=B0_Awd*f5VyA>qx7R*{Z z-0oNNAOi;|Jg9o~mho*+Rv6yny3{U1D%?4j-3RSumHfMQG?6)caQBYEn^&$S6zp7j zfMtmS zJ&$Qi1!mi+)rFG}A>|bYLK~E;Z2MhxUi6q3*JXA3TL!Wl{LSeNfF%Hy@Y8<~OxANg z@K(gv6vaPA!C!E1N!D{b@RqPU9eq&2i?afna+6iI2)T@$t$qO2pCj!Y!7`pmm{*&z zJd${Gcs?b^vQ+5${-iJ`PT9bt5{87mkP-@-caLw%X3ym*D;IfR0h;_7uH5{^!}b|& z`_iPZYr}wtop-HrW2|F?k$v&9{ukN}k5 z*lQPl>Olc2?-Rgx!!*}r8F~FZ>Sv{=n=7Aw z(9+Di!Sgf^IeJU->iu5T12#7e;QPZg*JkA9?+DENnReoH{6_hNVw*Pg!& zW%VCdgF1J^D6@?(X-ywb1B0Wn-C&K}_lB9sCuho4jOoq$%bNS4=Gz(#o`zPV)e>>d ziO45w%2k()7Cq7$?FjZQ^Om%-Wl=i!qN@n-9u@x0cNrD>+H1+K<;YgJC3m}!RcQR- z(M`BY_F^*fn-O+|RYiUXW^d~r_GNry*YH)vHa{HFx3hx%Rpp&@7K3n=X%Agww1f4aJRJ?nkf^Zb0UIZxA}Py3Y%%>mtl z;8SN9dBnvepEc&l3qA+AO!(~!=I!E(e+6xXb&ZQx{OGjMRR+W96?J<}rKeY&BR5SOl3 zIb4e%C_Rj?zs_@7hw1O*T?0(?J!gI?RSC)m2j-_f;JI_+*E)1J-<^(K(IinRYHf z9d$@>qh)a~g&ygRWTkTTr5_J?*t-KO(r!;BxHGvO?VzVxgLqOo`&Q<|osHdrrV}3e zWLcA0++4v&dcZ8MuM6wpw_R6RTx>^U65P7nj+;a|x15I^ohZN*g)F3?BfZHiYup{1 zgMn5a{v(~kj&>B_qC%E#pL4Z2@ardLvp0YPKh+w}b7>vKHX450dzF=$?kr1|HJbkz zV(uV_{y^aWf$VJedt2=_lj4TWHFM6oyD37GuY|BFx>M`WN_gxQ%*VVFYx0_8_Gvou z@c$mGSd%w}9(*QU?*-bOn(}A0SW7qv;DW%joi0!NOk+_nW6}ROd=2X@&hgye+%_yk zj;lt5+YE<4Lm3YHA4nH-c=H}OYR9dV0@`5sDiQUzn2jafGkqEipib@UiR!n^sI-2? zm&-qKo>^-pbR)tLS(d66VR6sa3L%#zsut-h#2Xw)QGEy(0TtpuKu3Sw(tQY7QEvNe44(5-?jELC-#fLurrey=$gmn zq1>1^q~$P*Gi<@*@h(}My)jcH5KLv>g1t9Jo`A^f!u}2ne4z+?vofbP;e~P{Ub8cl z8Q3QNA;}6ag$&9@9!yI?o?NErHL=M>?q8<-iJw^(a{14?g_S?v#s@`hDSGtAnvo35 zCz|ruo_$cbkcTx26WgevkGYVeE{a^wgxt8n5pf9noEdohCtN~Oj+2*ciyLb$x;o9& zMbtk&0G13RSptck({qtefC;A9Bs@Feqa|$?H0O*|Dmv}&z*aj0XIJR9EUKhPRS*aW ze_>JntPwj=DBPAFR%VWq?9G#q==D%&P~@3KG+QN!o_=sTeV7BZ3q-YN<20>xW``jL zQ{eWBk@chA!}w%+t+uDA5qfZOfs8qgqGk{;b*#E)e=qqK)A{9L`<6PBgDys~1GS88 z$l6PN6|yAzony>_FwqVVNRBzrkc(p>Wm!QM#&!KzS`o|%K%|XqL=Blge<_Yw4X@EJV*l@1}*FZWyES|?+o;B|vL#%vLsl3MU3hwNMFT|YP!})#fH^d#`aBT;H_}n7{q1%1i zrUP)2s2R2whAx-wJzlSu0LPI)sJY$mSFCEoXqW9YJ!DF=*$<6W;W4HofoA+T$$qBR z%iMK1n>MCn8tLG(bYM;6)&y2KTlZrNkJX{O#>9O(1tHbzIbaxmj8GA2g8$qukNt|C zZpr$vYM0P$+G^jCU>Nf>ZBJWmJ4nnw^n!sL87XGvBSR9h?s2ab71Tt)w@i8kIP;PI zAZqoRUT+{k54*_grez`r(ZudE{7Wed?zHQrCuA4UJ+~H9E(p?}z*^XUqVH{LhjiB6 zMB=YUo>nWxR0Z5F_5bqUrR~a6bA%Jq@`B$mY(+Ps3biqJxP;MRs3~qNjgMJb`aK}< zlP|H~ZhH~dP_uAiUcE>EJ;Q)Jz>uZc%Di#H8W%MM&7JDCO4#tH^;$zYWtnXMKk6n` zM`-T*;SILSo{YFl$u^i%MzN4&bv)e)s|a@9X0D`+;_+(QXg(9jMNToB9_nHD3WKb} zgHPIn;g0Jv-)0a-rG8WSDuo;RD49%qjAX6Bu<;W|J-aEezQix8QZ{oF%x0)UQG~Rh#jZ$?4sIKO}f9>)p328Nn7ts2Jsx`k2TjQjw z-XD=!oNxeN$D+v8Vl{1!z8=NzvT)5sJ?;4+wyhxz9;th2LN2LF24`XP>hm-i%Z+Eb zoeW2t0t&0R)YvYMe^~8m6REi9?dv*SE3ITU0W}ju>mF~c-nD7h!CHVQUKLYXGWf`h z)%0lRBIFT71jiX!a%~qb(<9*Z3$P@yt9$FT*8xy>iow=94H9)5h-!WqQcH6dwB6K; z%bO$^(b~fWRiQ|=m|Zab*hH=%NIeFnbKi8K(TDKfHxQ90Om=#hzJc#Aq^G>Q>Vs z(*c-wPr0bAkK?`RR|NcDeJYGdBs97GMjqHWJb%nQAgmAIMn(&lC+~gJhXL9>aSc}y zF56OA=B6tOD#OY{4jjfW~JJ9jgAQr{Dv$P|2aVGfm7v#A3N>`_`Z~RkUXs(c)CQ4)`qJbBG*>K;S#6+ zr})|BI7%tH!|Z8%U*m03VqsbQ9HY`?@r5^S@&Ruiro?ls`imK50z4?q-%KgLD{3<1 z@87;s01)O>S)QfOH)VTaOn68b-*G<^cf-b~s_{_8A1%Z|y6zqEtGW~HxcpF4we2vV03!pkLLir?zaEOMuNd^Y6+ulXIF)BhMKY47=mJ2UPz2y_mQA!?>lK z(7c~L>xobW@8)C>U2_>4Af+yVP{d-c!Am>>$U_A}qE)0mQGYNq$GCgUIdIpNeM}0nM?sEZ<`$x}>XJ`iz;dPEFlxW2zLg>JV=c3O_ z3ZwjUdyD{V>#t03l*W#8?(;Hm-s(*aeAPaWsh(A_IlhEmy>Yw{x#QoWzed3NjXGIo z&R3lb<;xicS0dj8{b-Y7X7LjlIE;4rBjAIz*W~E)3}@ffsBEeO7hGX)7q2u|FcW*p(jO=l3iszw-PFGD5^7PESO2 z1F9MJNUJ8Lg=AXr_Y8hg^sW{woQgL+<9M1zvDFi+n=~|H7qMH)39B^)RY3IDL?uI9 zjKb@^^xL;I?B;!imPXjUp|cIPd4mT+m_@9xIKjF`)f=Y~ng78n4N5^XM6h=32$8KN zlo+y`seVTL&q9jfkYw-(`P;WLs{gNu)Bl%{`kyaer;eAQ+ClPX_Nd$iza2D00HOp8 z5{X<`88`}RgvdS$d^j#dAgMwE9K4*_?gT{G)MCJ*WTPy@eQmqSM#k#tA{2S_32jxi z-Nw0wZdJR^+N_4=S=*_gP5ar{2e6atax~#@yWfP{)Z@l&_L7^ymVD0Z@io=AEXL*^ zwcoqhuPTW7xp9TzyE(5iiM@gQ%|8r~`Yz=*r+0E)`ZHlWF$PrLfIVwq`+K>f?ogiv z{q4LRSmb@Lyl)kVpC$d>XOW-KJKx^~gM_wYdEZL?KVkEsiEy9neSC}9V^MU4F-b|T zw;x0HA((YLz@7#qEy*=YLlAwlf3!#kzy=2x$>boS!H**4=~13Chno}$hmMBG!5HQ< zG9^iep#N~BjKO8)2%~TUr*bMF0bm3~&IM?N6h>U94a2722ms4xJBwq0GtQZBFeh_g?IW3JEHPzqm(kL9g<}`;v}j8 zePe}sBF7#dF3whKB4W5mj;c}4ODJDj)j+&Fy_qD_WNri_YdF97&p=lBF#u-XFgH)T^@;XCy zDqUR~m*>?GI4e}gIt2#%@FvsBc@P*!MN0f_(4qxBi`M-hQ7SIO>MUWj<}hn5T_wZ< zJ$BJZgjPxK7&4WcB|XYGJsP=8jCDJ1s4#!Vvc_hd^dRb5`B0tH^+>S?9>k{As!X&Z z;A~YlvvU5$LUmn*CvkG-Da3-d#Mx~obA_-F(R8miq#VoEu4#6inxiN_tV!qH6`LMu zt5NI3jL_S2dpmG3$E-p=JMopud?p~LMOMDPsk1Q}C`TmNT0|N7r^$So_lR;W!?wzK zSKjfbyPC<1bJm?1;noU-uWnd!IA#KaGUIdA%sdcGG4D>0E?)ZgRqLz=CgT0c%7asK z1cvSI2sDWu{fyChK5=c7;aDC52fOWjc(Eb-48Xa0#QSvG`OM;suYJ7U@l`0M5U&op z~3qZy90(6T{rLAi>WZg=!ByZSb5 ztuQ>LCD{pyZ=@q*tOcz**~0NB8Q^@By^P9zZ`34n8&vr~z-G)LwSaLgi2Utihe zG%8$L;k0kC9nYLiS8L#5vxwZXiZ;zcKaQ@=f*Cq87cDQHUCWj`j~Y&zp8sjy4{DpU zDm!RP=?ZGpeJozh+-OLtGF(NiD7vVYUgy|{Xtm!(#(cLBW&JjTTPKq+sW?>rmlrq- zm>52BGu{*w%ltS;yW9SudAv4+H7i5)GaQD{f9Pr%y>c*^TBlPOrM@$jTgU1+ zY2iwL>BR*kAf7h>4nni_kIUCLiSRHfBRjNwb25-)^fXaM{h}EQ#ciDzDE8jVo9Y}5& z6T=O%>rIv8fl^GXQ_+Aii_YIptHXUo&^E3s)UzIIRk0r9En~Y@$9QVTFERkKIWk>* z;d5Ji;(n+ujt7U>Fq@L09FSU?2&ETeuz0lYRP63?keBGuN0;c4X3F#bwP74Y5p9B& z89D{0^!>8SJgb-JQSyfz@eIPXEs{^REgD5o=pw9`jk$)W*NL84nSd7Nld@$PV#rDw zX#K~7PKsUdO_Sx#n|4XGZfg5wHW(~f392#VgcQ6HcnS{6)EY!Ja;8}wkMt1sXlDOs`6SWw~8!uqsGFOAV7>lo}(8p=&ZQaB4;u42WT`5?=obV-TqKN z-PJD9qtHBaK)@^9)oSC`@$MbF9}G7s(NcAlbySsP$-Lh6AFrZW8arZ-F;H(5`bXuE zP4g>G|Fiuf#!HVuSAK==b(w9R++tXa-N2?;Wpo~1wR#vK!lD28gOk)Yt%l1-ITY`A z3*Kwe5Eeq~Oj72)nW!Dhfvh`6MP!s`8|arrd{1i&uN^vJxT^iH{^h(%x@Q-rMl%~J zFH@U()<)&uC9?_F?4g3qYDWm8r~yjOtnuLq!>t;_HE+81Xw@0b;m^%g+4xxI9+{AS z`w5GucVml9a-lx?>-(DpYf^019{4ZuJzY`DOY(<0B@YQ6ff3QSlO*;d;4{W{*XG&S z0fNUR+RRQ17t*u8JJKw^+X^J*tSFipAiQ=@ z)EKz;O&iG++NxG{P;gka=gCNLXb!A5;vQ(R5!#PPKh6}|9>qB3?s6{a~H|oV{`fecEtR zotf9|l&t238Bb{W+m6c3s?RLpE0)vH%7*wX5hzZ0u(|H*@r1Cwt1;JUBwE+uPo!xG zLWYA(*c_2hVqAu-7S;@D7e2vQQs{+Z@!9sR#dRxQJWKM&C&X-dBdM6bvw;2>QhBF^ zkgr1jLhK1dhi#ys(#z8qT5?-E^WruqQgknPIQRbXbYZ2}f2{)~6k&uH#1e}b>)Whh z%34DRzw4V@j?U`8LcK$o5P%QN%Qf6)4v3%ahZZnmd%_>KBnPkKP>w~b0b_H78KWM+ zLEpXgt{(#UpIt$|8-FLkP`9yQdWeq@v2lzu76mzPHwzrU?Be$wb1$w0Opu{G3<(`jYOMw#*3ICov*2u6|aMhHZEY72e=|Qba5UH>y*Nj zittpQQ~@GW4&_sfas+l0nHCe79%jvn4+PvWZbq1yg2_WJ7HzZccbofHXhH{SqFk*| z>Jhi*51&!k*8IENaNS|au4y)z0;N6II zsb$TyiU!_Tf#TW2)#~W{Nn}%WfyVd8Y5NCFf-NiPO^k&h9+R|A@f| z!W}cVEIFc0N#{fz4r8V1PH?yHc04N>xi-M(_W9J;6fHWCTK$-P=w5&t(F^CO+Uo`T zGA1+y^RV18n;<`Mxzgg`yG1Te#8C2_mqUoFGloRIBi9(HSfmgNj^CAU z=f< z=zgzLq(hWju7m6K>hIb6u}CxKH;+mta_Cl)pCbq`A_`LOcX%n8o+WW2)roOaCL#uU zx~q{C(I_(w>(OJ3YPO(3m9A${n*sgaZ6)vH=+klEiW>lzXgt;s=A8~impz5L5si^O zY!Evk6xAWM0?=rwd1Nk!nw5gQ8F}`8G8I5u6;Gpy4jZA&0S^96l2u~JRHl;W{*_Vt zQ^%oJD{M?-t$du?mP1t%iLg1bXS--E@>01XU9Q$InCh=7MC3_`+1tM2E|9(9i-W+NDpFUVXRnRRQ zBk_E2h+U;$0)n{j9=S`1=tfIi7T?SctMTVd0jrgeN*T{29^$=W;Ba+i$vI3hAkkMT z{p(f=P7MX(#zmhFY%&>}>hY_Pfr4uL)C5d0$YUzj<1Ez*Nt_k`Yx^biD%J z(9X`ZjlW)fB;s4^(X#sCF&iQ<<)O0E%S^qPngQcK$iom5i9u(BDH1+&MWXeH44iD> z8eB~ewQcr2XMQ2#cb-GJAY%igk_0?vMZ1EfEs1}htQsSl%4AS!nO$Eeyo~W)wc><5 zh#u%wQ5&v2L1+8ScI0mu&x{vwm-&)8CceA@sRyszv_d_vH|T;1rGs%q<0c*kW}|Qu zDomrK&*}6jsiwgo#Bj z*CR{+G8dmd}w~M9sDc~xF0e0RMUcN%T_g#Mag|nUR?;R zbkz=QfG+yp*hcv{Y~3HWq;ClTSMMCJ?@kPvEm+Wy2d)zLibZR88S>+i z>(^i@ynOt9P5mp^sEp26?1!&6H2JC2{>w^C*#pL+8Rkwl$I^W5)I}acq4-naIZwW3 zbd%h0JI>F3nQsJ$Ozrrd*GP;UlOjIsIg|)To_DeHuNWPtoFELl{tG|!HB$X$!RaI@ zTUr2ij%8qmgV0(Xo=w&g=o*V3#&+AeCJ3vMThrT{GE9Hq5Ml}Bzr#W#pJCd2#alkb&b9x7(l#z&rhphJ7g`O4rb(I5 z>bnnwjK^Q@!d>TiAs3gS865K`I7taf$t$-DJ5HF5JO!sIfvwiZoJXF=3#2Wt6aGKH z-RDAe@b5^YL@|drT_CrZc<68)ANzmbcvd*uDZ-?cr6bshGH3C3Nm#~7Tj*+C8Hr;Y6=UPA@p zt=^L;@|uC9xRYk6=*4WebA}m1hwf_IS^Zo0vTJi=qY8F>4Q;eHMC|iif!t^M#J)zg zAE9%P3@8C5cKP`7Z2@6Fs{2GfDY zK)R9{yWlo{fzQNr6a48M=ed+s_3t}_oS;cbG=050S~N-lp@~*{E|nR+(RqR?%CD{4 z6Bq7_%>^wFj-;H-d&X{h<`xpepkAeWk?Vhe^CwjWO3F^&A=AplU{}>6(u>7KGY_V0 zO%3NLRnAb0Nr+lW!7Qf6E9H%tbk1$w?Wo)RGy=TjzRX(k=8F~daMSTsb%s7~f$$lV zffbbGDA>b_s>XsMBF*g}BI}vFnx{aWS4W&h?Xpf2}0&oSRu~@tHJS7&oDh5pFALrP{X|6g*;#u)7 z?7cdx9SmlrDtrW9f5v36u%$JZ)Jj573v2zyd`lB32ebUg0%z`&OwT4a7_!$M&zDzb zXI52Ph0Kt?qTruu!Q_2GLxgZlFOIOK3|ZHE^d;}^(mmtgKp1z(xm&$B8d@P>UGInLK2UOcv%&n#t~{#-wM$>d*6-?=`Qovr<(@3U)zTjRvK zT}~4a$K@wmJ*A0>33~N-=| z@ND~?K5=RScVOyGR=w?Y16x{a8|!BNo@aZTCAq+?r~H}1Vy!E>F4QD2Yz+IKes&y? zj&99ki=yx=Q@415Hw}RE@|dAhyzBSJ$kCSN=p?c2GYSjiFL8 z09*701l2jxqaB=FiE~KMZOWU>M6{2lC3unbLtn z)ui&4AghMBZbOi|L;RkEjU-*P%4|)YM3*SykE8y4bB@rTh)9xu3S*6FhVSvmxm}&< zkCsPglJvVt+kH)4_1!PB0-BvsO;xWPVde7U<_c(@c(hfiPm7>1gZoTftgqQI+nLWI z?xVn%gIw_qp`!Dl$k?|LLA})3tPWde>-FE)^# zje8Jl;uG`B@@kXv)v^w3ERm%iWTr{iy*UoXQ=9)l59Fx`E&~9d>9C+}7R#A$XP|^Tvpzk1O=B zYKKZBDhiIr8i%bcRxWAe2$K}9>2Zf^JXcR|1>bc3yq(@Mcs9sB7_`szh6>nRQhw%+ z_&O+gV5(0B?>O|pV$Lr7yu{JNuL1AsqC5)=J?IoFET|a8t7*U(b_kpRI}0mbgxk#fN43rIlEE*s*!0x!M#0Y#UNAvPc+9g~{Kvep9-L4<$5D%WB*tiB z=n29KI+lf1kk4yoP%)`b zae?$rj-h`_oyRx-^jdZy>{rF4yR2=${et{cXB&p!bn7ECn^RJ!2~%W!Tn7Ii-DSAW zd8)|-`=Ho$PRk4=d$#7HGY^VXv%2Kv-|65aO^R4yhCU7R#VncZqQ>t<=~|LLqyy{A zJx-$h(kjrbOJxv=moJZ49icF~<=VV5qH8RKj_rcZ1A56bgzqZ#R0Vm zb)XfbMg_7}y6@S7Ox5B6I+_WZP|tMaMl=s3o--_`%Fo(0c@E>%3viDE^Em(l&q$;p zsT$SK0?eFJKu8XosAz^EybVd!ws)d3A@i4qmCX=7*_sddoFT961SzlCGwqsolSW+T zUB!4TAbdghk5~tWM<(zLnz%xDUrzN-io?dW<|ceuENZ;KLu^ z|Fh!N0cMGmLVx@AiTdpu<$tSq`nd`|4>WUU2Os5!|l)sD5ub8!tB3OfFe#6 z>i>UiJ6n);{i>e1z=Ir_O+UW;5C8 z6>iGVz=RzdNX5{6TPAx3{` zMDrOLa~-~D{uL4Zldeht2HZfa$K6SSEP!c48kMYtJX>B@+8=KZ4aIUr?rharprnB+ zn_~$Bs%^55vXIYsiz1bkH8Wa7r+P!adm)z)J*|;b^VoXw_a(dP;=7q!1q=6d#ux(p zeqCTycF98SSw2fer%j8R-CRybtNW`v)a-ymZ;@`D69e;aeg%Kt!f8!>=K2)9xv}Mz zzjv;=mOLr2WCskeMY&Xo?D;*k-F&sWnYf+Hk#nqjch-XatXkt1HpuNI zifL2CtwL4>r&-leG{s%BT1zUuVvbeWI(vCCF$~vkSQOW;-wA=PMz41q7q}O&-X)s% zEOV{tpxp06EtRjy-Vw3H?g9u6S-OVe>FBNdi@g~?n&u;M=q#ChtJt6EF56Gk+s^Jm z6%f*VO@)91FLgSF>ndwzu^b4MCc1VRzq&bd#rR-lF)RalY3WYn2e23dpT$dNKp@%{ zMZgrCt$`zglWSG;rrFF4eWi}>71$C*8Ih49!X?I1|HMogV^|g+mZJ@@*Gq>XG zl*q9&Fi%1;%m1=yvSTRZ+IhX_nlY#*K6ggHC6RA3279ppt%jydV>wAp&$vSSsC-4l zBV4s&N_v7ISBx2hIwWw6D_|XZtTro2A8QvVVjhw7motb zd`dz6!mMV+tGtNbFvZq{Ik_{KT9aNsup+`3UOzNgmdZVYtlY;K@elUkgEq-?U0xA< zP2$|<2;}}g&iNt0_~E_AGce=R|Chje!&trLr}tpYj^=YB=fWB{A3nb0A1^>oN4aE% z>~zX${8JR_=^I~yXOSsonfM0|horJlqUhh5U$^8|l1kn8^pyJ3KKoG(kasvA1Z?jD zMY0waa52PVd!x28a^VBAEmo0)(#yhDg)-NaK4yhmJK2I!Lrv4jB~G$cn^tONLL~zt z6zsO~D!JKIT9FWYcEYTqXeX;$%q2<8rfNZp0M=m=YVMF9{DUB$jOQzO%w6rFN1n}B zkD+%60UunNte?0P-UR)3t33QMDEI@i+!3ka4uqu+y$_~2D|Ml@Y{%osJZE|lInM8N zWp=x@&d7yOlvS2J(sv0rGa<&uWCx{?uj&5dD0u{4(~7iG);A4CR1~UFbDjID6}uQI zQ;mtaMl=Tj{5<&CW1uJkF=3${&yKm&`NFy5(~}PZ-9$;H)G(V=M!Xl$ueR6;HdKlU z_`7l8#^+x>3oM^JdSBVL7Itt0;P!Dsm~nOlBCIId)_iMUwY4I5aMe;G5pI-D4MHj- z-_QyYk}0w(iix^MvdCiiWVx~+BLr(A_vjeUY((!we-F6mH{sTpUtrGHh-;JW@Jn8D zBai8;MANoJq>-^oJ;N?QDtCxnR&u{#u(y6h(b-mh5ByXjSA9X8*j2&rvHsb6$Dgl%UmP%Uh)aPgd>wslSai& zD>0px=Y%~U2nrJYGOijcPYbqpP&5eIN;tSU*Q4KE|2x>KJl;P%yj}`WdvvW)=MM|j z%ZhB$*zQF+cA3snZOMQ{lNUS6>E|bE8WFd4@ina_ZmX$lp?L`&+dVuk7~4%bu1X%n zDzr@=+&xYhGqPkqp;uV-O>vzvejd3?{RGJG=(-Bbd4MJIjv8)`Hb2{Sp;G=j1Sgv4 zd>DVL@i~(GuW-yB#1T#TFR9b}C3UF(TdAXBY7201_}>M+Y|S$-^aG5~$qNw0ID`?g zKSD2r*fPj23^@YT<{M0sA*XP_j4)j`CyKfXe>rVzya%p9@KKm8es{kYb0QP@7T#uaTK!lA`8jJ)lqt2mH{lQ+(TZn_l8dOh4noORQ<4v)DRiOCtp!uN?_bGo$bO z_)FpO{Q*%rkGJxO^$P_?s9|GogBWhRzG!e(EM0i->&#s`M{;9x-}0WAv-C?{FRmQ( zj<$gs60(Xgrj^u|(K$EYyb@jw$e?>T6QEsZ>H@izLd9l?IjLe0lrak_%7o*3!-kn^ z>L)=|YycVSRlLRE;z@D9pszGUH&>!bL}Dh%ANLD!@YV_Z*_kI?Y*M=o&!U2lE5~p4 zID>dlP7~MHP&-6mQtAeuHM+8Jbc*3tJE50S?B&)txWREGNvncT(LYMWG%no-j65YFuk4Lx(2l=fwNl(-L+B5V|qrw?^VHS|7y$SctTL zwdwKupm2R7w=ACoN;tg3zE-$tAwppzM2^D#imNuAZY#7FdgZhGTB85b?1$AM-L~4u zIg%*0ajsisgQ`bQ6hWuaHJtpIt)sAcB!7v5zG?#dDU|xm zlG~t43^P^%ktCUHzz1jQ#Lo1TESM$>Uf(^nVJL&7Z>-n@CQgvwd>}b zZfHNrJ$}t`=p+=-{iVv8+J$IpEdX<;7e{R&iKGy`iq#5nUd%frnk0qbdR(Sx41*M(Mm;gvED`_w+UF;wk$X3_yY-m;3!yyj83PB z>YVCGu3UO?3_VZ?HX35cK4K$fAj!`12y-E`P-ZV8`;_>>dyi|i07OXC%C1x`>^*~) z{H_Wu7Wl3qqkkYx%>&s8-hkK!d%TV?v%>C%Q@K;P5=P~~lrOUl&(>Eou88^vg*S^V z%Mx6tA%IuTZRtu(1V*WRW9+MX(5WEEg3Yx**O5a8zaS|^csOPbHs2q4lel`8q7mmp zQw7&p;jw2;i6SM3cG#w7`(-8-GmT87SK)O0(a{eq86$mx3SN|X*6VF^t8Eg=9@XS%>Pa~R*U zP3qWNR)C8hcEqx(72Tog7CPdWWm$UD5es8oI)wiTOeq>8|A+{YwzwYnHQm#ZdFcC2 zerjIpt7LIDZb5I{4}X!8SRxG~uchILEcvOSR?nUsZE90z_HnUe?~L;}be`^{OB-p0 zRt3&%ZS(Y=_YCw!JJ4Qf>GI9sUJM=r6g}i#+PQ`*6)Mi$_;rucxMG`JOJ1#5iVn zW}*ygYLkLhKW85WO^;?n;HHbO83tSq`@jjVTn;Bkl*hJkl0k?yZ*QlT70Swp%=V}1 zRT=}&)kJcac8me5zOPz2u2VPKFchXHyOo7*MCQ^szl>@(yIWIT3pd%SH{VkXf=&Ir zn1o*O4a_!t+s3V+4Gcc&!Fy#o$rQFGwACauQpy&J7HKcF1?v({Zp4b4BmNa#M zA>&t7>S$G! zQaa3>JwcErS)$CD?PI+3IO0=0ctbj}zCFA)u#$Cqv@+pTbzTT<3Js;Cn57d8c;0fr z(g6pjsL(0;0eJ$nGFrZ%wJaYGHf-Rx`rdy#@tDoymRYGdZ(tOc*a7`}smeqAtZXur z+xt4qjHf7sTLrfOd)fhm1(FU|qqby+^9M)eUVI2jloj?cgy@4Gr#~4vyBt7A6qP2# z{{f6O%1xQJfBC>#;hdOaODnm|B$VT{F}Ac@ID>@b>=#OTq2v%wk_=T`@pdp~m^&J23||YL@BmBD z&bNRPCgM$Gh|&y;;N!{p{2(BJUOD988`(yfr4e}sHcV7JCFClyC9AgOB*ZF|f66;t zRg54GUwW?6GRqIPw>3%X6JxP%vX0@)8=84VTN{n=NgcRMn?(7hQA)byfwE0$D|T~H zKDuS@f=+We)ESHQe@B&JY~-6PD~wb85V()$RceX#ZU@q*W5`BspRG-qkz7)z9E)e;N! zmbNo&{`TP9)Ma=k8=c}kD4IxA&#!sd%0sC0mUh$%nWJkmemE?O5z7t|6&F|U2jiyI zL%^Xgd(sh?&uceRpDd<`oG3)Iv+Z>-C(<#sAI#vG@LZs7UnoDDkLK$wNAY)QHCjAN zG+RJj7Py|)!%~!3Id|& zT?UqII?;Yfo7({OZcH4)Z|a2Y=vKi; zO*tVcZ};}_IKtT2>K!A<)KjZ;He3n7SQJz;4(ilPwa_I`v#ZzOVoo@$X6@qmeF@pu zNIq^U88Da8b}||gqlWQ^@8uN1;g7hgy{3s!ysTAaznKEdQ_~qIrDg`dt4xvK#|+-( zNsDOORxq)YdC$P4 ztvNwJ!N{4Qr>YPwKv4{`a#22bbv<5wF_Mk?QvS_ct-5`Xl1&{P z&(!#vFNZ~4!b2NWvPp}3D5cdxry0|h<7#IKJSaYrVm2Ven&YseTV;8M8x5ln-yx#jnCEQmCG9kM~j`$WLF1EE(3dhc28_er< zH_p{k!%;=IJ16_%4y%;&s=g9KM5!$G9TK z{2lt38R{dZVaKd*MgN1bcMOj-TDL{h>Dcbrwry8z+qTV$)3MR9?WAMd9ox3k$<4ZZ zpS920_uO^%_k2~)_oL>Is+x1W?|k1e$4HhC;4+R1L@`lzhhFa%}#P)srb zIwVwvG)4#9Bgw@VNuIH40xUbFzZF{`vh@Yr6IUIo`huG=*G67;k`;lmqv-A1OmTf|8az^EJx(mCOU}o~8iSvI_Fx9vNDIMQ4JQ^3e_fZ7K0f zqopQot~hN|blSm6w%H|+ZEXc$lhK!JiE7PC%1%v&GG`QlGROTRoDDmYEfUc&aDcfs z>O4w`wjCaH6-h%reCQ;G_%2o0#zXR0}c&EJQfAss)=XQE$32&Qi%q%htHtRQJo z`!@DVUct;bZfMX~3e{WBE&O5@%bOM}=jJI4&N(49?vF&eXhS*qmEFFy1N-ej^n{aK0~fkMYb>XkkqfNaa(ioXkQVw&Rw3ZagH`;4DHj7 z_0oGn8aV?e()o?qou(=s`In(@*2uG7Z00@ztu#yiw*vp#paPyTAbEbJNF`rz|38F! zaZ6JhlYfEwWR)%Xc?GnODfTa&lOaSgv7SJgju=G8D(fF^^(mcs_7+&pI>}w7NJT zFd;|`9e~-Vfg-KhTOWiDUJm}P?g{S5E*`UfYVYjwiSEcq3|Jtnwb|{gY zMRp#%agqrM(WMQyHP`l`H^xYogv@5+HwGyChqGskJoG!mGY!l>6tzyYIX?0P_Lzfdy2$YQLI_=vb` zyE{SSj7cJ+uPNa;UEUTays*v>&(j?5{lzLgZ53{;l@_rZS8Vb4c?Z;fY-UWwYteq? zO3T(L?~uiBg~$Gu;WUIxY$i+eHl#m#=vy56{cnF0q*n&^pbbb@InS!YjO43R0>MnPo|~xW1g24pQ-Am+20W+Hri4Owv5Z1P zSq9{n(fjGrQ?^|rmY9_^%u3PM&E(l7`@t?jZb>a9bHEg%rz`Cw_nf_fvhC^io<6PdV-I*fBP< z_j~ov0gn)Lo4Xi6sVJDpADEFl`veK_n;c}LqDZSG0AmD1tnh)-(15eKL!ECPfoQsY z-lOo|WH*h3%maIMaq&MtLH~6w7j_jfdP9PMRDM+;+5cy0%YSrT|79{4slBMS0S&qfNiCIc%0q8Pc463QCbSc>Dp8?+Z$W|3QF7HMO< zkM2I=wr9Q=V%O#=K+x&9)0$@!meDL!p-6bOaqm7XxzUwS*IUTwZy`rbYHf1Z2? zao^Lz4Rb6*4W=Aa1WrcvONZ+F1d^quQrq*TsCj6{7{h?(xhU@xXh~4$WQz`FV{;siBmoJ zwyp4xQdQnlr`w4tPB1MxTk7E_ES_heHmbEhsyJJT!8y`A0k%3;0ornzktaC8W?L}9 zcAbcUVC!Q6W zqQCz*VxbG&q8era>e8m~{lJ!)l46UH*8m+eYNB=U;6PL%RmyTmExm*!UWaxWMLYaM zV-}~RazLugJBK{;9kbgk zwKBw;Z{_7HRX+`_fQ}PPDp<~#D4OA_2CKBj6dGf`#X+$xPO;)R8 zAvX$V)T1(2c&iN_E!GQ5VP;EyTO=y5SQD)nKgo8Fb%!zm%Q03nHvGZ8l=;)j1z(tf zzdO5QSd0myMorl^96l>A8%F6b-mL00H3 zlT9-k3Y$y~U0-%;GxVxgRPM-Ot-S^UB z39cVqH}Q`y5O09770>ZKbf3N;C#{H2XPgm`t}@$(c*>krdvLehe$lzdX}y|w5=_|r z@~&C^l|7wwI&_)(w35Lr9?HX@ISY>XKU~lh7H%|s>>qHEaD9wOWGTgW zVNDhOKJSpcb-wMlx%~Tt*O<#8MKd{a#)q^B>TA+)@M;U^;4kfYt`Wa7x#LOdB`S`I zaCwUdUR-clalul$NYE{oJTu^dTf5|HehKAoj2aRbd6TMSGt4fxAP?azO9ijbU5Vu2U ziQzv%KK2^beLxqZG(_B;dodz-!Li;P1S4f{*HIIWh_Do|t57_0iEW#&Zk0=9te4l$ z-z|?d5~jR;4rV-mIGQHtKz9`g_eg$?O;ufD)apQc(Oc3XS=@cj& z|MP^pJ06lt9L(jD(TGSG=xNj;TylSeMCcK8zC2Gz(i$kjS{p`n?SSOr5!S;nf0qoQ z2M-arCxmo}{x=;=CHE&6ISaKB7u5HrC3-(X`_cfHciDH>V>D(E2zoxQJs-AP(=>&St7Y1GLdM0NXvs{I+@0!F2zP zpqb&Zo>2xtdn&|8?ZV}tGAj%k6_!h}lx6%BtCxJY)wgheh+T{MKjX(Vw%#=H?%_XQrDnS@oF^3UwdPs#GD z__?7;cL{b_k0f!tS|PL#@W-9hq{*662|ro)4SUK&_lWiGqRkh)S@+;bSH1~W5j?xO zq?r+;XtPmhKnfQZE?0MGEdng7={q;=OsA)?TNl}${yXBohI8I9Pa@kdjgLRDARt`- zvv96#X>Moe;_77jFA+Uk?Luiy4T*1wooRWO<=Y&25kRVxi2xz55e*8nBW?!i7p5d& zjkKONx|FUh0dBNWex}6I9EG`&#W#RorKBT)kvau9BVb;m)?q%q*`fZp_4$7DBLI2< z6|<*+-6sScSc8R6@x^-t_(V5x{y`1jL+*#@=YY$EMynmHomAw3lgH{ZT{iU?y2k5& zf)ilmHTUSfP7pGqWTu2G;#}Z-+@*vK7YV#k?WZ-5-VH2Ymat+X(O!%$N_JhT&a^6a zXkVSBon)WT3{+FD8f(h1f`NnBrxtIrI#x5AkIIi`FCy0dlcA#u?xlvfFT$l9|KLhz`=9&B2&jVWbTQPq(yCS2yda*)maXldlT_QGbBpGjI;d#Y* z=-hV_C9OR!dx3+LE@eOCqH)b}9H^O0gIi0Kx!>}F)}F0?&U>+^(w}cRR-@bQUA8lh@6yp9pGdb@6kc>&$*rhF zH@IMhCW@L=qRV&2VZQKya#6mg=~Yz9rp@BQ(b;dE$a*yzSz|wale;eNZC9;rq)Zmr zzNK6`56v@wumu!r(5WeJr$dsh+l5B)JE0Poqb3t$2Pjso!AD7>MYorgj$>cl2p%Iv z-#JQS3d{A;t*1CZ=1O7?Y;Zo3S#ZXEAzI+aopF4Hvg%^eH3>DGDl~UArxl7HXdB%! z%B7)BpDz#qoMt53arPlH1gbZ{Im01h9%5l&*26{7S|WQwOOHUyeEfv|am=0AdASc0 zt!L&9eyQVQ55C*zfapzm3<~Zi$(f93b>7MR`=WRtlb3j>M%%XE6q3>qHM+BBKb35Uudd_Kvr1y^q})YOG_t-b3^8=<;`I#N{ zU3Pxiw->Uqw7g8lGi%;8g~W%2LckGNRqM?gysoF0*#n@O-6=@UKO*GLD(5_?X4WK_ zd&RdtiK% zefYtjEnu*j#kOWdEQWp65YXBb9mte6?9oSBNYfZA7lJu$j5(WxIlA@Jpq}_4H}~K- zycBQ5apwHdB?93RMA|U>noxUf_yY~{YOwpGz#AW=0cElZ$lICes9~0i8&aJdM6r3? z^n0>;A6jSv=}lwJ+o8G*oMD`J5Uwy*4~eco8+$kto~~O6Cn}lcNi#!%#9DpOP&%G? z#82>l#jvxL6%CEA?RDuFj{W-%gtF<^VJ90kQzz#yc|BEtsE~J4{-k(N6?4c-7Og*@{JpO8xN`I-~lC zszjD+*zXS*eM|ZaVY1|IuzY}5cpi$ER0oX&g9`>670&u~K8W@UkW5)$|T3_DA-QY*qLA5o4aiF%Ru) zAj)6SbU(}YF})Pucdm*0f$1ocDVp~=?t+xC(uyourm>ZWr;&5wH$=h$$$5!v7qe+g z0ZW7*oJ{&e^j4oR^e2D67~!yo>cQB>@t^;VuUv-&F5LQcLN5aS|5gtAKhD?xn5tD8 zUkBU1=*#xZEcVQv1}IQSpeUfphLYjG@J_@@dfGG}M^h%`A-!r{em-qa>u*z?NAKpH z{mNGx9k4yP?-T*1&yj%@-zj_8#55vn#%jL|Dok7DfM=$yLO`6*PisFPz5x4e@|Blj zf(wW)bU|o4`XRdG4!x#0fB2zZ0J3M|mCfidW99J*~#FrS&UmvyJ_J+8G z{spu2TqknKkM;UJEhyW`si&v&+e8l=1jP5Wh&R!Xzrq&@hVCGU+d^$mL;~#NQ~iB^ z!_RrKdyGAF9&@huMnQ7=o=l$u154m}QG0HP&G>WB51vM@vjS@hAi+pFG_Q2NdknXjK9=0tZG9ycLOBi>^ui!aYt+KVoPNgiJM|;m!V{W+D+^Nkb z&9vGFcdQs!qqJT%u&qBeQu|#{z37^M6AKO#XtCau{h+3CiQB+VAnoX+OpUFH(PWH# z8!g>XxNcEdO@th^V#tvZo>*1Nwu;=co+P43bIVL;BgKj58sUo5x^7cb(U73)Dmt4S zPI0DXOJOy*YC{1K7uLXySe|kb>M}rPAfTDi8IJ+t>?x*Z%{tpi4DXuKzBop z#T36{TeCA4zJH*Lz8xSAwe02HZQ@$XAElh8Pg@b!W+NpAbI?#`wX2bIt!l_#{L`M+ ztVb*ZPFFtaYBs;;CQfBM6$UOY3ce!?qxvaJ27X0OWI1PGycf9nqVIOgsTzl!ImbQg zJeqYBnNVi8rkVG>SR+bKTPcs`**_^4(p^gqp|wQ%Z5p*M(Qv4&lg!3l8qJa67y3MM zS?!I&19o$Rl68VQ9i3?_Po;*HD6^>?i&dju8?R~_0Wa$Y_MnI!O?Imo^r7bvg_vR+ z-yXrZYc@+5^F~c5L(DvBs1R56h!X$#>0-8=QNzFm=ww|MuA<(^#A)S~BiSeHpFel= z?O>x+C&9C#**@CmoNCi!N#j8x;IgsuD0bDfch~cF;=?k<)$#T?n1Lmbsn$wu+!n!cT9vf1$;E`Uu^MCeUJ5}lG$lb zu`5o0M0u70L;H<$)%KC(x-X3@1JsQfoMJ#_Q;Pv7RGQj3QPd3C#%&YSv!0L#2Do9D z1Gek>2!fqq^3@(r&R2zB5$Cy>9)kn&2l)*KSRRX_kla|3qsYTDJ~~N}fy3>N?0C6R z#l@n(MUwa>?A}+9X8z6xLyTQiOAT&Vq-Mtmhu)ARHu0m!h!x_f(z#}ZC^xkws#Qyc zaR{iNr06u|=*yfBT9fMyPm8@X$k_Cmg^m)WS;C+qq!>DlGRVHebhF>!{5ITe@tE(? zCie^5%6x|7x86nEtrys}Ma>;5g7`4moqmpr=#E?$F3t(;PJib4Fx<^;brEoe6X7Lk z=^&r_n8|iXBcNHKpfwzEisWC|h4mO7=)Si9ewDEtkPPEWFn0tKMo`E=AFHuZ%@~cv zEVVagn2{2F58trD&tp26)^*U!3!YntKcSp|=YlqxU-y!b3~VHh53a~M!K0<x^0(e4U#V*#;8sANVE28yS==@)CH~C z9t02XY5L+yr`O=M0yU1nqMlL2bP40OF)Jm$fPQiX5KkP@%pB&M16vwa0u+1JWsV$% zt(V{o)=t

o}piiJc%ZY)P@aTt5JfBS?i*teOk)kkb{Amv1RYFbv6epKeVHJPMxiK zoFWe-)N3U2Jwuf}WUw2~*j`kv+{C$r`qv4O5OUQFlsya!sR`{;s>~z_?Q!*R&Uyz|!2XzczsBf_hNF~bh)uuNXC*t z6dl#mO4F5~7#d2>H*IR-bL3J%AhtCVMVzJBDqXd|UV5_6LNzLm8=}dI-mIcvrZTpF z^z_-Ld3p%VM(F2I9d+;|$xjBqf~ix#>VaTyRcFP&gk}m+glriraw~a<*t122)h2EP z7Jt4XU-GL|%VS=Oi2;S#kEy#9@6b(GRO$ooU+X*^?z=`cryEc0A2 zrp4=O!f8!xrV`>$6K|;MS_NkHzyXA67CRYSpSNi7CyINJwg4ee)j-Se5s-qYE&a-mLSAxUrWGn>x}akksClCkyd8EyFn$=)WH_&z$H_suMTKmTT*6xW%G)fHqAdrq(`PI5e-R^OHide481 z7|YV>=Q;{@q4-4k?5ZrQIJTUT@o}kZ^oI+4`fp+tD=)LFk6&B2#V_(0{l6_gDO=h) z*qHt|R=bL}^1LA0N3$$+NaMN?+V5Y&b4t`BvXP~~csT=D`WRm^SF=%M66G?+uJ?ll zhSalXcTIbV;LLzCa97eT5#?(;_4`k0Yl8eI;>J;^Yo1OHh5SyF*1WJRTIsMW6UlW8Q^Qz z)b!>W7CO4{#VLkAm^*T$K~@e&unk=*Gn!ATnC`8ATtE0iSoV)P3)!yvlqm6TU*HvUk7E7l+Q~4&hakI}p=BX$!EK3iM2Pj6;yHxGD$tqO&oY{=8&B75(5QcQrk5Mk z-6gOCAbvZhcs8H-KcVv76-%s{bNIUMeF$^x@@zM6ra&utc)4QfP} zo#1M2lYVIMwV|3G=YkL~Qi*Vz-!~^NU^Pv%>D@r#c#X_ur0kFzoV<}$R&o7R_l?CU zHPUZgIbQH*G&;IwC3Cb+h;~hyT22S`rLk-pBsKnSd?Y|-R71Tka2T%hhdYzS#U?l~ zqPrxALX2&;CGW1HZbt*-f{`lbRFzyQ$~(4`j=D)fzs#K9shKOEQUudlT%b;0t<{mq!qB30CB{GSb9<>nT8!g9FkVBXT1P^sV*sFq?3vp z-N%*cICLBD5K2bWZ)^AFq9Q|*czdi&#el!j(;j@wipDYqaC`j9pz5PhasDy&pum3w3*6%tPJ<`Nj?$BkK;k2C*^4~QCx z{JfN4&QORv{qM|uvA+ph#PazMYivUH!a`osLbl%g< zNBr)0NBRtY-><)wJCfdL!cj1e_v?V(J!j1dqowXWgGOPe?1meqhcS2_!W2~S`V6it zajMB|b9WsYhK8ZYC$UvpwGtuK#}uPs>UtX4V1)t=mtd{CtXCem0>f9n+NeJ`TXtI? zf|PxUWk0<&=`i&g6cRp+OVsLk$K7@0?An~>S21Q}N^IZe(2>Morkx|e15fUE=pd4G z?J#qm%B_lp!BVrak#Y6vY&7jSD&{(ERd6Efjj>}QceLI&VS(?%DHL%y3M(!dvcr!S z_Wdmr#C6nw7W#DWo^=$?H*$8+9XcTBflD3duS^orOFRU}#MKlRzVSK$LqBVg1l<5{ zg&mIHT5|Ln-AT$KV2}>Oef}41VBNO|FqBBMrvR{wlh61w;*Ah8USrj&v#2i53 zK{J&$zpG?nLF6WSW-Ivoy06cqWk>OEs~c!?#GGj|v%EdJ^#w;1RBrlhJopxu-%(F4 z(Z)g4Q|{UAzYJxEZP$_0I7fWTY`@5A2f{4e)U6eJXvLVm1;%(d-1K?Bj8UlIpIm&R z-nj9%^I|1_ZIm#P#PPM4fys3b$wsji6xj{G+$)}cwljC)2F3@+B!um|+ZG5(Q9Nz6 zsj8aLH}sNQH<6y@5;#z?gbDMV9NU!44fzs&Gn3GmJrYQ zTLWSC*Qi{lMIn6oNrcQe6Aflwc1pz|mOl~jdI&@^kU)m1MLp&k%Td1C$4Dj`5h}6d z6|v`_!Y?!@&h$oz?`)0gQBL+r88WuA!Zw^BjFq=QRnRHgv(17;+r1Sgx@D_EJ3rHV zA;_C0U`+P~ZkLt$P$$8Z5aWfgn%s3j5v*IsAJZ##nl>#pU9NuUB}yv83g^M)1qiR( zDdf@S#R>m_4n-d$`UzE)*D-rQ3Zud%?#xpVzmDISJA)Z9ZNY%7>mQ4G19wi8qw5bG z5I>%!NAaF{Vr0cRKuFM{F84a#)&Ofjj)eaVys>eoPyHb*dv26w9=oUR6=Dg1Br$xC zE>t3F=@zEGmDUfUjetuE*TE9eARFV5jMkAc0F9+{!2B| zDTbBfnMcm;&1bdu1_To_7%v(E3k4JP`6ys`F>sxt7?BYewl5fLqokUByph3I9aK3~ z!T%TMU%{kiF9^Hh3q(%8UjJS@O64D#QOfR?F2)uTre6johA#I1sU2k-QwI}dfEGH< zHedhi5715f-O`RWlF)*3wZ@6%V2NPibOYNf0H1m;zwFX!d(Y>HKc|H!fXa)$ot{@% zAVmkJ+GMH-Y3RetI8q~>F}bu|s*wNQ6&F}g=pk*#2O>^s1AGZN zSj*1w@BfXEtMw(ErQ2k+`23ZN)PLn7|DL6#;^Zk}`1Q?&ZS0M$|3f#6l<7apa>@TI zC234bNm3IP18)mgniIAV`i)kuAjG5Q5zu?Ysw>U7!8wX?BXF||*B6Z#JN<>B4SC8E zRK`5%HedP35zkhejo-)XBc32ajd8d!Q>@VbF6n`>MvoHQca7LRWVNJw&Pa;Wb4#@8 zd`i)}u^9$L8-KI--qKdR4Tp-b^@LoHMaI8C!?qY8jgRs4n+|i4Ywb?!pD^8}#C4ju zvvN8cO_Pxl@B8dEbEwpHY;#F9o8Fep80x3TiE@#Qok;8Ssjib1t1TrUx-0~vg(*?1 zx|7V-QQ_zVh8MZSK!M5i>^;<@F2&*8-n;#lZNAp=rc?CTG8PW9FP&w332{a{H#$lP4OLoX?W27sgioB4f0h#d#2n z@LnSo?eK%GqW}0opmvmztO)Wn8!2NUQCT5C#?m9u6&{CD>_(}dyqWd4a0Jl?9SwXz zt87d0@QJbHUu^sTBPQIoV5|fN3aCPBnF$`@4Fl#?}P1X^@u`Cz`|K5jz1tngrG;ZKL*#Q`7cKK|TAlVbYF&P}-8u z-&2wUxI5+5@(6FEjS{pEr<+Js4N6PX3yfoV=a zL`;C^a3=$N8&t>_E5R{av66Bw9k!#k{tHL`v6O@f6yN;5mXiG!;gRLvCMExerSzZm z?Jv3`su0pgGaVhDTn}+FHMM}1O_W0rj3^W$D>eXzA&z{gyz zW7?2E3>>KP6ld6u9D+w-fd{3I7m?CmP~AYc;5TD8CRt9XV?0tVtzQlg(d}gUsJ0hC z;55AFH@u>nch6((kLu~kq+-i#aw??F7|mM9;P$$a0`=rEULcu=+`4Xkt6=rXnx^>1 zY~+BF;Sy}eaZO^*z+3HnaB1%q_-4fcmCOj%b`}{fwStlN{M*{Dbq2Z9I%>ppM52Dr zc@dFn8l^^eRykn?YY4@I5f1-!hxcI(?j$l#?BX6X($PsDFkPk`62^<~al_lOwIWM4_aVvN=R#=dnSca$9=s7( zdhQZzI0RTNG1HuMJtK|F0TA2 zjG1NWupW_|B_Eo$o4rc&n&%z2j7|Gsy}B@!n^^cnz8q z-H$nh=JfA(3Sn?@!#0h+C>66RjO7G;NiL8){MnD4aZdZ7>w#09+@&7FB)js|5%c@T zm?CaIgx$|pzVL@LvbZ_m%)~UBP3TWRom8t(3(NYzz9ol5QWZ^!0LkBcw;-8-45pVx?9y^ z!bn|pc0tP4m>sn=G>BkZxEF<|Kb@|KYfA@BcyW>nBKbhkJ%S9$BzWV}KGuB3vS++m zN+t+dnT3IYkb&o$)E&ea=)0_^SEhK(l*9MUuaw>Svh66#`*pC%eG{@47x3fIunE<< zZYZ>4c4TH?W}>zkmri5Y;b)YJR=Tw@6icP~a?i|^14F+!5UQUXI0=Ubr;XXn?803; z8F&FYm4rRN?;@@aR?hu6O5!A<^T!B&uglE-Fld=-IpvMM#lZt9sIXopKHzbw(hhzv_R+)@HwLNd9DaYyEwu==h<5H=l zx03vbWA!_`W=Ukx3q4Crm4l94(P{#gU8m{C>PhnoZ9hPi z*qRPBM%Q9TSLKHMBv@qyGvH7vm8a#Rae7ET)-(_Aq>3Rj{GcbR#L4RV@c>|eK@fh2 zuF)zi)GvVMnqBnQB`&SGg=ue92zo6_HEEQp193=bV}`9&;?^2SuyM`(Z7pU?Cja1* z$lhze;9lWP32`m%uv{Sht(xdvb#NL2GnR3w$?| zh1qK+=b0jYqxkuZOA9C4amT=>`YlWG;=UbQ^Y|ghDC{phqfovWeVmYmSG)vS!Xs?1>={rx(lW@d{SG(#jJ9k zb&g|q!)+dw83=SgPCzI^oyfO&h@;D!vy3(pMQugB!^MkdMya+EmqtH-Y8)NIpTnN@ z_h#VoVmuFh?=nD07AG41od?bP_? z*QW1)q3(#_ZzwFu$*|r^Sbkld7WFjX<3nh5ou?80bHK=lHf1|sBUWAvDmOyShn~2V zl>55K15-buzm*ohe`y!mha`4a+YxRn;>S%eXAD6M25zBQht!<|ma99KCzpxSy2H!L z2<}rGBd48$AGqdTlLpnC^}YBDI_{5#Xm!&9@Anw=)~HSO*v(C;U0jpSu@Q+c0*Ul@ zurKHbf%<>rh&LyiYR)_*C&Y9sjh$qeiL}rf)o97 zETc6*3k5ZJh}e;5p{|TdnK`@sJp)#t=O^=&45W}dea5`A(-qg#)Wp%!8zhLz4kP3n z7pLF|7ou&6>k09%7=>CA4A?%=un_3UkvZcKz|+T{HsyUZBL79FwTG08b=G93z}iQY zfj|rK-x7U~zvS(qDfp-@dfMti^;0y1@&((grit)i8zIZl)>sr*BBued|R z=-#8t%{7%><<+FA(t(Zp0xtpJgQqX=&ry zX2bNuV;&fvj#NzjEtE(X98pn`QU(5fN-CbGTbSM7pxnW?g|KSB-CAXFRfeMYypf=c zxqK4mkR1&JL%lUMG0^qX93>~q44@iyHullFO=rppQ^GLBI0PZZ_*Lq-X)wAS)GHP& z4Ur0;Vkov(exu3q+P;GW!C^SQ-8_UhctG3XmC|Ydum842ylLmk7bU6ii(2_Vj{WLR zmj9)~tZFS!qWa}mnuK8nd0bDs9i)1#2D3)*p=+R68g*&+gd*MJ>bln`Gj5R1K2LQ{ zp5Xzw4^AD>CKlZz!xkuwAWxEIWwLs26!%ZK;WC$#4`Xf}Pj&V@$~yAg9QQmr>=yWx z65VsrE0W7Vn5RkxW!;d&W96yHBW%#C zEWwSBa(Z2oWqq@?pE(9yH931#&R<~aaOqVSXp-BM7PZulMQ!#UN$Kh{$%;>)Ai0c%#Pp`IKu1ES zRK|hX#?LUWm;8``bwXW(kA*8fpG|>mH045hj@S6C2DUh6j$9>c z;YyijIItR-%1(Fr3Wy2YUu@0V6w_p@jhZ}R&ME|<+wk`Os7kwVJoppHR2R2kH}ssd9&Y>s)XYqj>P;V^6G*I;Ou1? zQsFU*zF}PXZr!A9;VfTq!sn^Gph(3AIpBU29Dr#+J+G6PdBnCs9w7-tyBlyw&}krx z?Q%#)dWKrc!uE7ZlDI@PJhqPnC0AVn zk38^LWuBlun7Sa1-X$V%c2lAyJO!z{)i<+3l6~i~=Xf!xkM#Q9DPwY)maE;EnMzZ`5N;Kl%BX3>8VMdN% z&MWX^g+`GRan-?w6@m-;zfY@?bctewOA%5RAlZ_B*#coFh?2aK?w8vOvoq@7$x7lL zXfZgpkg5V%YCHCIl2XgE^=^{VsHJ7Zm}Bo;NKGR2(LEHatqtupw*306#J7R%NPD==f%g=9I5`j277x}Eck8a-vQ}qOF$-ps_TOLdEc||W zTx|&7weF9>RvV&?5KX1FlI3a>T?IdUXU#&K{lyP@IgCGLILbxKMPY(79?6ao#d3a& z@!*)U9mU3R5p#(eaWxe?{tiuTfSO|$xTnlpI?a0%J?bGh6C7l(`<(Wy-xWAgHodU` z&uThl>#85{AYJPR{$3M*XRlzp<>ezMnTu*cV~592>zjk#G)uO(uHs>L^noDs7ypca zm);eSdX0$YfSP|+%YnB}RMqyh!27f|@E7E*Ci3klG>iYw3&*Ux)@io?&=uc1ko}Wq z`y-&n-|N>K={*3tldvAgwV;y<8)4YBqU>0?lLL998)>6E@abn55p{O%K1cC?$#;T) z{G(X#6$t-%{rGzN|L(3_oJ>vs+s2BOe?>s?3tR=iz?JU*e~^%ovx}3VvCEgQvYnj0 z$$uJBHmPabjo30i*doaL5NdK#jG{zl0OGAo!B+|CiLzG)Sv4dn|s1Yp(HTS$dpB}5aJmgW7X4U zy*gO0Hp6ECbRfRicohII0^E_P?c69=kg}yc$qC#q@H#6&$y^s8NSGjZaL7WZnA*c6 zMq`4ZY~4_y#auPfDzZVUGg6YOBc$+4T2`(^1={OaFWc5Kth9Mc zbaJBOHoQlXEm3oVp$T3TONzVZFsU#_3qa36p}vu)=ar)^SFDVJYnZPh=KSglx}nx& zQiX%2W<6vZXt-EzOIo>`qF67$8VTLmm0fEMjF-eXbCYFQkt))gwO|rTjC33(Z_(7` zxQw%!t4w=DJ76+x?b(VJSue>z7qPba5u+u?kV1u}P?exZf6S)5Tg+%+pW$j|*k8*s z8TVdiSZx}Yur8sx3*{{xJ=ci6fE$5Fsy3R>wc~bHl%QyOBy2QX?!ZU zv;UOo)iI4=zE*EgJ%$36btbyfU8Qd7dHzVk*xJF{dOwLWN+7ifc8Sl46V_?6$vWvZ zF2;8Dn3LSL2pz+y`8sv$aCP6J>@-2;9GiU=ekqP40*Mu0_R;LijJJX(cgvGu&S}kN zMP@ve1n!aVOQV|-DCUTFrl=!skG5oz*pp0oRZAm;srdURd?1VbE!uz?8u?JsM@ml- zLJPC{96(mH#)gzRw#(V(cKLK8nMKMI1V+c^aLc%ddYuG?v)()1gMVrArzwm_^VK3^ zR_O2Az&*|gN-xhf{Pq{CmCT5!0U6p1ZL4@4Po+h+U$%ciV=$t&l&FetKPFg4QGL2aBWx-gU3O>pSlg zS?LVJYyB2X%8QZT9Jql*x>0`GiF&*2|LhcbBwqVg{yn$uZ&tDU$sxX8zKO#y90SMb z8*a<`p$GV$>}^Q!i&VrX$QB2^X$#5wSYE^><@wBYAd8Uki(1A&#akR$mouNm{RP<#WJX=46(b_%7n?MgKIElvQ`wD~Eh6aauo) z+}C?p-wpUuRT6ExoyxFm`^h0J1evpdID=31-w=aU0XEjxW9ck>JnRTWKGBh|PtXy+ z(;xbucW)LnaY7m2{T=jq4~aiU$Gj%2UdEwm<#s8pmG=@x-Ip=X3`U_HE3u5yl08w! z;Y@q8!xzTdwW?~J&kwTocJ%)>@gwOb6H)mp`Xqi~6V1QDrhls7{1-B1tLZv_m3wqK zo{BB!XF&4|q^k(^E&0OCFo(CJKqkAUfwI%Ot&~QCn?heaxRni%hANb*-9Nk*P2#=mK%$2hwJvQ%6c6 z2QR$}w%AU`t3}JH4D`G974Z7(bb;4X%VHfWD~j1m{oX3YT+U+&F~rwO4;z$ULf42# z#U-rw?>x68d`@Z=ePyM2I~KYY8{<&gLRjcCK7qV{&CnaSxGEJG85pM9^;Bw33|QN# zP1uf!042Q>CY4btJZR;xQjZqw{=wM1htWVfS7ymSVft6e9LXA5=|0txr@hYOO_{@m z0jpsCCRmkpUA2vI{-grBBO1`!Fs!YOeJ$faker@|Z;b^c0T0I}3gF@!kp_U7sBgbR zQdd@+L@5Hh?#6rF%wv$}!L#9X7m z#Oh(QFXr)fP_j~votm+0-<8sy`lSeoy}?VPBf<(2v`C?FFaLF5WWSBqfsCms2qPie zx2}wc#3d-X5c-i}!D1haa{`z-+F2sV3C4(B4>|%ydM6mey2L`hh!gBq_b(5uXi;Ei z)`2UeWaZE1N9&+Yur#H$8=R`90gMn(SstKd!fx1CzlGA}R68LMX(eq;Zj%^6o9RE3 z-*3$#cfpd#t~G$s5DR#3;IN7`L62sl z?jp}1jw+d#_(j*>-;l&)PNv!&+kD{}R=$1z49k2{f1dMlA+;S4Pbo=Ig=#t#!F&`l-Udlin^@78K6&KSb%G&y+wIIg=X{N* zjvkaLe)r(i%RRBR|BP|b;`z#B@)^0bVtULHxTX_n)Xezo(-GF_X*ccA3Pt6MJf zJk*LMs*-uD-nI>K;Gy5k!}qK08gy>Y?mZOJ`votOc00VVEqTRGuS#3ku_|I+k%)W8ed^G z!Z6{r#v{RKIjJYSeQ9&wj9pD}Zm88Ud!$Mw@u_F?)cb=m>5C@49}%rz3pYue+D{dy z+eBzvG5i{F0KW77ymAHG`Vl{EK%S$Iiziy!i_Nyb569|*jm{_=)hT4r5gmUoJN^u0 z9!@FsxHjj+p>fZ*{DcKDr$j|Be}K}K-@Cx;sL-d7zM5(_w{ozn^^A`*V)1YQ->`G& zSc{J7_8)>rmlZ#^LV$mP;eRxX|GV4#+iK~5>vEO4m9vg2>gQCaEpyvs1*{1dt)#XT zSwf;pkia|=1Z|K+ynnBumY0mF?VL6lvkM+&E?Q+MRI+*%6dwdA4HSjGFh==_lDcL@ z(?U-5XB_{hBW;e=DZJwC`tep8_od8wC z49WX~aULT*>irsi!eDrC#Qx&Ow~D|qqc3j6bvS5utc2ns@8|Wmu)y2aJzPA5+|0i<^9b$a&5(i&r;xf@r^li!01669jkYonT8c)F^g;iu zE9|;^&{^!~2RdFOPwA=x!ScZSRYN)po0jZ-^>jIi4KZHKCMeH( z%Alk2RW|Az6^2WhAyhQ`49iY4r+M$y(cfzIwcF_z(g$X5P@Lmu*wv*`Cd$ddDCzZ8 z&f#L!8kKRE`3ke_rYv+=t&VkInG!r8+82?!7%Dfz?LV1RwcC1g#V;aR)iTo>9a~7r z=DFNgjfs9U$2FK-(SbpETEFRevi;Djh3eJhwnIl5GVJefdexj5yILdl>#UsON+{io zIwzra9z@$0!0$<>1mS3VDC2+GUyRd zt#bUva)RaJ)}3__b)jXfdBgzJIU=y!r%BLk>H)gs+t6@fZYKETsyFL=?IZd(J-x4_8D zBU8DtRzW)C#t?s?&e2tWf46Q4L%$(1;{A~qdLs>GHI;#l_>l+DG??&-nk5H@so#`` z;kFJAh%?w4lH0Q18il=a98JT0JboKxzGmvJy4mLjmyz@Mmg~9)?QtEXJPk=4_!qW~S=DmyRgiVTsggxEGb8N?uF23`y)#feNPaMbL^NNS&_;oebZoiGE^4BO0p={dthkl*WKKbZh z-}j&uZjoM+=ZVa3v?t9Q0pi zUpK)3y!#R4i6aXhzF^jFY4Y9RvaGkg-SmuFM{oBH5#-|YS;#GJE##2)mop2=aycdC z6r3{bsfktRBy~Spl;jVv_j&Klqo1b=1_PD~Tl8}8A_AY{gJ(}e)%98S*wWS0-zhlp z-Ji^ty~3S@pMCSdCy#@?zjt_D75)h{kiJs;9B6yY|b zW@$dOnwOQ|wvD{T{YBo$Tgd~S9`zdw>xU+I`ZYln6S$?^l?#lws*eLHI_f-T0&J@-|6P7C zWsS>v{vCXsO+1cpTTLz9J}rEoXcyqh{A`IE4m#5MM<28cljrxvx@RBpGP-Fo^{S|9 zF18O=HpA?wl~Xn~$SaLiiJy=T_>F7$6a=3KwItDSzrD#%lQD$=;cql{I&aS zYY_N_J$i@#!t%Pls59h8t;&`fR7oQIFOn~HR0Tp*71=^74%afU#hSh|vFHNJvi1OO zW}N$SRa_ODGlpSul@1RnU6rz7V)H>5rpjt%)aWLaYDGuQ3!@@h)esl{hh4tKFnQz# zeDDRWg9mT5k@FL%e~K(e*SZTL0Th%zz#vBTpNFu&eYXCw9a7c>Fi%i;=WSb>0WK=d zq2Uxl9bT0bT@ZwfWF)duj6jkMv&OF6l+wwYraz(Hj^OVEk+Jj1KEM4+yq$7ZrjY6Z z$3L3-v*t9lk@n~H9AHE$?UpVMw}?|;o0z6-s+Sf-NYgj9r( z?K5JN15WEHEv7f4Wx(*=hrrw_e8q%8{dZ4-70fhM6MqMNLfI9YJm$qLe!KW zalXyfix4G*?$!0ph_XXG%Rx3e^Ta}bsY%FGm;GU!y)_>G3KLQvfZeoR3F!3rB|GX_$f4;MdcCmZg1^eCY`y9yI&13?N#%5W94x7#Vj_031Wl?%;yu6B73r~ zw0q#`>IzzAM{qBNGPE2veW&9_bnq(uK#%{0DeFUhAyTdJ{4kH{1{NWu4Ma?V9y_c6 z1ZonT)D~ulCJ&`CM4|g?vX$7Ex3wxwWt7^vW5W=MLsc{FPx*%F^sryto2Yk}8ejQr z@Y`&J7}K~$=>d*%?3<|79>zraHIWIeb6oRK6kX)BisWv3`FS)j#QEyc%N<|8Pk7NwSj){uHCW@gf0 z*cvBk#X^c|AMVB?6PZJdCDaFPn1b%%^~hEBApcO3{M($|K)CYAA)jL!-3#9${sVkI z)BFMN!kOtv#-iRK`@b(18aQ|mivYL720;J%{|-9(yLbH?)Bn=Ds*F1#i=*&XVOqqp z#zpq}-T<$68WSSO3tKaAfCUJm0U_V}L>3A*#+eB)BgOc`4#F!8qSyMNf~qP})a7dI zmLC99sI7wV0Xue(YWo^zs+cgg*!|q*^S)~P`4%%>v;A!)7@F36*p)xoD1?DKXq9xr zm!SiAB_Jn=9is=~393Q9zZM_p0!knBsU`NO07xXneMGQgotHwYFxC(Y&XRp#uUX-I z@jgSX1K1*ysZ4P5K%*kd9%uj95cwugOTBPo3S$;a!1k`@xIMIc_&r*b&ThxcewhXH zrBbIIeM>9%L~Ljz``(}7BrMA>lv|7@W@j^sURq|&RLQhgWicvp%@qq`c9Vm))MYf) zXDomzAd)K|b_?kkEi)>6W?E|o`{WA-yHgqoA>3kN>n>Ae6bmH&BxW@8Anw(gyX1h8 z1`Ia(cf2~9bygi)ZB}Rb_K}$e42D5nT>?3!s$oVsd`9!MM(Ec@&LPqE-dC??h+F5% z-qz?OjUwX6MJ}$uQ*fPccgj> z9{0rEx387Ph~;`&9oaux>M0)0O;D=#?sVBZ(Jv+b+tmu5+#l7H%p|-?m6FnzakrnQ zUq%we>fL?@4094+I?Tpj*E4_xqN^{A{X_pP^4~r!v3Yq5U4PRm+a{l$=|E`cb&^69k{?;xy$M z1-0BL5Q|YrmLU-=a*0dqyagkRv5pPAzR{lz{-Cbg2$jaD^gNS96-bUsHlcc15*r%0 zR&pKt!FZEo(Z+aZhfaq_04PRb0QoLwmu+hYZfkZ59P6u(*K5FAGlf{C1CmA*EaYFt}%E30;eA+A`ST(-VANg zXUr~&F{~I;!}ZqtjEI?82gO0uoEXk@2Cgu4i~b^?iJ0SwJXc(Z#-Ezj;d#Yrmg70) zG_^XJ)!p3!=tFG2FkNmeVDIpwWfgI z*YYCe2$%~_&EQ+e!I8T=CJaGnKUXw_+vYquEzm6Sj9E~_O@T@dJP=6n%)KacK6Gz+ot%U+2ZZEuQLgQ zXri>ttNpNLF))Eo4MSm#*uQ%KVzwIh7Cdzkw-(p8;Yq-aHbHrzq()@UnoZ4Us$7|> zWeIA(b)ojLfp6kIALm(c^ z99IjQ=95{gD5K>voLOf=(P3x?nSixx7keBRup#oYYXaI7xbza`#9ca#cQDdnop&j5 z2PASO^&f>AsHU|>+cG3Y90(g2V+UqF5C*BvYYWfE!GakLdxji<$$Pf8Z+wf$^LFt# zvwJxeIqFH^mmpb-u!OjtFo|lk^p`Zl7%3@*UbJ?h#d4!}6REXaMgvFqve=vFz*(Kl zCHj&b_$R=e9mBk4q+ix(5_CWdl$@bi0>@<&nVOAYyV+bm)GQF{Jt-hpxjUahRQW30VQ=6rg5clX!1ND(*P_8!Fk{WC2)sm?y}M6S z1WNRi@W7(C$!{IT{G?xQ?>pOBn`G@_#ei%A=sY3q3a7NMmGkXz;_^LksEPCNce~+q zFa7sRqfvOxguFBHwe%D7iZNZmu;UKhI9A}$I~ayYk_f%naSv|V)=FY}K z^dzLE;zjZbT@rbuw4xtnl%%jr@2Mz7vSP9gSkObw4|VyJuwbA z)aR99{%su#G~vOuOy!?Dmm6Bjj%} zr*^+j?PKw&H_}X&=vDTjP-V0?|WMb3WAC_4?Q^-JO6@<`yPV)D%in@z$$o|WElm7nz*VLHF+4SV0h5W09Ox-AX)?KoSL_1v_nA>`LUO;@Mao@j9g8u>Z6HkWvLy z?8`SkCIPI;%rb9dyG zDNYckH`TBSR$Pb6BHkst4l=rLH6o8ga1Btw62!ScvWOD2i!lBYP61=B5F)GJa1muU z(5U760&()xQ&Vj zzln9`EoI|w3gqJ>y%-DR z=-jR4@?))BU#Y!S>wz*Bhm={SGnV(T!EEddAej@aAc}?V2n#N@_*gXg&LtxFKYa~G2n-I7b;(YB;4UwG9TyLKk!GB}cDxj>kjbGgx{ z0!@sT-dc}>zfDC}eh8O7Eb*>rSWIp!}YrhARRE9R3Z!AxI(x z)AevW^`Vqk&4~Z)gY6HtFKDlMA;^5%MI;lWl3W~BuEZ^=s=A69MYpRR!Nw(!($&;A zi|77t$=qhJv2AS3^BVy)gJ72&`MBGoml(_(z0{dXV0`dd3=y0?6l92EjM8Hi#gf>A zJQLh8bD^d=IIR_pmrr4Z@&w*{C&c&2t1v?p!pu2h(-UW}yDRf&NN5ldpQc*<%n|=M ze7u1lb7KQ)5EJBoGH(8Rc>Jpd$yhi!ll*@#0C%*1QTHXOTq|RnAoy&t6D|i9D1-_C ztrMxlL$ftXSwR;SL8P<6Qgl~F^GDx6h3vvz(@Ag_OueMMRQ-4pH2a=4i}{!^@gmN7 zg*VKq6dR0rwfVCFaP*kI+60(AzH$3jyl{lUb!G@*u`9O*F?K~axMWm8HeZp<21COB zRF>Ey`{D09O2T_p$2!>c%p!Ad5{!Rs^&%iF*zfJvTIK5HXFcn%d^a@~O!dB9p4542 zbL6dF_Hht?++n&(zml!%sJ4hvWZh<|O#myePRBq(SaYWirws}SVp2A!r zhF&iX!X&Eyy-IXkt?2A1+!1{u3CevfLT_9wi&PC7Bz=v0eut8 zs(MX(;6ud?RsQz*i!!H9BsqsFWf{!cacKvfC~)=^iLqL6zW}2(@a$->d<9D2j<4<{$0a{a)#q6aR{`O?F}iO$XqtPz}k(t@|; zcB*%zW?fo(In|}IChzmyCQXOh(N+CDAzXZYozb8)XBYz}etGITG`P|lON`+resN+U zA_e?Xy1DnF{a;bP-K5;t$frGoge_&BMQzXp-s05Lw}h<7pD+y2?Sbj0yT-YN(-AMXfJb?Y z!QNs`#lEADCAJDoL(h!h2rEVJXLd%(ar*hVqX%aWlxFq~=Hib^vz#(hLTlv#vf?c=;zzJd=5jwSx| zE)yZkVzgnUhe-pH&79#;LptGQ`2;GwLK|szJ2OeqoLn~H1MMvuiKN>dTfiI%?FsdP zkt)Otmtt1}rW{G5$6S&{Q=rY0BS;pNaC53dr*G==N#u|YXY2AiQN!vH!sCyK{Gc4v z{NBrz^Kc!Q_=OWba426v*A7!$F6Iq3i@BcEW8o1iW4-wjvqW=sJ%-F+Y2P`}$Aq>T zI>3pm^BzIt6}J;)-x}ifi!VUz za}1sF3>9$V`ewlodBBae_iYuPw{N8XrS18ja`S)HPDLr63M$LE!`;VMbmMf;LpDibgiuyV^{ucb+TNtCCn~sa@^i!3F>BAB~|lbRfgnjF`otVjTUpy&Tpaf z$AAHNfF$9;qPx2xr2`t6>M_S@nimjN$-TXO{L|-nn6rSA31I~3Zg}18{%_5 zO2`I=3vr&p3YPTH8quhV)tF46vIE62T9$XJgLDkzz0s7oFMH>0ExfOAS9q2#FV=Y_d~s#90o|^QI08vL=Ix%%%*sGq{n%I zlHt)eJv|$HMP|tiY3+4|+Hgf_kZYFR?yB=-&GB*6@ly<4jYX43`Z_`sPl`hkP`{Q25O|bog7;#OOw0 z@GZNpK_;601&U4-I5u)HQBkRNDoZD;*EGvTM0dTMeu6}AX|@IS|i ze)><9XPQJlskb{pQKQ?0)Nq7#LTSDu zk92%nuD%~}Pp-L=9=U%fkM)GJb+6J$s8blj^i!P57JzhD*N^Ptt)xvZHfy4hikdA) zAA4!GhHr=on3hu9#On<0)882%fzA#p`LnP{ZEepj-+MaZ)&L=w3~+G|QS^w!pOlJ3qh8K27h2ymml&2Sy&@CM@?>$>P^_*`a}wlb`qUUy`r? zgdo0D6r0^|Fqf+l8YOG8&PYD0r)`iaVcXUvCdquhq5L_=X7|Ii0BubvNl@(cf zVETqmKxj0#ZToh^ANUE;Uk68T%>9?BZ}0RdFI4c!%QHdUdFVAp_*?ql^m-w-M3C$Z zaP0PhIs-y(=-B7^ZyY|9xvRqFWW_RL6DW90=XrwFaOaey#n&8hV*4Ym)&ki$2~X?? zwK@h9Z8mq=dX6{e^()z@ zK^b?$T7d=ueW@4Uu*>zhi;c&oM8+%eZ{uo3>hV0PfK^f~$00O|7Ika4PZzlqGud2*6q>iH2Yy#)15U|o!H%mq=xKnO+@c!{IcntVX}hu zXhl$GbKLUN`OR4;rCzkAJ7-XeFq`WPn#p5E(lXrL8BtBv!J@Fc|BmK9TQTjPUFLwEi3YJ81}4sA;%ujrV*X2rte%tq;a62xl3r7 zW7fELWwe5Nk~FGD3oOyGT#?#~h#PrV;t5>gv}XY;)qH`jj|8rzA*I*-nij3gYI9b{ zaeCA-fiI+4;v$>8YFKo&bM`_N+U8~Bu%^s^Jz6ra&d#;=Y!XCIEUja@DLeNmCA}Ww zx?J?&BKBEmt($6Txw5iicUhzEqqRBZ!Opll}>N%pn-*A@7rwbIl{g$uk^F?vV z=My^d`2Bg$6d%fl84B^lRe1drA4$0zl%g&}0s)Vy)eJWFE#GB`n4YHViPzf1dHT!H zV74y1Xx9MQb?u1fcdlk&v`?$pU-1Xiu^%lGpERR6#IKO?Uu>iNqIc*LpWGy0ETjCw zchggTADd{ebQxYDXvP+^xxu!+ zIk&!fTx0#-<;f&kfdu_At9ey}_2S#KxX${xL#h%)qD@Wh;D8JQk|&PSpHlQzF(9gN zDlOwf!9hx5`aAMLA87djOZoK&Cc!T=s$aN^XRt4esFiAVhEX077S}e`O4kfU-4Se$ z^cw}AQCVmFD;3rGF`Tv|_5_w3jFznowg)>v{aL6y;x;w7O>^F?SBuzvJ1MwoHyC$j zmNrrMUI}qgsKbi9?(=#$3n{F#d8|^qkhglTC{%mwMa`CHo%d(k6y9MVzQOpI5%--A3SKz7 z9nM6#Tp6Om%Y{XCCMWuM0ahV<%!;yRxF9j!q&qV6jck|i@}HKY@M>6Lz1n3Hbs@C% zLZXAvoZ7Qr|6=N_D%XLT3mxXomdrvQtmjJP6lRua=*kHeCsMK#J-PSVsgQx_&Nvu_16n6Z zgd+|x)dee|U-;}GG)Z30-#Ahv2@W@y%m`RRJ7eHI8PzFgv9d}j>UHZnv!)g%4WAD* z&UWiX#CQ5tXnbLJZ_weAerRS;&4gEGan1-Ynt5I}A%ua|pqxjGn&8g6-tL~RlRGPR zd=U)?srGElziXKoH{^NU9r`hDZs~bS5itN=_T2g6xf|Df*w^bH;iTbczdgu>hM_j~ zB8Rc`rQ}Ixb#ysjIm9(5pDT&q3G1EM+sN3iMtPnqLauK|gCF3XUmA#|YgN1^2r92w zQtB`ViXIVcce!w4A;uh|_$txHYI3%SGMP1_qtoxA)y>FQ zNj;9T$r5d==)5jM-Te>Xh$;6Xi38TLkbv_V#ebVi{;3&C0N7jzAPjXkC8UxB2cnJT zpsXbdWi>ABfytsmqAH3OR+T49;NY4iwL4ynY=JoJ`*HY+r~)Cu_Xrc3vXha7QrYk9 zJWgCpTxV!r`n-R>Qu~UpO!W3xqFHRDj0f;6>0_22jFe$%m@)M6#boC8_h7-K+0fsJ zWD(l1VkMyoTasVc2Mf(ZzkKE{AI;XyKT$F*!{`p%amJDVAxT9d*PEzagDI%SZI*AN z*1K=M9N^U!$y|>TVDaZzAvcX0=ysOg;6)T;)vS38hB-_tV<|lk0UEW|oK!YDSpnXCeafD%QKiG$v*1RH+n1Bw zgPzRN5ogn^zv79l1zdvxS-c_(Ts7NO2s#dJZMz;oa1K@13G+0yzFJ@^q#_7eq; zD24y|U}7)~x|WigIj+AmOnM}}HN4Uf78yRyOe4)Zz?jyg`i}`cj5M zFH%4@A}{PJp{7N>M504qfY=l69JX7#Q|-1(Oh0g zTcWIT554fmpMz}T`)tEE5hrlufxT3X0ivs!&rOGYrh1X3`m=JGrSSTzKmPzDg0GNq zIslA!05JZ)1>yg*lXJDRG7)jNHL&^1!0+FV1b<~F1Hxg7)wR{yC{a*=L@iRr!}lT( zkn$PX03_rL2*}Y3S0%KT4&$HN{TV~u`vGJ&p{XyxABscF!pZ_tQ1D%uoXk!~9hqsH z+rOfHfHZpMS(HYKV@2e^bb~Q5O+6VxUP&TZWbsJrdJvr4RT*GVp4_sq;eJw!F+SL| z)QfnUAZoxUGM6&Rpzw4Xx*cWL_QmwExGAtMiL{<4{cvcxfGC$&+AaS9i2>FkziU&< z+?b=$tjn!quriiia$Y+ZR0}L#EmEH2Y2vt`U8`HCSCQVgeNbG$&dH>Nuicm>V?)ALJQ6`X}Vce_M*@_Bg(iPEYg(#Nu$*!9#;d@@VrC6~TFxlYq*1SA)Z%Lln+EAe2)rwBSFmbbD`m#hlOE!A^DYq1IVRo&QRZbn#MS&@fTvivt4WJYh2 zC6NzqR1y1xJqje0?0xpJS-zZz_<7k0}gvc zRb$N%hT4K~xcF8Tcx3!WQp38D^VuNVgoyQ2_sFBqUwim_YwVp zg3w2rxTQ`0JJm5n4Ja@$aj#j(B4TIKp=wDLN&Klel$|dWJeJ~+=oZKe#n5%X*dmGQ z&=0)E%+zcuGc5}MaG#IwwSnT2Bn%n8P{K5ABzLLj{XA$aG-RWO;fKk=q`}$Yx~|kP z$jSH@=|1k;E-&0I)@uff2Y%=2$typee{Pt7xeQjgclIzCp>(_-H)HNiOB!M{cBXf1 zl_qcM&(o=o#MgTbS6i?9kw1)J9DC}GFnHrVSr%x~FZHc4;&xw2xTzUS1k!DXKC~*L zj5g_}*mcz;5Skv0h&JI4S2+b!76=Ekrd+>ruj`#S@W&n`odNZ`sjFM&E8kir9@QCK zu7fwP?&uBbG@OsO-BY=%!MW>mcmBq5N6Ir_vOox)I5kz2RP1k->!^0-PrSkdl}e>> z?_kYf|2}rx`$8}IS;RUTzYT%&97Jx3XPe_MDkvKg9T`pX=By*6)o+9Q(_X!w7x($r z*Wm8^eW4KuJg5?X{{?6nW28$(VqQw|41oPpIa_AgCaD_jipdiE2~3FFV2W|-2Akn# z=-a|I`MTQBzB7<5qMxZ31M-{2`Br3J@{BNyOZ@zsMNKY&*jJa=69f(aFNj0tGAJ+$ z+*oZ;D0iV=c}9^njd|RD2_U6>BN7I}Fc7HGl(?`R=tAlT_4`%f0lCJrw5H%0-rFPMI$6bQlLf7P@hk^U&YzxlNtWk=V zl)SpMpM6Y%bA`riqH~Rjrl0?khWVFvIj%@_AQb>>ZUC(R3nNd)z|h3{U;5DhiE_0a zUYbqv%as8+3;{&DC*kJH}}6B;U55#Q3)dNXM_Rxr5hbw z7`AfwG6`FNE#{x8=PW0W?ynbsyBW@vm4s0}au$P%jD-Y2&8#U`z3Y%7MDr2zQ6UmFYMwQB?-A0t@51R% zgIIqAjn3r1)2ttbAoja8fMoEj-T#!9I}!0AK&E^`>^EOmD9^rp!@JdF3x8jVGf^WR zW@WGHPcpSG+<0`v08Pe4?VO2FEir}`Qk)e-2>u)jkAG?{r^gajUsrGO9>5~K*l?xF zMpXqKyB+!)%`93y{T?w*Hr-e&A9ch~u~ouTQ1M*O6X!Fr1|v-vAc*rt1^Aq(&|GM< zC41G;q#H)5AJTF##Fr#3fAck>9)aPt&r7+suN~NkyI}k z&;<{kC8ygZyQr!J(xe$6^W4%MqIb+%%I=3C7r2^G?Wa| zjAl;#61hX61VyiCk~{B5L#i=QkizP7;X?MEp8h7ENA(i^P?zXT_NWM5i;YoyAIJ4$ z7n9UV2B}?g$t?k_A$V$m0=<-3K7;KgIWqGF^4~Z3@*2!PkOA1P0E}4wrBjwM{%1>~ zENcg-*xu)bkae)ILBV!XQn_+ewXN|Aeo&=xb40U9Vf$-;MJRFCvkPv#2;vBQSM?qE z`*z%-mJX5M160+Ry_)8IJ?Zu|3}BZ6@d)&b0JTVs6j&PIwnUVs9c)nU(Fsq-9!h{XTSuhA%HqY7%aZ>>RdA&wCrc=Yg~cEtzg6Q#NpV}qd?I;xvv~b z=6+l-(8C8L<}HOKbYWX1viCW;bJ?2^1+JgIUQ$FoK_rYscoV{J!JX<&m9e zl(8Pef9nv!8~SY<3&teZ$Y#V~T1qElqH)*HL6jb%8Aps6ctwZLc77kocdL|U|3j{f zHgE&kpxlEIx=$hP5;Q6CaevX;(#rM+O5>4cW}RqY(Vtv=2TrNb{jB>R5`e0FJ=Q~;M?;C<^`YL(b_o5E!NlG&Ud-UNEzqaTx$q?jjl zT__L}I!hE~d^k#EyGDEGsz3AnLd^XTqq6Q5b4dIScBL^#IQofFP1uGOTGu{?W7K@PQDKl;y1g_NVTn*f92#5ImVAzX8ZEtg}jmn zZ?>Yrbn`lU#ESF|e`yqDU-~dH>d)X0t04EtBKY(Vm4&IyF}i)I!5TS`iUccT-Q{rG zSQlk&tACDQg@D95CjhYS0bTEZAtuOJ*qX?>*ch5P{%hsbwnGB6yTMj@6{6v8y;`Ne zX=Yrjo>z+3uw>11>1`w*Y<_m+t<%t~;xcr-26)XBHt8Y#^5q|MGtDIk2J^Zx0r)dG zb=_y#O^^Hf8-vYlUW3e%%n9`!DNj%GwV;-BUn_4f;QGd5(cZZ%Q?>fn| zyO-^03`%vpR3xl@576cB8zaTkLt- zjx$%OH=nqB++?YPa)PEfs0-pGK%wY_8_M?bZp7^Q`G>d-)G{nhP>k%<^`z%BVkh8D z7HJ{P$Kx)t^n<__@-P`M7~EZg@9L6d~E3XgU>e? zaPPoC;tY2KSF#9RF!O34z-P%ZQxHk(f0Agm1LRgI1F##3C`_%QKeLwlnW!FdYp4epUi~u=v27t6VfKBrM!naCA)(%M#g%=(S?1Tapbg-Nj0yVgK|G9W5Dy$B& zDgw(@6~7-k3(RzaA(#4Bj5e}Z0rcPCy$;ZjU7rccaGHK^1?cy;GG1TL-{HSK-*AMG zsx*x3vI$4!P1R1>hvdZxBR?T&tuWMC7)tlt94bJftcg1kW%)h4Px+vD`25OP@~}Jr z&~Eg$Q)W2|y~`9y`XzGL;QG3donsQQf2-??M+eKHP#rd!sKY+_XXk$u-gzeOz4AT^ z3S2-G=D2mC^P;}2aJcWZnWEu!xDCrS2><3Kri!)m>{`Qy@1XJ`?Et^Ig|^}X$nK2G~t z+whnadGwayJPpdOMy-8spJ*^oKNFoM1%u8ID)LWS54LAnp4uCP7!a)EOF8}57gN16 zkoHTkpLNY6K7KMkL_H{K=ghO`YV``m)Y07pQ&NzLeHq=i5~Hi0Z4 znln=Mhg~M7iC?RY4Dd$1!yyet6CrBmPLQKy!_S}8Av#cr4eSOa)-o7jI;;mIRu5Go z8+B!d8TijXtO8YyA>j3QSnJ({&AN-;kW8HGpwL|&LV@W`7aee^eN8LX%!fRX)9dyM zO)FPtB2`ORj5arpVK*`>_;SlLHSJcFm3T;dmFKuc&!Cx5<{I>UgqH^DPBP`Na)T8j zs3*fe5Y>lik>tN%Do-=V?Ed}Fyt8^|1$mm zv~?X7(s)%&CsLqj6lF6IrXf6LeD=$ZvI?4PJwNf_DKl|#+L}5~XngAGQr0(@-kNW2 za+_tHaGRrOWtmT8TcVw$<>KnsAACsUXJfVE&92q)*8NFVGD>cKS7p&%X9UOUbo)^P zGY+^pS5r6Psv%c2p^GvFIwZ3MFBKY`-VaVzUeQ=+CeW0`yUH;$ryJckjE=y($;YO2 z7$C&2gfUvb`#4bl>9KdhhOE#}f`F}zzYgMJGKyVt`DtMmVF)D^*y*oDS7J9is#_V% zSJZ*+%4dWEv+T;F<2Pv&?3XT$**>t{aP(oge8#GvI66pb@@ce(Y8Ni6PI=okYWBlwIYW=vM{hI`Yo(N4j_{FO&ogYujM zddnvvZhfJJ>V*1+is~ghV9XM=WIu{d0?|~)u(;v_Y;vtw5-!-r-EYAEmX%(G3gB-~ zA>L&!gVOhwh%o9loWMQ#;hTr#IW=}pfCSejd;Ia}9Xi$t zynX(qTPHLcu8+TfGk#zA8#c)TY&#$ zMrseyQEYL#ZXwe+fjH?0Y82hv8ROU+6d}fdc3|k;Fak=?JO}*5d^=(uhR(V0!oE3% zC8T>~msipZ*{@%zQZvk(w?ZSIfLIQXO$x>BM?0ud$p+3H-Vqr75T!n6dh*@MwehOo zo^HgxKL~k6$NPl+C|(l!pV7Yjm)v6-G017r&|YOUXxtllMLpNZZBog;v#1z(a**z! z8Yu=!Y!#ufW)?3oi)>@u4W!CNRw0UWF*XB12ZNiW`!>z2IyDCpcdmwXu7>X0e5XL3 z=Cea~OL6NsxMd6fInvkrOWG6iA?l*QD2SZn1EvHsL_o?7-AsvU_c?9%xbkzSZe-r} z7Dtu~FQRWv&+^ZwX^4dg#Q_HBMg9-l0%K?eB>HLp=_q`?!)J+(3ybS7@PDsj)*BU% ze=R?)0Bs=of8NB)n*4hU7^Q6Ww>(q1nT8gcR{jTpik>$FH4#-}EDIQN(-J&JB38h> zt8z%9?xq~!C(19sAFPUD@h^)5_$Hmq+FAl4^`jFT9cEL!&l3|h+uOgsr4BoyY)Yg_ zh$9M-`BPM9q(%`%w%M+<<}uw{wptkW4$uaF>MEiar6)M)$~#i>v`isP+uiHhvKN-F zx+|t=29LCtw(GEYg&3R;TqkuNtJ~BxUM3!9E7!Yw4<~o+uh`7_t2@+J3@}q{%u@xo zCGt%^ah5uPpcVzgKya%EQXfzWi!(L#>TeWC!PIryX9*dV9K6VLq85nV>!mHTwbH9> z$Y9+y<(4CVS?<&oU^Kezsq~p>v-LYN#cJ={F6xo1+OlfPWRbNsSqMA0@y%kQmguRq zf9C5mWZ*H@5($SYSEV_nPt0JS@HmGV@VFO8tg#*P_n)K*1k=g>K2pQTKiBK0=Y9@S z!nDF>Em^B$@D&U$bCOis5rszczyMnt&bjygl-mS){Av#4M!PZ`6~f^~dqd&4-BvEB z*l>Lg6JvtOaB_rA=xs+am|{^tA`4YrU7%Gs+7$^4{~fP$KRf4XE#5L3S9Bxz#7 zeJ5gSgGLVQQoKLEKcDCY}uQ!)`yfpi<2{z#`Rai^}b4`$8`f$q28|R7JC{{$V&8vm* zE@Ih+lzArXy8MrW8^oyhyU|ij*N-3xt;O99nb$y0=W@YVD_H`viN@| zkjZ3V%=wX77}9ly>y10sFJuL_KLmKq4TTm433g%`x6*B4M4(@G1~%ICyr$E+8uND zh7;}03~1It>VP|{z;Jhr-c=}mGJ6(bT*L$MLcT&ivfqRq6zw<-GtcDemWL5cedpr7 zQ_doRZ#y1>Yj~u$T*+_vrR_n1n>iw*B`Uab{+%c8X!?o33Y9{VX)v(}Ry7 zo04Pq=YC1@v8sXF)ey@;Er&aL25)!7Qv35K+|ZW;AU+|!>%>lnC$gp{k7ec+&q_FL z{SF&A^)if|SNRKetS5@B2d$Y{jr(ySedKMsuK-!Cmoy1>)Tq`!fKg~%TZADJ5}d{; z&EQDzk0h|d{RMavgLKY4=LzSJBsb|m$~Qu%hx_jUvf*7Ca`iLeKLKPsV=)TPP*fBD z0u~1_(U1~WC zaSOR}aVxn~`Z8TX4uv{Vo{EV^GR{%lh9j3JwB4R1=^@+itblYH=CA{8U&b;6A)NQc zZW`yks1a)WB3PgS$a3N@ws5iC)T63jqqC9#$$7@^{>hz2n$WUMlzK@X4bqKX8CoOc zmNM3YF_}%3ub7L8`4=(Fm!e;n>KE%Mqlfta1dv%5uOATp2_R3IySR=0TLAeVy3?z~ zT5j!Ib=UZg6#NGk|6iE?=e6g5&!R+sBN~+fm1h&rEql{JgTMEOa-4{3$Y8t~R7f64 zX4H%SD&%&1hYKavTG70~r(AcMxwtpI==QftwJz8T1ue~Zd3niUHhp>d@pXU6<8Rn8v*&QIvpd=IThB)U)J9>UOrwhM_G{_Z#&YB^}%dx7J z7Ct>(4yZWUqum7VZ`xSDt+ufZ@}Ig=DJE2|ITZ#6+p}^ZrK4i(qxLvU?|PLH#~^a` zaQTrbD8hCm!%30WXe`TN7E6<~?m@hPy=3i>RbmbCj^d=|4asWVFt^UhYAY-6F^*i& z_n1=nMI2`zH}coNMCy6xs)d;&Yc^`QB50mM%w^>=5jpeil1@w-pD-zt1ci62fkfC= zU?9Fb=+O;1E5fje{;?(WG8{(;r^?o$O9+dS-Tv{qEE+tbH>c8ncHR6EqV@ioH%~Kb zC8ZNr1G#Y@(_Ov3@*Y_rocMW!H7^?|r}+IlA6`yAZO4NM1jP1Tx$qy)^nY%8|Hpgr z_n5V|n#+%Iwi<UcvEv` zC3f&n^8yWQmG`&6y$| zk9r!7>v`BS*zK{~ovfP)X&qapVRBWyeRFNJKk1Spsl?@DV|-fK(@jazVS`|O6?F=Z z*<`*>T`6WUMOjaJOa(nBd+hsoD<*VbQ?k1>`N4OxP>t%%1jMq z!{u>(m3HY4B)^dq;Pd@x*2(l*_vDZWkJ`4<$_QeUC4AZ#@p^*yC+VYQ_#AJ9@P}L85KHfj-Yu1 zm-37;);mNnxmB(Ctg-AY+zd%;K~$}Kg6))aQd&Fkr)4K$H8Q`Dj@U>{e_2DO5^o$2 z`)G%^go$GSTYe9<^-1vLjiTM~jVd^8d|%ZWXHelUmX*pu7)-0-`c&{l7g`ofDX~N! zGT@GM*_|y6ljx+fF&mm>Uan2q(|)rG-!pd_K&evmR~;|;MrZk_1cP|_Ud4Mop}#|v zPx;qMdtjEye%G6z+-A`Z3~hze_9&9o4vjOC)LKvum|7!2zy_#;1HEjuBAlCq=uP>2! zD8$J49*xAvV7>dB5hT`9Q()v1+~zvF$k2Mr;8RQKJRq=S9iu$~hCohFJ3;*W2l}uS zY@ODq;4|#wm1Vz~ui|x+CQ@H7+@QA^XDYEpL{5y18ylPi4^pYP9ZvMA12u&^uE3_I z?ISR4Uc=@2sp97*{d`VKrBR*H+kzKa)s~GH%+4!$r@=Uw(GJbsXIma;l_i(F(6%UR zDW;RHBUmSMlw>$W-w_3nK&aQSx?HGbMVd066eNpqeY|Rzkujo3x7E+};VV9_#oYzr zTB#F;VH^KIm#yEL)BQ>n$6lYbH(bMM|CZ1? z=nAB3Y8!%m1qMu6 zAH^YW47`K*%H;~x{atsLfG&@`1-&Tncbr##SxqXFX2k9p0ZRs;7&poAPBBhT=hHYz z0Q7-!jaA)M4Q;o;Q6`0%OYW@id(*t_ayU~dRno`BAq-JgRonWv;k^Of-A_Retu7vs zR!ZT*(mK!UXI=-k?BUeamh@C-!$PCh$ugg`yPG9S_J5TVva{ zWPlHswbh#1!c6&q&i7)OXli}Yw1SvUT{?!tVLN&wUsPwOC`o^ph4rTC;(cGU1OkGu zpxp1jaVao|PVuAB5vD_z!t@H(y%-X;kCRHhiA@cY)T9uB;Re!`AT(c_S@1*XMstN* z&#f$`T@Buc^zBNp0KUVj!ul=rquo^Vtq|_FjQV(wP&b}fgA3sGQQE7a%tcXQtlTp$u`SREI;rE9`+zUHK>-I zU(UVd5b3#W+B|T2tp=Eytqzz<{Q@)e5txJ9cn>+hk9a}!X1yH2h6bRNQ$6hO z4a{?hZ(6myRk~;Ll;dR;&Pgq~1Ih;|;63FExxG<;=RLERL>Ej3S32D_*G~WLG2-~b z7jcg}{L4sng9di1q8$`k2NA1}hd-nWX9O9u%NbQ`E4tXmdRC8foDjbfvmjn|tVmp! zs}(&MfX{;6dwIinZR!o>);r?WYDe$9QPTap9);qX_jklqtru7_ahc~RvL-oua_I)6 zRNICM=D3Xk6v50UaTK;Feb=Ir6DE!Z8q@U8(LaRk_T z;|u&rCkDZ;r}F|c6crj?VzoKsg0j+r_2!Jw(FVxl4A7pA#~M>LAl&eL-9r%W5GpUM zM>||$_K{t)&#TdXy^=f z_!}meC-^4lsn|YQGCQUhT&p&GeGo(z&2UD-NwTkhcOAz4XysmwDgP?b#B|@%J&`H+ zqU5eQfv{{Y=8L)-a`wk;vInfH;2$o0=%6BadKiK^#TeKk4F4&5=SbN}g|Td!p5~N7 zxniB33+ma6mx{jXGdQ%Cd4ZepSUCCPF+Gvw7w84Q%X$|f6snqG&H6 znUkLflo^79y`L3xs4UOFU%lqKj-HA(O457GeqS=#VZ(Ca&mEkDs#9-tS}QzjYjTv< zBl*tOaQcIQ*T(QwSWL$tL`#T+8P^UBga#((RVs(nd8?iYWa|AFC_bb8pCkSFCMvv^ z@(#{Pu`YA4Dc0V5d5Qb`C=C-}H4Vs`J;j?a#-l=ZOaCe}OQd39{(ht*y8&-PkVcAM zL6S5_q!GnIv-Hbo>%H1*cvyXmI5m$H#kE5EG4^~vwPU%4rX11OFxG2rj9YZ~c9!&N zH$0Vxrfl5d$l?5%ODGb9o&C`vpxEkp`wh?CqIZySs?e2{ta93f&{d)Sn(GJOw8pOr zvX6~BRsvA8Uk5kj_N*Yj=vNlh>B;42o+Sf44^^w*v&qKST6VccbE?x?}tpfDo|jlqP_R$!jI~ zlJ1O(wE>rwT`4i48xgOKv~n#?=*G0u*rk<2Y)N7hCz&C(Rx0Djo4ixW>KOY*+M~=u zQ3)vO#DtTsDoc-d4dZM9ZtIZ_w2^?+Wy-@y15xK{G(b}YpQDzbCk^2vG4}v=!rHq{ zDTQ52!G|Ia)5Q_R_CDg_c3r_o71H61W}g$OAFNMZW2x0ZzCjhv@}(kQXOe#|#N7&p z)))Lb*m zx+BJT!$Qg-BJ})4ln3tcn1QtMX%`qg8pX=ee6kY&_`7b7{yi4<10nha0{X>(HY;y` z+d-kaup3do)6|2*#4|O0qSsI(a?2L7TRQ0#;}y{lY6l#Rje+r}KaOhUkzQ=xk`~pD zKA1yfd*05krmyChBII7)K_k3h%SA{>e~EIoF9uSE=jV>_22!#rClkJ+uSB3XM=CyO z=n8%ra`5=0ZGarz$ybtUP=7^pY3(rr%4%Tgx?^5$i9b5Vh5qbi(G|X1@RCBNTEP$K zIbh!t6|Rh@8raQBF*@O@jf0O8JjCo#fylX>x|RFGEv9R7U#a9%&3u-nmd{c&x2*&n z_7fpL;17AV8f{-4VY@sMVr1@#l(dtL>}Lq#FR$F#W89?W-y=3nv0GgBX!8n5ne1b| z#OxS8A;tS7G6%Q_*hLSmVLXTk3gpu1wTRuKt9i&0!kx3Bq7Z&(CLUOkHV~kAICvhS z7KOyM3rCa(V-z}#{2psFczTlPUwbJFY=~PPe z2;=S9Qyq3bV(T8)wnd!RXuo#io*bRPCsoGBp36`l*OSb2P3AuvN#HG*)F?KzN!lD$ zfaPO#b0^4?RynpQuQ}vT9rpQ^Nv+C7WmOY@kl&lLigCXyB{TXCV_;J13{pyee*RnC zih%ys#Oy3gPYTBWc3K8&N zDoH*XoIe5PLPW^xx-c@*ozg9djQ>TxO0~WQa+`w?TJB9n@{PYtH=;wujrUDVzrS+N zykGqzF!%zw$1H*wy5o+ZraT^xG3OYPhIj{L3Brklh--nd3YE0aKyEm;uGe9Yr`npy z92>Lg>#xHBTuvpM`r@Yasy67D%iZU#U_+Eu+6%U>n}d1=v|?swbEdM%o{OKv`oh){ z!E97`dW<}(eGDo=0rl>)O-a9kRL;31RnPYF_TE42*Wouf`w~mk#mce=@CAbI!D*w` zn@=c14nIiMS@NGcU6mjdJ-#whu+9)L9Z{sPN~}km!jFc`ce)c|RQ9`?`c*QhtNC9y zRLvGd@wSj<^Oha)gU~&EX_@EDSvroTmj4t~TAB|qwHXFN?ZdA+w4J>V-ZK2v6R&B= z5FR*xZ+0hsoV-u{d#yst7)~N7vBA$B4pw61o+6CJ1b1k)i3cwvL;bfbuEu<8<9rBO zE!e;|uR5}76hIvb;DY;Y@oLP#1DuUiFOJ}2m+<_Xs^8f(qT$5@M3n}QSXrB0^d<6C z_7wLK=ohqIAg7)I`k(lc(Ye~h4>*0Asllk?Hs)vA4Sa^=(}gyB&!c%vPD{Z|2s#ew z*d5HPpInxk1?FMX%H{6DXEBIh5#pGoFeqeQB13lY%C73Xsww@rSJ+=(t#TajYenVG zDsNmRTYram1RffY9H_1~u?8P78KOOC-2MAT+gV*lR8f*H_>w)Rb% zVt&_e(Es1nuK#0K``y7TKb*5tav@_(6}>$CY-~+ub&RB;R~d;4j`_>P?3@&F2jA`yOkVx@cpAcmfVzt1W5Qt{7yd zUJ;Afj3d%^D+ATs<)sfJ%oHE1L)4PIHd}f433SbBW-Yh?>B2pw*L~_qd4Fdf*LR$5 zt*^1yh9}$B+qke!$~zcpI)Q99xh`^PZ(4Qw?%T5{l#&x=g*_dyyZWKc8WJdz2}Kqg zNxNAed)d1ojqz#NMvsxvOZ45vu75hlYNGJK-sP`4z+7!Z^(E3ZeG5*#;(SltYzJ9G zo(`q;v$2Vqeq&ZAuLqwbJcLzC`rCgIgX6iFsY%~VzCUuCHun14EKLCIv?ikgq%>AF zsVt?k-Fu-a+}FIusC(gWYVRM#VDY8RTj}$XDejpii&*L?`2j2SS$mjLmMjAYbRQ7% zAAK|KIk!P(!8{l&4@Ue$c<=}sa>^0ulfSChux>KBDwKL2i!Lyhsnd|-H z^P@opSh3M#GhDH}KkekEIwSc|&01Mee^B7IzXC>LAry8{4Lmtg`Ef4CEurB~9yND+ zC^?t)VZc4zG%6{JdxbyWt5Kg{+78!fmpiB|wK~VrYq~R!9@emzMJ@Is2IzfEJx_7a zLw0n@W$Zg9k~wv27FJ0hC4Lx$arf-$5=lkTYzySu;o9>6q6wY|kwLwnNFko{NQR#f zWx0hW)_66a^PYnL3d`+bsOA)00$mbTebE>pByz{HCP>L!7`xN8*GW=b0k*K|jPRE2 zbG`j<6YjpM^QB`ILzB7X57|6z~+)I{3udGSiRAbg{I zfKBA^@UKC~b-XTp@R#@tdN(*+5afZq3UX9S2~0|1fuX`J@R7FY9sJ2H8c$-Mot8&o zgeo^XhFT5xOsJB0j^q_`qRA5S{Vr}=)%bL=e;}7|Wq`$-s3Fx9rQ$e5F>v1K*Q7|) z+^KLH#U_E1y4K|PZ|9fpmBcmD_xa`hpABaJV>kQ%Akq{6%X=HLEs@pgpo0wqrpddO z1QNcvB)A8$$4@G20n<1R3>_ZbAgPVp;n*yIhVcb&MgkH5sz&1b9hg8-$cF$Yq+@F6 zxWApexOyhg>jr6!>=l4smP#9dr&VoIpD#Gm$74IL`>n-lyWT290hct2YS0yLy7|+F zU|hZ{<&q!n?e};Q9CiWizUf;0Gqgv#GnA_wNw&Hvm{c~dM8D#`Je&w(WD(9qC5>eJ zg_buWX}qVnyHaNMTaSCz@3Iz5htL_Q$Y_fAseNB9Q^*25oD*hL2PxxtT{%|T#YhOS zYq>>)`b50^{;fiGcs-dAMN|WdSoa{DdF;*Pid0ukz)wXB(=f+R!hFv8`4aBw*B_8dTW}R0N|GP(G;#PeT1947 z5B;5=b^h_)hHPu-$H&4{H~Ho@uPo7_cHFAQ4W>2r&9X|8-a2ZK zIcJ)rULasze+cNB8_t)7^Ys##a5GsWErfXP4o&AUeJ@Y)I5FOTj-=WF;rB@shfkp* zyZ=nBhJ#B=peP+%l`ZH;yuOHb?XT^!nhxx?C&0fz*m&(1}ywQxtJ{QZnzqbO7#hU3m%k()7-7$noJ5{nomtZB?IG3KQK;EZ3aq5wR2~l)A{ql?GFJp%D1OWu=w#z{}MyXw2 zj5Tc}b4o*NfHHcdy5yb#I@c(DmEIoyn4#omyD=MFrPCGYK)<-=F%iX_mgJmOp%;}G z3AF%v`CJC+H8}I&NiHSEbnkewk~zWHVlDr<3R;DtM6_g1+>fg0`FJ6GdGzcI{ka4X z?A7IOV)^{Q>S1{zSZUBVe%{h8b<``OopCxt{xNLaKHJbpRpeE8c3Y0Uea)i=bJc;_ zkba|gs?0IgGv#B$^%ceN!6FwacK6v80m_MeQPy@&7NNynYYf9a)DU@1RNLgRhv@b# z%M0QY^m3>q!;3>?QZCG6V~8i>k1Td7mz6P^irVv-rrOf5-2X&oZNy%?;5RbCzmfSL z!Uo@#+J6V;|1Fj)DTycu0$yA#xh{@t|E97o-3 zHdJ=9R}-#{mhV9%k0`9?p22v*i*dlb0r!pLoj z3`bBB6TxC80)=ztnS%@r-m=V#9;y&Zm0G3~t)#wzm<=H5`{>?=$72YS*sp%n6aG3h zhj|D5e0pKho7T>01zwRcPwwmXUR$@J)_`gHb}3*1$0sM!wcGyCanRLlvYBo!lT_d zPL5Rd)tE=-Y$mhSLrsl$9FH`w#gA`dC*L@X1KfIXc?EfJ0AwvTWTBTGgvPdogP%wm z1Ea>N`~;pB<*u+CuPIC9nBCX~Xkx=nX!g)AxAEENh^35aD{Cr@t0~T>|GOpc+tu)I zW0XJt?~myQwg%Q7P8Lr8mU2WXc=&aT3It^Nz4!Yc+~NQIX@P&f#?!>{U+q^-8Xo$} zi;I7=Tc)LT6UKUhX2KwvFhK|-Sj^Q)evTsZO8{wTlO;-EiZdFR_8V4wOj-cRrieOU*sK8*Onte|vN}p5116 zjyKq5x}R4JfH3AtLDT~ieVKRu_ z4(5w8CKMk^^&{FWJ|__OBapy2&G?NWz?&xYLl9hg9C`;XE6G5r)d_U8kUQ}XlpTj0 zl!k=D2>cEzoq00$-rOA_*dmBq^ex>hiQAiT75$4Thzf2totZOqx}X7cwoE+3=)fU{ zc?Ru_+u+NedpLsU7}6dbZNez)AsK4h-9s8NQc@=4WQ3V2aRi)9$9#^2kE&RQ@-ou< zp$~|zG*X5N!-*_1N=mwYA@)_-U=Ee9qD(M_dr|DWQ(uRj4h5X)K;iUwl}RQ8tyeMY z0dV+HvU-=cUq~(dplvaUV%aSL3(}f$^j0Q$M3*!|6yKs=Mm@As8Kh~b*d)P1MoW4y zm^oi(EX6o1CupHUv?`xcrh^k%!ZvIereu{OlRgbnmhN{C<=M%xm_-zYB|gfH|0kk!j(enqY)*R_Q;N~6ucD$U z9zMQ)$+@#`5+`S=!|sfq(JCR+Ok@tg!i0kYaEU~AVHhDPU_NQ(iocqCt zgw|#qCZN`6AOhm_hT74aSQm#ASmM`2ub@>(3*v`O;*GV}bW2loQI64)vQ%Y?5!u*f znF>ntrf9JYOafC9`fm3Kt7o!FBbkY7e)hWz)wD2+X5frh%#XP{4J7?Gri&_GCON|u z!(#g`I2&v_Hq~KWSvIn$w$^TZ^0B`-ujssOstaMyC16>a?B;hUSt@x!^wa-Ic(0YI zd4TJ2ui`4$AC&)^gD-O*f+YILB-5Or(b!ZK%7H`NR43Zc0ZLhxa2rJ%UHjQ3)&awl8+j7Ppjdd>@&;YS$%M@D}ce0l#KuW*0H6Id?0}WCiV}wArPHvP;vNWB-+hM>C5i&3%u~krIO=E@)yy zl^rEKzsV0k!O8S8+RKJuEe*H7`iTI(zKx0$J9%Aijy{ln24G@CFHg*|J=QlU3MS74 zEEzK{Wtomg-q6q|SnHd1^z0wCWo}XI2GKum!@igDLGlp2B=uRIgEmig*BtLbW^K3# zhd4@#2>m=)h11*oYZo`6pP)uyS5tX)6vY&A3_om#%($S}2yC^d6y8Jw_3XdF~8z+`p~uDX~k7=ku~v&G*sqXia|~ zPDx1upl@NQ25+B7NELn#(XJmc70WQmj5K3@On5(QcyM^t1>O+?jP7<^*@_uksu&rU z2iA+hR8X)5OOc;-C}B>Q_nWcoXG{`0O43q5IDvPR6@OUlz~7T%UhPD`GL;@N-m^wFb+Tr+a5I_Q%#{HX$xI5`?IYCT z6@$S!wbt;gJ|bdXRtw$2`tWA1W$DbUM9Zj{#7Bi(GZCZH-K(yxY~&Arr`{)Gx0pu2VoRhGXRRNBiFg)bpzxjl4_AWW^CMGM6js1P{3K| z7pYtTt|RS4T+X7cs{VqIQ{S3qU27h#{*53y2z1vS;KV({2hGSOg+dXTdI-q!+`Tjr z=nJOup@PRGW=a!<3{BcKejM60;Y`~0-wEhGVYZDY0|7Ty>;}8!?y_K8#sKuI!c3DL zlTISgU+Rs?yoLZV3mmg(LTwEmeL;rB?h8<+mkt;N2{C3mB2<@4Ru zF=HYPREcN*z5=cjS&tiDO0DRMfxK}CmG);{bb2W?5W*dGOHkpjb$X=p;C6AE7YjbNISyKl&ebDrqa^RiH1i#iRrC7Fn=%B?O{0L2) zJiJl{=c*;Hsr!O_$4|dtc&|CRo@xv)~?SGR511?BW~+a)w3Mxrhqi?I%v zS37_HYG+)XT^oFM15oO*ylXwbZ|sA!VR&G$5v(g7>RyigD7ZMSA2JqLoCeO2=e~h2 z$c_E!m_OltghW__XF3TjEM1NHA%Oj6wrpMytm9{Rd&*Wh^2}ac)6GE3X2{_X_4Yux zvf}2o635@jfG%O`-BrxeBziWJf__YF)Z?{QIxzuhy_wDvsC>N(6xbODyB?;^7lQF@ zlKkiMG)M}i;%|17%46a|7Wj|;nJ%e)#x~;5Qd=+{T>WBiRLnVA)5G_nN8M)owr*sj zS$~$FgS%ql6=o$kz!c_t1Q>1zQ^~dWM{8_cIY$H-)2mOSUk=6Rv)UJ&b~SF<&oVK% zksd8OrnYv6sOl*~AEhT!QjnG=rfRWR@drh?<8WBXRbH&O6@q^3MWI2; ztM58>*yuG~HZ;j*mFvHVws2-4;7M2k7 zqb7MmTW9U+Sej6dBW#XUFq>_0E?@Y`hb6^ygDo<}7-WJtKZ#aY)fs=ZW;L&d->cC4 za#$kd=|os}c5Wmz&%C5)hF_j;R&p!v6#l*W_h-awG65?YULQrQ|@U&1X4r#(Y#NO#`hZDpP@_`K$(+J+8b}8Ic+; zGwun$he%EK`tPwrkGu9FZoVvnhf87Lo;x?9-anl>>4fjpmS%v#Wv&k z>$Ogt@&?Bd(RgWwT4H^&V7WFf`j){a$GqY9%|?mY)VfG;$7p#rDg{r_XM#_e&M&1Vi7yF*OXq4XQ?L0){d&t8BvE963+3ms3y*1Rt3*5E=#Hg?_~ zac?O(VAdXquMUNJl|Qv+yk;ErLdK#F@cin4`}7f=I=$fJsoRqv&8 zSgZoWRi2asxy*=8BN#y`)K!Vh3(01H*Qx7<*z>-xCsb~MSlZPf0%ru|2_~F`}OGuwg7Cp5ET0w?~zqKch$OWqvCnPIm@MqCy0eG3=P90iPB z4Hwex(xqKUOJqJ}yWZG^nH>%nwwQ9S+s?I^+;YfUr$?;LJl;@@#eMdg?(o!w=bQSY z5$ZMi4?*fd2OBuuMY0{1OQNh$T#`jh`uCKhy zzRWe<&LOnE+{VI}23I&gfb34u6WLb<3@XJ4x)c*oU&&JMEe1fgMWh$5T2o=I-PcsHM zH#0;;L;;wGDTFL1n({*LHJ>^{I-=`L0KzF;15WJX-iX!Lu9hepI9<$v^3j0D2mO7L?B zj?=HPv@h=%*6?$iX$D3*6k~tslLvINVRaj|!gbVUmZP-FTmCxoN}7IuZM&CO?${5Fu&nTZymQv9k=@D4BMK2&jG>7G>X z-Wn?vi-W^v(h$QTPBAM|7+=sm@)GyK(L;kva(!wD#k|BljCyIyne3wemAA#L^X{2wAkX$k{jRyR7v1g99jRO*~f%45(zZNtGOo* zR19&YN>X;vMcnTD3aMA4-Dz!5}%g4 z4^=HAuVKqVaQcZntj1i*+m+vy-s6EjZ0%kW!;>z$bTm;#o|?UQ`IEx>EZmvKh~SG zB8R+{`h@K{=(Z8Ixz0}S+T4u1cVC|{02oId$SVk=VG1cRJ*U*E6Wg67BWiX%~h4h zsxJC5N0lK`c}mqDQXoB2p5iMp^+44$d)~O!X5fqdsy@`RbM44Kx7v5_5Ht`uwrkvp z)6dRA*Q;QAjyfLGor&iYE|z=rv$z3|klZ@0vtMHCWaz==Ren0OB+5iee|G4VDKwK3 z8uCCMnG-G4Gv!tJ*dP6t(9H~ge7bWg^OeS~XzjSwC-(GuA9Bm5BSDJ>uU$*Yn03Hj zdFuj5zYQ)&qUGrXNu_3mz;QeFW;VNxc?%5Z=^FO z*Pe2(qIEoetpDi|`Ab90J)SEKO*WlkjE_yywVY5+217aH!{d-rbBs0~jUCEHWH%iW z@w6)ovcuxyi*nDy?L6%bOKFn@!jtCWIHnte+lN{`2529{Xa7fDb4z<@NB;3l#r?hr z!r^9*_e+BwuknTZ)5M5W)s;zS|K;;gof8l)Pw2t+FVAYKz(O)VaF4yz8!ZxwwSle! zzn)BQQfj@iakaNmHSX7l54n>g*a}lV<~F-Zc6vy`DH%ju#I{=OE9VsZgfLaBLs6VN z8=C;H#6t?Jb1{bc2dHU>k|aqohcv;BRC0%;4nsC6@y(d~14|uu00Jr}*tRI+@@?|k zqc`3!?G5m4X|UDWV~+GMH~~*21I}r{1!+{V8hyC#kg+Gc(g~R9{JDDXu`|ObI`!$Z zx{x1#z}Dc@gBT>XME7z12Pn_m82^(Tq zpK{nPIXW%TawhGohACo9TPv}b_S3{){0NiXwRYz8sZw~tenx43r|Ekl6$V*|vIQ9m z859)k!wZbamQy292~??lg_D8iA`bbrX2|V3A*=Yn57g`bCQn7&jZEyFE$nRn#iCX#|EnSfqPe#BiHLT= zvv>4Ogh+wDTM{_t?cg9O$lvxUGHMn8) zcO~L+Ce!xobo$uG%j+SIKQjI>LwF_wMJs9Ny23`dP=7*HmAVt7avdFPVyZ$|0cP;< zPYu^VrURn~l*t8Wm=yOxKbLrZn(jhwOyu8!{ScNif+DyEx0BVjB1_e9=^#7wDXT=@GpOXF*8e@ zU-uzFY>aTlJ-*~{4djZl`Q;ZU&y_K~BfMeusw-iDQ~O9$P0S$AWy@=1GO5(^BGK<{htql-Dh8x;Y7f9>m$6660u_#XoVncm_m&@f;cNkWTks5CKKfM~Dpd!9s(H(2nRN zcThOXU!3DBy(rvIht-dfa0jQL9&h|PF_o=Hxr+|j5M+R_f*H^Kf7`y04pGav`0nOl zBL0t4JO3>M2pTy3)9d*?v}5mR@_qdmkQdc0oVA9~zK&Lx5`#Ji$$smnAhL=z@00LD zJM5{~nN;PC>T?Z4qsA477UqcyM&d!j6wwspY*L_VYD!{I%<3!d7lA=ZNx&pE$uE`A z&IZ#tb9@4vJP|ItuA_6%rNYq?j+Bo#xZIAWHe8OT@p$fcgTlugeM8T%1Ni;Bauq8?Mzxd}+B!s;W5*1Y_ zVM!7$njXK9{G?V0uxw8Osr4y@dzA7?yQlyV*XLn>bffIC&E((a)-)4gRwZ`Al&neS z_CsMvlO=O0D#b)!?#(QR0<=h@kJ@^S_z`gP2WR>6TNm#?VlE*8a_F0Ku=9gNzp*(H zJxse?PNq0d=-8889dlL(NYkqAVwD+DZEr)6$3B&QBPhx662GBGgFnzvaDy~B-s77f zrN5^f(`v7&M?lz+j4WYb$Gjw#vpaNn^w9oNu?>%@DDlpY5UUSxzRcgw^j6Ynie|{D z1gCtop4}Tb7(9=(eB#^MF$~gI)_2~9kx@!Lt%zUZUv1^zNkT4B5?pfz0@cdU0IdQx z>CX@J_?mCN;#D@q5BjNu(6t{YVzcHMgJ+Lc`m5uaU)9~Bq$XCrw!~wDzKNNpwppwv z0{Q((O4XsOaUpVa3qxiIR8uYNx+(p&>CJm-{ML zqUor^Y)(@)LjxruT99hVp%+Wr+`3KxT~9QEs$uKxwxiQ|+-rBs1?f98&081tr(IB! zJ?&N%5&Ms)*iH};?01I4yPlKH@IDeUn9OwW0~i(P@S`b;6SG=>VPtfmEK-5IFc}2) zxk*At+Inv9Xg(AlJO^sgCVvOlkNb)sbKnopmdrIQZv0~=zz)r%!SA=f_8$Osp zeg*sh%ZLoqO@<*CqRVAHGkn5wV@6}iAzt7>zqNxhxt!{$FO;Jq6Z&ChdbfS!27LVR zqY5nlsYkWPww{-)ZE&SBg1}`sfvtq88 z>6}IC&MW7Z_T|mPE0=f9$@p}5C4x9@vn8e9e*%+J zCLR=)>1Q%il{DdhVP@grlz4B!?zii@{XNsot!!vm-dr|&V;*1h45Hd^R)nqacGLK% zOB>G0fYsDKSZF$$N_}46I?_s1FcROn2`NX>ipG36i$xkxLcgp};>#L^bD8LCy>!EMnfzBY50l4d=Q1xb$1cNVxG2=&- z)dsu^b<*vyMA9bc=du-ZEeZ{(IW-V9R6CR^@(bqRi)s>zGNL+^GRXN0!phRZTFY*2 zc8RZS_O)TszO*_Z!j^`Z4sUQsCSj%@D7`afvMWw>B}5}6XAYtS!am2A(*){Gbcy28 zSOyC#jffie`D}iWK0m#Eu{VegZ^uu4!dQ!L9cES2xN>}nN(-kCWe#TpU$j>0xf-B4 z-W;)m6=1o#gvc#NFVx%w_6uc0hN`W6Q?fdA4Q~N~^M5h+4osRwjhbcJwr$(CU1{64 zZQHhO+qP|^@=a7$*K|+x%>8EKMn~*laN?YOHrBHq8`_Q%Ym~L+7>q0FUk{uD;n~o$ znrp9I)(&TmX$h!W6)EU)1obHx6c*Q|)2FpM%2&1gA}r-Wq;El6SwSVQLEhYlw%Mag zJ5I4h<4q?D$v(Sa=e841pBC5id4tf-?F8GXE+V+X{6}k>3c%jM%>V|tBw7aI7g1C1 zOqvF$-$XJUo^TH*EZv;P07?`9XEFd$WjGkwXreMRD6W{m#F&92ib9t`VGP|EyPnL$ z4x`2~t`le@O7@A`&u6wM@P3G1SI#L?oTg7XvKxr7;?bZIQs?p_%pSvJrZCUD7d^H7 zskg+XWGZ7~Wk(@tH}g3~PX^&YDBD2`K5l7UkL1Dk=S;*c2#ebwzNC~y}0 z$uHZNM&;6?Xs;shDgb_P*F&+W~-t|vF51y zNZt-gXOC-xZ8thn@QU=E$JcB%$5p7~w?nDmys@}8N#PP@FdP}}@(qTJDhE)-Kr4_I%1T*fm{@6k1b}?F`>y&k|E$;v zR`ch97jEv}`wjkFFX~mUQh9SItT#L&PKFTD#E6GAtF6-98MiM}U#HnS^&X?gMJuvZ zytC8evU$7|cI7};Js$4Oszp{d=laPbVtF;ZswT+7h@bA!9>eJkTa9l7zelGE8A=(_ z$fPFRE`lIl)Wl@>)MJvi2z+wFYug;B|ZPU8wEp}XT;G)qvt0^t1hMVVc zgICsyC$YkHtV=ylH?LIqtv0a_rzFo@O)Wvr+;r=R`tsJPz_MW(^N3tIlgZMf+fmWd zNOUr~niYI4C+t?v@3u@(UQb!gCkY@|qrD$XxF2?Y-$(%7B`R~172JlmO1a$5p}i|7 z>!F@vAUAs%sO0+Ff&lhc*jM}6K!je$%1I^oieYxgGha(?A7hF)$3#$o6j2Ic;`++v z6taM%W!&P4yYJ8Ue=@L6NVsLs|5*7<$p4m=|F7$3bt79hv;Vbnj#JZd*-=CKK{FuZ zmC4(dmIAT!9vaF(a$+x&-sWlA!_nn_gHOg#+4_a*rrWbAll45w8W2e7N$fWzic@H| zjSZo17*06W=tIU!&;c&N+Vhpya5gH)u|HBil=##~54)abA{{B zqq3;h8;*)nDvoX;o~Z650Y;9_=@>8DUv$h`?~FpJ<~zTHCt0zXd%pW*gsoBR`|X&sqzb)7YfJN@%1v@b_?USIUuPIg9J^)bQuF=RJ;L=&+9Nr5zK}QY zB^Lw#K5X-);hAv-wG#aWTUZ?PedQof0vpC$Q|wcGwoz<&q3b90MzQB7_GSTw@VtVo z0SR$RjzfYf0{Ju0@EE#O?AaogkK|ti$Ck-sqFylO43r@_w1}z#M{;lqsd*XZD9FAm zH+vAU!7*hl-s{!3@l$f4avoTQ#Bed!XasBOoKK4{04bl4>0E4|f3iQ~(fd6Dixo7s z#c#ahlJJ@dLvNhwdu!(LX|o5y2O6OZGJ1=$RJubV-04zE$?8t;T>RYcph_ zr{Ej^#{t=5Ul3XP2Vx*n*ID0vgFtkju+klcWvhlPNX5 z?XH)xRpISS$EhuW3x6^{;;Fwc$7Le3u$;z5Pp+DA?~qL`Xy`oHMC2 z%h(bVNCclt!%G?+Q-@_wEUtJSip9dCK5?H8$m;o?U+BJ(FZOE=ql>_t`9lN5{6l~Q zC`Zr86Od4RBxJ*3U;8>>H5IP7|aOB%kJ?UEaD?1 zL^SSRO+|GjC0#cSJ-xjf7rnjf_kFx9vdl`lgZcMg1NYbW)z{YpH8mH99lQl#i9rpv znZdZWnjyF+js*Us(QU<@(rBDJotBTAZ+=c)mhc}_Gb;TR%Ou|t$X)5**H+QjEB!qdPhL>! z@ptnhYnz1@9~cnNy+HRt+U;y1-MVUQ)|y0lSTi$DjQ-h~EZUmG4E4#*QB-&Zgm=TCEQ)XzGgVI4)VqP5i8?G;326lSBZI%e zPQ6#JqbuVYEpd~OtKkw*#@|K@uM?i;lU5$`R4=9XU@s)Rf^PIobd}biF=ss(ohvpV z_}8vJ@`V~(&J!c36B1$^nl#=}z1x`mB=q92w#DDlzpVRujgDOxeFf6dtqXOT+JiSsEWJ;1q@(hYS!@htth9uT zLVCAV&)p$y{^{;Jh`&88-rSu-P`+t&F5^HZo>u|{M#D_s!J5DQJ@ldoELL{fs^x)Q zJk5StGgWBo6?%t+$8zVTEOARxT$7gA-5*1vZKOlXp{t|F@Rs$p)aZSp-fKhBN8YBj znr2e5hz$vM+^U6VBo4gi)q{JiGUDq;wT6nmp0BhA;J3HjQ*t()blZ*fYX@{?-z=#t zV`!Zz0Tc5+I~Ji2be#O^HJ`Z2w3@&z_Ebf4h&pEa5t;-DglQEwtGz|2GKhF|aB3AK z-)hi)ct5Ath#c&=;~@tp9OKWQZ)2t2zEJk0yaDCh)>l5(1O=i$pnQ6ebu^g>_^RWz zoN(>8ocQH7nsAiwJi+P?2^jj>Bij_)Jr7$nhlMT|`I+bTTAqmh#3pg&^_Kph}r>wOb z=SvVI*@;%X1IXEa8$5Cw2}LNa{d87YJLWU?B7$j5m@psceBPRp9!c9-*ynpBJvg)X z%-`rAQYYAcU;=0<5wym;*$jNGB+09}+@?>yErsC^mU9b2mC#RT#^QPC+DhQg+~r1G zMYJpQ%|eavaT<;)!r!8)LwK;DJ(+#sF>$6a1lh4IoxH$V8EB`b3$jKuOzr)R)H}^) z80j+ctT$U=Efi)Kpc7ufqD80{$(Xe zhv*=lB0tfm!264V@yUW`dTJRh>obsRSF9xB-Ahx!oru2$^wxjJWJLkqtWr94( zf<^hn&ct-4%^MsyY^}k0$I_xacePs1y2_m`*CPr6!+gjd174`|<=&sTPy>8Q*@V57 zQsNu3k~3Md?k%j1w})GEuDDD721qw?^zK1*6%wrA7#%C>lg@r;Z9>5YjF)o^bt6ah z6wWFTOX^y)+A5ZDT<-42T@JJRln&Tb4iLxj9&?fiKS;3xj2tiuc{50#m?TPoO&+<% zi?AaJ*CWl!k$MsJQ1s#@Yd*vm!9v+%I1SOIChsFRHEncuP(nI8~5DaVXV`V=3 zo9N24B2Amr^>c%A>$`)*eW4aJnPZ@GyA@1x2zU9d1_%6A4yNyyvJAm;U!4LOQ!{E~ zYBld}(dXldoYB?Al^oH<6CPscQ{(QV^_OpVaX2oySJ4R5UW1uEr8hp2nZk2qAVRbTl$qovx%$7!aylxf1O5f0!pM}_Ga`Be}hy2Ep39t7xPxrk@ z!xn-CtGD2pjJ%CV0Tuw~Wf&_zVPCgeEr=&OqRf>$Jt^UZN3gy`TvOOhQ&i(vLOZ<8 zmDIjC#}U?Uunv!uW0|xwr2R-?JH+P_h@e!|Gjd-T)Gtut6DDCruu&c)yNt^=BN?C; z`b7T*f0Sbb(ce{mlvB4k4amn1ahU((>YLMV;;RGfB@1@&jK>hpVrRlVl4)<@oqB~` zzL7=2%#2Zr{<--VGFjlb;c?~wuyZldv6D)8FrT3v5b&A}r!)M!)kw9~&Mt{>vyjkw zL@J}C!C#F<-q)3N?rrrT?bpMdCSqoZG2E?S#z_J0#yq1W0L~^05RLs8uw?}6ff2M2)qh~Q5yCsx)my- zl&6=5e!^y1rk9~^JZG7wmwYd1WSOFO?&2r16aU7KMh_-0$N?DQLMxJj7saI=ajt0gdOer$!9 z6*6xskX?4J2>jeQ}+e``NkjdZjLN zE8s>MwI@JK>(>?x?!ql45XaA~{bmn#%BgZWnd&tH9OZ7v(e2zS**}<%R`|u4kpCsp zSTGKGxN1gT?eAWYcklGenX)-XyC3TFM~e%pGZ$anZnQF97MIkM7=i69{{lJ3RMFka z!mA%nU5m<@<&(&wxvQD5Njpgk0f*k{rd-TQGyVxn9db@ZSMEC5i!&=crlG2K^-Qb_ z_epMadBZ?CBUr-=wwg3t!&59>#c?dE_RWBg)J#1E)aWFRvCL>r6srR3g_3(WOy8At zsUrh>)Xj%0K8zK3v?clZGL72GTdqspxvn*Rexc4I-ClIY6$f6K8z6O^6^28Ju{-8- z(cJDL;~ADA=)mOV@My1koNE4z;bM<>x&bLkkQ#tiHCqtHB{3Q^-bsQt2vVQ*1XeN( zOSs^f?$H~bL^Lcpz~uiK_OycN4~8XZ&XZz*OrWo0cloFCjsCbF${fSy!VG%jW>bQm zi#fcN6WTl6S%p8#O}CJ;ED6%O7h?VkdE&|g(VH!qrPyMUsUADrNj?B2O51kY66LSk zzyCG!H+sn|oZiidk=eFQron`WG@_r7W|S7{+=B1ZMoCljQaF}V633{NReZ8Bj4bn! zwY*HL){JAEkvd00dRQph6Hr{6O$G(C79n!FCG#x`dy^?ObIhM_*^yzCbjDot1tHV# za%Ohon!ERb`*lF$si&?@Cp*E+haa_7n?akeRdc({_x57?2>&oojVzs^v1pFS)I6GB1!EIMN`AP09T00~8_C|`FB5LiQ*579rKb9YI8#XNJ zfB)kmwVKfOz7rV;sF(h~ZHoEd8#xJQBfJ0m3}{RX+E;C@>u`- z{`$4*SH9n8ZQJ$Ne4mFs1uJ%D@3Vi{fyc$}L+*>;UkC03{)^KwhXex9z$njpP==rg zG*8VS9C(@|*h?rA4Dew1 zv7l}EZqD864GbR<`LUzIdQ6}1{PFfgMm1Zw-0;F*A2{Cx*)lDmW;0Qw9gp=$B16}y zWsx;=RdK)#6-njB+|sa+*-`9!7w=)R$fd#0&rLH{m$^dtSJwlR7aJL3+177|EQ)rd zPAr&DQ#1U+gaI9y#-4qQsnPr|!TA*NVo!|COp`y=jT1e{#61;Dx?;w&$U@r zyN0$!n;3~`KgH~qN0x(O!A+^|)~O?7=>^zoY+*|ghnPj7;>k=)K?bZM*?m{ z+?h+++vzqXIJ$>{Gp>v>CLW3r0p>EU34*sQGJ!Q?pQFxk0peJ>mm~%z_y)}mdXId9+Ff3uTw`b4MH+ksC`-Pz>5SXqW{X z6)Bq(3+4u@rBk+TQ_{@p^u zZqzT6@LCqzWJ0MOkre)#Kc|VQB&)*G%?{2Zl?Jb>ejqYvKCRYYGFFwIdmcR4e*evi{hu=@m z=W~b6^2%nsN9Gih{E%{mxsfj7Q~uI<sOMjC`KA|A4 z$!JJ(!;wCv6ofuSpXHW!cu10E!J7}0=>!83GxWtogqpdG6J|%gd%b%{7i+!Z+^&f` zfV(b11>)aW)PVx~L}c3Z!&=PC7`Vqaq!i);E9QMbl2TO40J6EtlCBO!iz4#`s+yu; zzll6ysR)6z298b7SS?(tF2MlJ+g6A<3G)6t1H!3{0Npgr1WLSN;DbU*@{HxYMhLlO zxCJUJ#}(-=vW6Gdg5@sFty$op+_`o!;%{42+TPP}c>l0nur0*E52nM?5n_=@IAvND zEp#Re=KbVy2V>hm;Q~W=S3J%=22Cr4C$<`q*5|BF;;2r7u9VoWl=v;QCPps^MyIyx z=gZa=OyuS>Y~-i|nu(eJp+LDCoozU;y)3CkX5vAP<-P&9f>+e-a)~vPdP?G|G z{wth@H95IV=3$80L{^e0dt!`zu>m=lkKsY!as%9omNhS;=)mcIwKv&bF}tZRp3jTl z%grZwvmL8yt&R<6N8N;+s8mbcuAC#Un+}Upl`uo!a)>KpPrMyw+KAGqhE2}f_a{?HE-byfD#Ak%iY#+$qp9} zU}~+v3a7neqH7yIWQ#o!_-85fQoUAXCh*vn;6~-U=Zl+YDE?)N!<4{fc}oAU+tzoV zfIL-?S$z^(eXD{Hf{gjWpt3J6y$t$HqDC{-kt&?0L_!ReuLiR6*Ks#h<#1@PcNS6~h}R>IT&TfV zXyGV=a8#0flWf=Md^rkf4ihlF!Kz>&VYcO0MhfrB6?#{=0=mJr+3 zEmFpeG?i?r<-rz-(HeFodD1*jIOl@Ufs$c!WI0M5rFX3QB~-Bu^+W^+6`80N&y1@b z-rkxdkKF4`K%jse*)KT}&;=oJu`w~$NOLW0UC2}wwLY>PLc?k(2wOJY{%&bfBZQV%&nETvj*AL6{P(ur3P z6Yp6$kNU}i6FA}?lVA5?ZRMSniG564Y?-*0EatCh>Z2Gb$y>>Mz*D`Esx|odimMk-4FLH8WQJMA$n9urr z&3pai?TK zc+cb4L!Z_!|5RZ6p`ynfhcFFM;jl5wvRfxGyJ_<7q!QWQS%uC;Ve78UQ%qpOnUJ}i zwzcGLZcpId$z3sH{>8~NW2qGW!fQjNh+d2zIJx^5QCQI;Pj9hx+FVmz|M4Vs^guE7 zbi4Pgq?m>_lhX`+s&o8V7OtAQ#ng$3I@2h{)RQ3R}80O56Eeop*; zlExH(RwWFDi!NS@kMTF`-&D{ZOz6Dvz!b9ZrF1{eulCYDbxvkPCe&-Q7 z^_cG{;L9)@&KMeVXk*0gOIj7tb5fc(7!6e-g zsU^&WOA`Qo4&`u!bfkwz?HgDUs_5AIh#imIKL&!lL|<-Flo>O2Y?(`>FdSt}t$=)S z_;GC9E2JBwIwtFseK~SvOqw2@<5<2K-7<>XD7PEtGWz9I4`9+KBN+5LM(q^39dv#I z)2HhXgdNLpN&@gOU>r=49~U%C(zixGnp>O2ss(Ye(x_(XUJ6DrbCm>cbQ%cEfN==`<;C$NO7RLX`4v(%p^7 zFPmVc<_{;j!i_91Fq8Df(=Y36()=OdlqEFId1clo_6ygL37DucMemrr@@(Tn>X_aF zfPUzHC-LDlBvBr=J)`w1FpS)seRziSqIJyBK1yuG@Sd9YO84VAq<0)EeBkto_ai%` z{o9kA?mQuU`1h*%<9W5 zu-F-+oJzlGGYzx&FRgB#$Ttnh7CbkqnO_kt#MfNu6$*x;Ytpuv+S9t$*tqrcW+kgK z9NKlp;@2=73U7^1)~K}VIa^|FX=#-@TWD^)yas(ydX@J^s%t)5uKzAGiUfwtt0T7P z-mKKi^G#dUFt>c)ezgnvrKHsmHpQ$lUcTG3OQmcY+X2-qK5Lb6q|>jJH=1pS)k@^d zsawKs$=HGGl&vj2K>X&XA7)ry+Tej}b!%(uc4a^CQ z>igW|$SRF-syd9J+VDx!KIps&9o;A@F#R_Xq1x%N4|$n>rrPfRe^iq$RW3g`J)a( z*6u)JqCM#Z(>0YYeqV)lfjsWTj`;(z%&OO`v8(N>bjy$aeo%nB>qmAD2{F74Wpjr$ zZP_7;*h4VcV#u7j4-C6i&>VLkfjO=-^1$U*l>wNG)I0G~2@}jRlZ-QxtZ!i=+#D*L z)F*euMhYX)1@1XwUai9C6_bxV7BRQ%=U=s0?Blr1p}%bqj2L+6bmUN0CCF06Jk1JZ z>ZXz_Y}@I+jCPiTGHkbRS?8nr&n5VeYfk4%;H4gQ6A`H78p|f)wuhEgv6c-f3ZSWXD(>VSkv40SK zPeZ%pgT_Qs*i0{RDnH!!6MsHFscXUrg%`Nx(u2Tfohf5tMwr=_***o9`r16EP%FG9 z74m%~!Dsh{zBSe~-3f6pWZdEF@Bgb`{r}SOSX9~h5B@70+W$ua{d4L7IXGJ|Iv87< znYenG88aHW*fIW3o9q8R0Q&zx^kZsUG9yB0eI;!%+hcxpJxbJAG{J=`RFy<%uZp7xs^GDnmTW8=kD zR8)Gr#Ji%QzkVL(Fh5^P{kHi95wY|hh!cgqWvhG+9@Fdcl9sm;oJzm$(@z{Mj<}hf zZh26te$sa^gP|d44^O}7g~#-IS(XUjoj|}S2K`i+K~j)JePHUKBTMoE$?8=sd%jlq zO(BxBq#%i~#hOKv@Mgh@ULxrRje(j&Cs}I2h-xBhhrEHBgC;3Xzi8SY@9Nu)Ccf@} z{sZjrcB)t({uiuR#R39i`#*RcRIThBZOzpG3)#`8X``mQhW>-V%EZ*gH>`>hi6t#^ z4jko0?WHCXjzNwJ3r$ZZ&yxtNz%zT8mz4;pw39cfd$X$^-Q;T>gS^h1PK;n*DlgrR zXkW8#EARfCsBaJG{w&ect8ssDdC(0vA~Ndg)^xe=zqoCA?g5G;%%-g3=;A)G|QOSU-8#?$Z(#i(qi z@O>vn5I!-D5)~XDS($s8W8{x9Auen^_QEqh%EX5CO|Clq>lA`#++s4GU|H|VH8Y6o zgfHR9MN;Z6$u5T=jRQ8|qI1-emAa{eb-PpPAqBP8$Yb2q=x75$@ zYv=X`W>L;awsHs4^4-ecpOd043HOibXfj(RNp|)6M{xh(exso7#`(hyV&z@+`NNZJ z+l)RgS+Obpxwr~JkNPB?##|oH~^*n4%QYjGBY*iKs+iV`b8sxTL z5EZdaHp7b7 zE6g4X#g1*lr-)!9T!rajn;7?}?Q(*kI#v-5)dtfVpU)_bJ!t}kM4swdfnPUe7e9Xs zez488Q~g0fTq+dwSg0~Ya&~DNvXzT*`8AX%78K~ovKbZfbWRQxw1m2_5nOW0svVX^ z{6J>RbwA()NJXMseAY&r4s#*COe_{NC44xlp!3WImUp!L~Zqg0ekTmT^bYT2L4pa>A z4(^v)k@6_Lo?(P6tJU%ikp@(egj4UJX`qS<Q#U*m-IU`PiNlJ__I` zUY!W1vDQ1L=$da4QUOQ>)Et2WR34G_F)O<@RaS;L=a+HdCBFTtyDAMa`z5plTXez# zzm|hdo*DbF0zgqYYqU{ri?dzRatm0*oi63MFJ~wn*cgq(b$aLa&*$dg>F4tD;d!@l zwc9-}0cZ1A%OubC>$Nd#2*UhWF4pB%Q7f)`-CCy|-r0P01P&#XMf9?L)Yq^`&&j8_ zQ3R%2H(2rY89Kiqy7?`CexNRNpTJgTbwW)`Iw3}URgxhL0tRqOLu!i4ot_~`pR5Xc z%$r-U04=1%e$n?-RvijgCBbUuJQpKN^^L+At85kQwPbne?%3t0pmjTZs4A%DI8t7y z4=JvguwM=o1v*mKWMUGoTp%fKj+1O{fZ^YGueyg=VPi*;BRG=hP|bMr$eVce$ioi= z#6aZh$eUVy;?)I`mq7w5*Tg*`ROLUq@&4HZ&})lirDxrSsLLS#Yh0#vaZ zy3^NP{p^dma302lTdXg^J!EjTsO&k@TJ_5tQ>}H$!D+FmyM`Q{$Y+piOG{$Z;d|sq z+;N$YjhH|;i*LB{_qKgz6 z8#kSApw$vBACOW*aT<8dxBc+VNFU*cU*%<@{JsyMX2<-W5B5$Yz9xO%OF$71X+4qn zJtK?XnCypuv%Rnq77tQ9(L}Mt;37&7){`XJq6f{hLWpaHc>Brd1?)ecx%%l&w8AH( zetTn=*t@EzXh*u>UM-ufiPGX7SvR+Nme|0dhovz*3*o&Wh&ahR{&tihOGx}(f})(p zFtVy2cUKzKPvFSyK55&0T=R%+Kbatv7EjbIu8YyRS%T~<; z(||Sh%}Rm7zfnLUuc!*mFPiU<@$!Uc{lu4kI7a6BM$zr`tPx zr}BGDfrFj8Nz)omU)h_i{P(S0Q|6kw9|_|bkMuF@eKPN!anLF4h6971tutF%(e3DK zUUArYj8SwBW3$e#TV2&zPf74hk~`61ody@+n|K#-4*j_*_~@ge&>8ZKYEwx8-LqApt^zxj_4bIhF>OIAG7_CT=b&oWUYh|DooG3m&$CNvQ+9_ z8b@vUlS~8*D%&6n#RPKW_g1u0@e*I1|0e0 z&j`*V(aN=aq%BRs*()q+DtS+;3wtUEZH^?8ol4Z{gT(2{2MsK!Q__XMkIlOR(yS(F zMv(rnILQiwww36_)%NcPX5TpGi|5DqJJsSae$!bE&{C_q$TxMlE&#f97sl?y%n}dP zc_Q3~-cCBu?5V8C75a;IDS}{lrn3I({QZxfVXtu$@yCB*i6*H3Gv}zPosq4rs+sHm zj!HP-ilhCE|K5&j%43rcL3M%N*w$YmFDg^&xd$&pVxp!huSD)>Ya!G5Kv}^>VhCYKNp5Mya+unjAcQ&8@7oPu`&vG#T`}4ja33TpA9F!sr zl`CV6=8%x=mL1`N;>j7sHUFrjP?$WZ6%@%%$)wz4Zl5hNb6bm@fxA&#u7iQ4*S^71 zzT-g`Wa(El+w=lLs_rwgr`@g_MEVgdciZDWLxedtx_?uzGORgwuPOV-eZ=|NyhJ=- zrOcl~PIV7axoTtP*Km}^ZTy`&c>KkPmXYESjK`8)b{%cG32RAlT-S}eVxi^@kB!6z zY`;A_T+0TB?nEUIc|zy;JJrjLElEO3P)Jwo>Zlea4OWX#NrPWt{8YK z@<({{uz0+UhTZ!|#?r6fB(hlS8XD9uffXv6Lv;N9KR{&2MGv59!tU9%P%Lcm@O6@j zV_flx{KEMe$e@482}N|#jWLt(wUfr##;wj9;%0M8leB+%39jIo-5xU(i~j*O9$N;r ze4j*rOQz&IOkvAEc0fZe7;ibvO0!ZMZI$FJpEiqujWaZ-qQMk13$BC{pDNBLJ$UgH zM*l_15s!Ug9{pZb{XGEb{0Sv)R;eP(q&fBnEb5XY z4=5=Sdq+a<%a3qn47l7jlDZ}nZ0a%ESW^wo%G{IAsN~B?5HC?Ul;KCcf$9YG=z%rn>$e!gyK+Nb7O@ z{gp>4MGF|HpY*wB(obwEP!QE1j&~x(7b7Z);=Bs07*DA5hW) zmtm7q&$_4X(i(U@yUU+(Rc`f5#~?zhAVPE(S}Ol_l~HS#z%pE@}~7i^!20R zaSClfQt1!+!4c=HQw-luXM9g*klya70f0d95%gzB5!Atn(KE(pluf?EFJ}J^ca#f& z@eTsd_3!y(59#=_Hl8y*%sKpl{IALl*T*iT=6~~s8Q%YyazoX@&DrFi8vZ{_1#=p9 z9%^go{tD(48E~A$NYX>WziN1XH$hz7lkU-?I}8@22CkuVTqg8%cC)B z+S(XJS~=3vEvqn`4{IxDYAmFVXw2@76e@Gw-)xl zxW8^)?gf9omJWbgjVU7Gr8I~`SRo`rQY}Irjp!ns_^b{ielb0!1`%R=ZVx8ZG@_xh zTv4)IVO!1Pc(%i|WimO|!_e+-Ec|+!dx7xB5#yhqDZmT{VC$oWWuzZpcy0|c25W}2 zvJJo$12;&$&|3M^&pDKS)Uh?lxCm#*EX(0|&JEr`_*)#phfU)zd9v-*AKGj#)*K$B zU^SwryNRFtE}C^5$m279o8W3LrbTWt?o(%>`TJHV$d4vZZF?_62C0Mchw@I!d-dL- zNo9oos?@GS(}|WNJ-S@m8zswh6k%e;-I>g)#ZFZdr9;xEPBWYfkrPdbi-p6u!;T7h z8`v5(p|Y&88Y@3ox@C{leOX2l)hWy*OpX_W=Tr5n6kR&vqzXXXtkTZdFGWK?n%6q7 zNzY6xu(^D98J(jXOoJw_Ynnq-b;(7lY7}-YWo$}E8SYXxp`;FV27$+Q!eHT&<;|Ye znKlb=sTJTlG}*R;c5HW6vV2tHR{s(xLa!PiZ2I?yM(j8EVq=z957BE8i--q@G6jBI zo2$6$)$`48U|#g8!+5?c3l8Dyw+ViYo@Lkr3Mq00$@;~H;5v#Ps0X9cHZsjjn>$X` zbriyQohyZOCu~7ZN;7=M%n^(Fy&Ow^OW=YZy0b=n9r^DqWQBG}&Cu|>Q=%w7gVhd3 zf5^&IysDR(H4|C;wX;}P?J8mqHD(C*>PG&6pZMgg^jK>HI6Z>F%egJuqz)DAoRjL~ zTZ*tZGdT-C{DCkpO?}P2V_;Yx$Ahg%ev%#%v%`0oKOHTtb7MbS8R)<5G+hZ0RSmXj z(r+&|={=fUcOo3lRyQ?%d&(R^_}TzoaR(nxpf}gxnAQRN~FO z#R%|nL|0H`FWMSTj}kWiB328BM|C((zWlp1SRki6P9EkHbLjyuc8)PR+R>EvzU!6W zjq)U{&vg#@n}TKD?YN)B@~gz%){x+V2q7zTT<3UZ2S#4Jb@+)jO7-`CQztv#Td#8G zz~pO)yEj#m$=QPOAq;`4Whb@th&tW4$@r+jV|-MeCFf&()WAPI6CgjxhGJh*-RPq@ zWoi_1^4|@U6KWrq^)XPloGXc~G2`!l>99Qtcj*@R1C}OiM4Hz0KVw-F?K$NzH8JN_ z&|XQ9{;Cl?rL6XpeIdagTAnvgBAYw-`(L9;{gS__u|nLtCq7Eda$=DO4c#AsH9C=r; z#XB(ebDcSsg=zW4tiwyd;Mqb)M3nLK<}{pir*Ty@aim9AF#cRej%7l_bJO^sG-3TI zuCT+6e<2;j!8#<{4S}!~0>?oHQGz573%!&0u_;nZ4I0;~eBZ1(L{hqfYd1#KS;-p= zKvbfUHm%!*B)kB%5#3O7!UlGGGXZ>x6bwBojzG-~3dRinLTn9R5jF$WQ5uscK73;c zgvi*(uyyl2E?+YL0Tm1w1Vg56;97Cqc0w5ic7KGn)+#w;q1Sl4I&_I!h#H)?vW4~o zA&nuA$QBe|BMU|wieUm-dHnk5&Tq&tH`15<$FvCz4yXoeqh^cG`BKGgAKC{Cjvffu ze}vf5-%bG82%#96Y9dK+cTZ(KSTrdAtBW5F#e4+Yjx336lC4I3N<)Lk{{+6C`nG;5 zvVxd--gC^jQl1#yyB9<3)CQGR%tbroCwLrSt2p7#&0qC32jCsCR-bXx7i>I(|GUh8 zCZ{)8XQ8b^wlt73?@8QZ2&$b+IA$;hb3~hP1euUNI*B|)vx+@|#2QMJB1QjVvD5)K=&#lh)27aQZoac1YkG$K+WAi90GZT~5nGvQh(av9X)|?4VuV|CA z;x0c+(H1B>ThUgq{D_?#RKL%X`KvyF)Vf@-pwx#tVkLK^rF-nHd#>FZ_kzHR*!|=+ zYszolEH@sJ`zLK|DM60570m7)3hn?fIgFT8-7hxw0$xpId<6TdT_ zmn`HtdE$c0vjP-Avje;Pjj6S-UsA=XDNv4A!JDPqmU~k^EX_&&9d55$zLja#I#&YOhs=?p z>7L zs)pp&cP*1F;g}V5-S!x5+0&HIsqvQ?@>JsF1l8)Hz+h6~Kv2P5nENav3 zj&0kvZQHhOvy*genjzr=|-bP3}d_9zTjZR)3u{ z!RcfV@N>fS-%VqEsWmLfI$Q^MwP*C4vT2DniyQ<}RstyVd|`22ri61X%V$~DPDfPB z4igPx_yhCqd*})|_wKVpuLBGSUhagPYus%JLTX#Ew>(K{Twx7{X}xMo^xpMH?r;0h zUpKwx+g~@S$tNczRu|ku8@8j>OTzUl8eEY%AHCG0k=N4Ws5DzTc)YT*70oUJ|FsMX zrxUeb_;Mb*{&F7spLCi2cNz3gg7Z{W{jbD8H2x)rE_-cidJvkT0+J6i@V=k~B&ZE7 zrqYdwNW`U1>gY|3E?uaNW;O`wQTMZthroe9w@X`0Lolbv22g(f0ba#2pIBlPHP*l3%6woLUPU-{AN@Y%!$ zdWX1rj=ZHM>2Q`=#5ydt@Hfr6ZZ0;TH*yWY%JZ4YEM<3&*r?g-&YNa9(fq1)g=o!O zkRS$5L+qs{Ftj{o+)`HA<_eKcxhcMDD2XOxy0%Mnz;lWwT_suc3{Bf)w|SIjT{%}3 z#dG>6A-SWI?G%T7&$3-xr9`H#eTdX!#b9K1iaazS)*@x^@VqSAA9+-vk3ZseHJ_*~ zzIU(IdT8S|GfpxtP6KLL5||u2%^l)9PbGRr(VRBFO(QvT1B9Elku0DL5$%`mII&2o zwhY|MkX^5J*~F{(@eSglyKrvyYQqfRBApb6u-#aTGQQS6P z$sstSOd|aF%l%9~cxu2ELgtIhS&Zj_1gR24|Fa{C4qlI+k&^2=qfj3j`bP6eLLykg zfhHnW0G;56Z%I(9JJC&Of67_HiPVFvEbeI689?%n8Umu2JD3#{V6h6Sclje+xe&+Y zkeHx72SN^?Tp_LT$FE2-u(yJe-s0wE;u3~M?whHl*R&H71^ zfkX_8_QITERRzBCRa}I-fGKab0fa0`v}my=F{LSdHs^ebo2B6r{qK53dXKcy*5y`z zSysX(tTgKwo03gP!q|&rvgqv ze^aSbtM?K8MyPy1mT`(7Uik$_Gg*Ai{oJ=$NPlZPb%-Mo*_i#c9*X4CJvn9el*c}W z3B2bq3Ef5&D!5`8dtV7(=gN0|RaL96l~|K~zXD8lTm?>Zx?Wxc0|O9@P^z@y_EjMK zGgOA$aBj_wJ=kww4p{`G4rS7!Wwob`G=L{5J_hh5Y_*kdLu?peNy=AY4gK1bP`D!n z9)_!jjAk`w5;Z1xGTLriS$4HxxGow*$E%ktQD8A$`7p(o4o%de4B?4<~h6g_rKiSSNNY1x6hj z9@++^FbBzPSlA)1R0-gqI~~lr5U~AoSZMkxDE{j^t1P}yYpr=tlw!Ccx#CH7FxcdfHsA38&d_dc-`gS-!S>T zGOE*#v;$M1*`+^PLsRZINmk;E(#35=8`DBUgGlAk=cPkEs^N*h~V&NL=zW&0|@YaLn z8R<-z@^V@1X~Ios!1xVs4HN{8as8c>S@B(4aRltXpkxhv8#AxP!yB?6tgZi2j=M7j z#XEtkZw-H~nx<0KhpaNl?)Y0P(CJ!8$=40QpJ4WYPUyy~R|m`*&1IYXm; zxY2K(kC}&``ts~=od5co{7t+K|MRQsp8R#v{tvqE|MY^yk7b4#6had_9m`lzGZ2{{ zjZa6arUUsUxQ~jmN@vFrMKCi6>P6+usR}oAIN%p}i}-_d6=Kv#oT($d%Q_*oh-Koj^5CsiwKFO zScxDop)Az=3T}k({|x5aH=X|w^o04J4(4kCv-=PEPRu==5}jW^miwZlQ2zh_B&;g` zWhG&3V)yUsU#`{JQ!q} zVg&O8`PO60ug!wsx9NGr1^5M0uy?=Z3kj_l0BE0+g;!c*dp(crngX@;Df>rNy9jRU zaoL-h;@K$AjMsiO*;yX|L)k$!EjmOlstRp7-V_;g@%>dVt*3{}lOqw=-tXQB-LYj+ z4~zTb6&m1U0940@9-{HlXY_)_3BM2qG=>Df{%74rm*5>)T>=*rl zAN~JFzxcN~``^PicM&#mb#pN`bs#=?*t{nH&i=)p=MD;n>o~a^xGetWVXPs5H4+ zTmKlCgs5fBE^x67BO&%}?Wfum3K^6r(#D3@kt0ECxads#@)3b(;--s~)SY$$V8hNU?F3-#)KayN-c9-E3uIEC!5QaR<)rRL8@Y?Mw@)y=Qr#Ep}Cs2-T*wMmoqejN0D;OvHmKyTz zNv%du52UGtxgp_oRErinF$If5f)2H@C#XHw$d5=1(9?ZC_%HoCuRuwtMkkzKSfG-5 z_7uXy>;nuOiU?i-hM&&cUVK4*UA3Ad-j$4IePSy=ZYZ5 zJNkh-7ic(o`sXxGw&}VWt$C&El{-SvPxHn6{Xmf9#=%Ei^8#>T(A|CCAZBv^==rf{ z@nP%4BsKUqGa}l1Ujf6;LF4b9pLV#fL9Orr$lC4tqL7EYIeqDDbJts1rl0-kXmY~D z_7g@W`(B--t1gc5{hCBf#JQ&Cd_R|;EW>*K}dmo^iOX(R#ei*UlF>v4K*Cm z2nZq9$*hL?&$ffg$*Y8e5H8adH|T*xIMx8&;1xbHOLC?4GPKGf{Rg!aTQ1bm1XYFA zgTroG@NzjZXO_en1rEFsrL^&c+>W$3LlP&mIFhwUmI-z==?&Q`CgnrwG9xXNrc{75 z^fnqAY)F!!43A#H(djk=2qfIe{H~MRNmFDJ&>HxicG03u_597|ZF<^$);j1wPV;oH zY)fmmh;9RKlPB}n>h`4$;!mD0?do;8scgv+ZiG@AO;9sp52FPW*Z7BUS<5J6hu%!` z;APLwI^7G#W6JHjmZ5o?k;?@2a%XU_O2DLlN(^B46rpUxNhKHNlXBakr`I@4r9l0O z9|_idT%SOot^0E?SMHXigu?*AGxisd)C2E?(n|&#?bjfY!0SXh0vQ8mj zz*_n#AT&YdX%EPpbgKryzG*x{X{PpmAAFLc;T~zxt~!sX-pH!ns1$B_TIu;20QwEa zsmV}c;z1;PlP5dtYA_SzmRw&>gq-i-eGYsNWI}po? z^{7T3Rf)V#s=8Z26K0F-2!D4e7o6yWuFMibc**NQ8Gp7~o|oHiP>@gVqYC1y@LX`y z0}2T{%j8_hBh6A39v zHz=nQhkLD1C6rG~6C^m%`F}7wrJCOOaS_v>02qxwKS9Dh+=rE~~t)0Iy!Q^7OnE9OqjJ^9%m1|Vb6)<#A3CA`JoD`P&ejVnJ_3!Vc-$HOtSDMGhuHxz?m@g{LN*Om4F@fhpW!zG&WEs!6pc#vvVo4&x;DdHcF_oFtK{2GU4E}#6BTO zsA8~;99DdbcZOVVW5jm)V08O|u_!7O-3X%0&FIl)@vV})!1S=3sKE4`xZto6WFgzB zo0sbwl|M^_xm)FT+cSB=^qaCrCYaNqXu(4vy&oug5!mfe>g`yP2Po5HC0qpQ3z1&j zxt`8E3AF`}2QrO1(YDU$9D6of(YE!`7QRmSJA==!7@YIo?f|SHcN4=cGMIV#(gO=- z)V2ukc6GJ`4&=e>BGAhb>vbZHLj-5^8#GQ6Ks&x?WS4W>dYt?L_l2Q^NO#c80jV8w zzG>Af&gL-UdTq=ghdJGiDonj7_2|bW+m+hn-4B&W$kf9M!~^4FF}@-<rB2-1GUhWnGM&V1cSUI#nVL5$=6aSG*kG;QlTt$r>}fHPMKLtJ1za_U`WI7G=e1)dteif)3|6OhVRh&9FIJz1CBR1e) z%F|pm`+q+(o+P<=03+$xfjKOQ@~;1b$dgQ?(cFnSwXLIMB4Ci*QWC zy1Ha&))(xx2J;ec!4p#=G0A|KXcXKw8sp5W2N~IM^bT83(wu`pHilKqt*yay=B~l0 z>yT(ym8++-Z6^5cV!3I=X7zVen`?azy5nP5gYv{_Z;RCYr#%Hk2McXLlmR#7z z>Zi#87F=n$$Yx{$I4x&KwII07&AuN+Zwh&Zrihs zP|gLv43kAW%~o!T`;R7|^X)WNMu)!c5tx_BW8KUn1s08htp?eCXY?N_+ zjQ({Tk|z0C1DGyW%v6)VhME2m0h7UQz>23i4{fu zofR#fpig-C)tTYqb%Eyv#S{+vn+p2a!#fbYL1Vg``Kbu8WJN~p$f;VM2AGS!J<$au ziS_DwyF(C+lN1hmB}~(wMRX=yyF!mszOg{sLxiHt6D5oLi0O~t0zZR>D-1sr2Xlu0 zz#4jec>OjDO?5m74QApnQ6|BBDB#x<&Zi4s}I@rrd6jw#wR9 zu*(n6NjDK@-rrX4(iSpc$c)ziz|e`R#AR^EB`lCUEfC7AN4aW!W05cfkLkQTv?!J{ zW<4CCR(l}Dl+}+-=6@CFOn9Vs6Y(L0xt^W2-~c2mCu36NfHiZ?w!2A~(QlkclqcY9 z7KOUTho2pZ+VWE!ix zCXs2r(4t(DSG$9&dPNu|@NdojZO8cx{PhepJB_ARtt*{N#PIJ_ zGF2d;+^kI8QYQ`l9%rjIRE&dxU8@?)SRN+NZnHctjPC9i3-1>_=Iaw!RWX=WC$e(N z;QQ&H^U{&N&Cj&j@UrVAjVYX(|g@4&9i`p5xy8g>TRHE%`l(Lfgnaj(X$v7l5DD)%Y$B?g-6v%#w zw3l3%ki-yJ5)u@mG0Pi@L{cUbA_$4V1;9gdZCj&8$wqyCxz)iR0=%T9(_^JZr>bgo zwbg|7Ss7hlzh;&HC4erKaL-V49s!?GX(AvjYw2o6EZKBgBPZv3Gj z8=vtI<9$9(-tt{au^>I+r};=-wby8vvDYdDZeDV{WzA~~`rMR%Ujs2F<9b2}=J8?Q z@q;XmK`U{bWmD!uRLX-cbdSx*tsPbWEqgb`ZeRj!U`o88wU@q19Q+XOYg6&N_)s=Z zob78>SQ}e+%|1T-t<7t8*b7@Xq`i zp<#g;Mi9k5h7TbH$kt?REY@bL<0Kt%)+r^4>ZCKnznCOjB{)#opb?sqw!>0i`30@o zB}myO6J1>Ft%~+Fa3&l%qVVVVZoCkM*7EY=NlcoB0T)#}x4%;g8&R1drR)NkdwIn5;@q;3A6-JP)Syzk}%PQXej zCNy1K=+P%B@`0^m#4spRJzTgjg}`z^HS;JRekyCW_cp4-A*#zoF!46#t<4Il{NGiD zQm%`^?}3(0f+#6o!Bil~gWB%-b?e4snb_Gi5?H^mvhqf8BB*X~h8-q;W1Mr! zjqIJ&z81z7lFi=1x!v=kWq!Wb8sz`!IxD4Sv7hFoD0Mo`)ONlgq|(lbCIemfnl;#? z;^U!JY5hvdOI1SQ2Z+-qSmxb?+SD^-&9F}KNfk|HWhG1DA?FW|8Fb6(&Nh1ZB1U9G0Oc>w)v#?Aq@&*Cv<)eheZb=09XHZlz5o zC_}S4O5{a@8GC0|=g54p@~7zd$o@T|UBU&3o%oiTuaGOp!d9XpA0cYyGI7-Wr>pB( zDVtY&mLat$)d+J%d{?^`C0N=0+{AK^$EIoi}sYlfMoML%Bpg3v3DmFJ?_ zb&c(bKe^u>)@HTVfrYO4^=&I6l1||SE)d09y&AKvOWbP0RywH9o@eN@a$`K4Sdb1b z8ZBeIyq?@`V;{LmRWnG3DfSZ+eh?Jd;UvzIvoz{#yy_~cxfsaF6gdwfL^1NMPUldL z<-7!k>*s$Ncxy{w-n2xh{=(?z)TP0t2j`|OicrtYAihWER!*3fnX8fB))4SA3=;6t zmyLMn2)9U=EV5Ma5L}tLAD@uotvdu7;r^MM$V%CG(-2rwI91Ng)kum5*VwpHQ>?0P z-cW#NQ>?u|=Ff8c;Y481p{i8vP%!Ud6Hm=PB z0yOf6Qwx2xr#tUT>{7`TT*Yl#2eSK3EAvYZn5PTO&vEwNziPiQ;be&Ta+I(p-*3inNaKm)IMbbnEst^D+PSe5T7PHWdfHt7kUt z4`t=Q0{Pj~n%6%YCAgeAq!YK0^ustGNqH2RiM_Sx^k%G2qibr*{sRlXTZJK8W}R6%xXr}aXlLjp2JmtW?Ruu?f{Mw;@$UAs@;41L zO#BwSpCip)g9b64N{JQSh$f6K)9R(--A|w`&4_^8&#aLrF~>_k$(BA4!uWd!9HfO!_ed73iZ z2$SE0LcW+{BNT#$12GW~b-5-{2u3)yHcZl7h~?VxG{^ho_ldqtcrS)G@8plASseye z;Gj>sGhhCqx(336N8*1@cUzovh6VC9JS2Zi1z}qUSQ&LQ z_DV`+#r;!c?5BVn9rLlZKNoEqU0XAv0tFYvJpeJ8a1br1h1@&KTb8g?L+e;#j4h;c z@7($>CV-22YsBQCMrCi>Ehwso3Z6kB#Ij_7+}g<+hJp3jxYdvMfez!%~`?op^o>iIDg$i$F?MP&B==qpU`R6gjASJM_T~iUjkNfB|Y_I=4Qv{uBi;YBwyqKKkaK*Tpk2X zsg{GJ1j_HR=~{$o*a5eS6Q|7a`F){bn%w+>W8}{`=`(~4D0Kkvv4TT*yRm#{{=b9A zcNCaFXTFHO1LyA0(>nx%(XQz?&a5v=I2z$Ro}X0eYXrujsRKv;y!V%P;~uL{_*@0L zVL}`u^)wKlSQs-gl7SdjUmnLlyV05uct!*d;GIx-S#a`+keD}35mi)S_z06&v^^>~ zWQ!6gUKo_|CP|lwWMRu&Bu!h{I|#&>yrdH$wW~d{Ni71=qv?$^Q}PtXs6LV zUwnr)0GKHAG2vT~FD!}MG`{O{aThL-aapm9E~3eq^eL8EXUH$@mts%4lsUUp7OJ^E zb{gnR%p+oqGkyUw%Y|(L0Wabr(_|>JT6fikojU#hD(@NzuIZ|AuBKnFCW#Cz}jFKyi@oK#WIe7GY|Fj z1ysrUBu7X?@ie`O(~bgxnwdJ5z4z)a)xSLHjt)wsf2txsS|CD~V=9_4O14N&RA4a{ zeAJd8mKP*`tx?z&KQ72*FG%awhxZB99dNjSf;-W+Pz$c&2uQu%7d)U*Q)SXaq5??@ z#gti}Nb_*$^kz}NQi?{z4jp6N+4ut^66auX+**yCctKS!2)-W*Y!*7J9n@MzZ&piRd!1%!dd3N ztTkE2d@QIkPn>59zFL@2_Z+S!$sa=sT~#ONH3N78CX{ZDCO_kW#V5aptdk80u{&ri*czxA^=9;`q_}cc z9cZf=Nh`OKQLUnl;RHIrlKOfy*$i3R~K4*bW}!T5W~ zHj}f{9!e{=V#ASk5@$8-B2=&burxZ#*T)Z+SPm27^#{W6Gf1(Z%u3z0l6|U77&_d= zv%T7b$88YDoy$464$ha^K#kUt0kB1#ekS3WP{lbViQ-0mEel^I``9nAa8ed9(Pbm5 zE!*m&*&EU7K!pO>`n-HZA*4WN)W9>8z>`Jem@-m55X8rBC$y$B%dghM7|`#Nu5fIx zaLjwz55)F7eM>)o7{e!u_iAa&I50H#367!o)Cv0oM|1J9JnP2f^$6(y;q}dcQv3YP9>taAWQZl-x;gA2*#29tAh`k!0#KOOinpe z5m6)4pSimk!J+PM0e(=d!ZnGtkXU_8Uj{$SKOnQ@=w`KGIv>JxMuzFEmisH_z~^gIF3@G!@8U(6HO4f;H+uv=s7Xh;gz}mXsAgXv?8z zs>FkLmsh)2mM(kY{e^(XbRh??eyaq9gaj%3%phWV56L4-U0`81gqIY=?dART+qg+3 zVTuHn1W++P8iF-ub>e?PmB$3$O@PU+ z!A7oicOv(ncsKu;S`_~GZtgEEN%D(w!t&oE+w$gaR*wHVw=LSxUMVXb0exl^kEmha z27Zzg854?V4Jv>HC4iyMltL?suqz~e{|Ati`ICIa##VR1K*wHRi3ZJfVO67q9ZGAh zmLc`R-ci?Bo*E@8{iCS6TiyC8A3> zzSOuHuZ?ia#l$E}$pU0UO~YNOG0uB>&|QtWTP!aHc!4?|#+c#g*IGoz5>imhm9-bR zZo55n_P1Mz-h71#!t&Wbtk=RI!ivA~@ZC0hln@50J^47VnJBLvL55hbB|)wb0p@$| zppICtitdYn*sm=WTGkGTW ztK!(hLrZ9ek``vw{yI^rCSKnfO`NW@lC8H_Wx~+#x1C4bMZQ6!D~}p&WsKo4M74>$ zMPO%y^JrzfiVEMvNL$tnZwnP|xKQ$wY<5>|XT^&jjRFI1S8Ag~iX9Gkap6$I+QWLZ zjDWj>xF%n%P_DO$%hc=EdzFVI*W?r+*1?VjUl+FPiYcL$S9emZHikZRgUQ9Pe__6T2-jU%dQIJno;tq?^e z#adsEym&aN>xkjX?%A{EA0~~{HvIOgH>VuonJI$?uq;Z`@CC`VnCdhG#D^YqU00ja z`nZ)4MJ%2qf>~0k z#~-Hymo?eswMSvRwz*|uRv=~vP1gj^7PT+^WnW31!Bw7eZLVIrchv9w!b-2ZVxydb zE>){x*zemB#3IodeXk0F^GQ?M^ zRCuf&WfzL01q1I3;j*!Y9Tnkutc)3HxDOg&shPJyL63pF1kkUob*5fPu;Dei?E4HA`vdQR5wwK%yFp=yXERLz8j-KWp zFp>Vo7ZBKK(yDuKBv=gAcGh@xFY0QSw&OR zKs8PAkFpms=Y@?eFJkdx)CLbsJO{WwEe2d`QEzeQR-!AtmU}Nacr7~kM~mr6%UY$F z=q%|rP&L%U!mr->$-EY3kJxT44jJ=ak5RI`owU0 z_IXT1&i?(F1l5dV(F`NSI5%~DL0qRDE3^>$dx`)=p!1CLR3szQcs5biDs9#&y8pj9hnam1%ke#gCtB8};SV?1>=kn;Q z_Bi}q=~61@TTt10f}+_LW-R?#--T;SV@rceBU?#>J2jPsLql`v-?+$FRh*FZG}hHi zyR}+LG@C%uSDl7l`9)nBX-s=Iu&n^e(;jaS6Vhe*6fw}isud+4I+^vNTSxK4ki);S zIh8UauSlsZFTT{3fe-0c?FoJ^@hkm9;_iO6A%RFx@8Q4JYES&3ljB2&{E%5aPMM0P~Hq>fPvczLcxx-EtjcpaZku5GYt3J z6upP=*D3AE|I>}vn*|rgI<#EJhO>VxuFvEO5_^g~2c42sXV<| zU!pK$K^{_EZmh75W_Jm5{$jiHU6LFt6`-ch#EXqQ!LaxkZq161GijB(?@#PLpg5U9 zpSrPtzSg$&oe}{SqqGoNm)J}22cCd8^S&pluep>t?D+IlO0v`hZ^$w|<-RxCjwDxB zaMfF`Ft!o+Vm*p!1B~#m_Y)d6K&YZHt;lLzI92YTrTdO%V%i35zK;b?4_0F4Y~9RN zoSJCQUH)J>nw>yM41EP9wt|g?0pn=KP-Qyzs@inEJR~ z@^-jO_I5keAKvjbTr?2cI4~Y>B4j0*;?d^iITa90M2|pNcOO&c!`W zULP-%&y-bB`K8%2&(2lNIVA4>s8qUOyC_F%my-^q15h*z@&ae9gurlHWMt**(_|{$ z;XQ0{uS9S+S_ZqQ@Jn=_$)u^T_Wi<5&q*e!-js1>!B7?Q6PKPbbgkAU(t{+qA$CGD zIug4_NEcsotXb0^!Qs#OpW_t~1zoG>gaZ^FUDLjFXB2aSk&)iod65PJt}1aRF(>Xx zMUU+eX=$0J&eE2($}% zm+ULBPtHvEd6urGCt3F|8nk_~|5{#D90@FpIdYcXb%l;PjF8}1a{D)A>}bh|t}gtH zW!pi>ViZaCkFeVn>lKVu*a~9s3#%d=H85y+*{6Qm)4m!*bixl1n{a()+Ub|P^Yue> zJT&#fO$@dZ4j*Pp!F*!6jfIr0#i9|M3l-Bfc+p ztjbO;)yc2lzZ+&Lr@`x;N+Pd+Ya%*+i1Us42%ZplE#?6U-X6V;1v+KfS3j z*(hJ7HKIThuV6!!%gx>1Df904GN@0s{e0s0G3ZZQtzb$m%{((Tfsx<$Y{{prwNINz z~BPwaVe${rdYNJdaA+E>>_~$N-fFyc;Srntv2xi5BXT^c6+C826JAt}i zCQa`{pwhk1Rs^VqafSs31fGPGlZsoH57q%tKNR9siy+ zzll0@&lN-+Uf^wbry&y<_9b)JZe3DLK2x#5;mm$nH`+%G`Rl2iU|&DWds3}$+{mjY zU4GqT@DqgV6L;mSt;Nu;(!?%LrW^kWGwyQ-6FuFhJ`tAeu&g5p~lr^4gJYh_^fEBiG^;@;3d` zO+6?Tp*0mJu@WSI)E=XV0Cph>Oi?%Q%z8-1co~S)J1PY;Doaxu2^l?d3DP+Hz42%0 zJ_7ua0_BRKB)0hR0~itQ7UuYVnfI!_sDx3enNenp2ewT|h;fI)O_6T6TUH-|=R)%I zH@aq!yZYEt#w3;*siJMS<#z_hUi-mR(0(0eYg~8r&x|9Zv=;`f%+RrY_lKk%{|Z`) z=&<%Ngtc&nkeFpX*KiD4;PY; zGZl}=PG;sFtT6bOA7^@nv~sbaY~^O#Y4WR{y@s!ewZt zebpoMjR@iE0wkCBKT-~wQ#!2X7R`KL576s%wx`)FqK~*CxBwFv+nt#COJ7&knzwl` z`;Qt-_|3uA?jlSz_*#Nt=qeUoh9W(*<(}k2e^ibp%&C%SG_7hplxkP4b=@x8-9tL_ z+vrg@d9P^G&!nb9N|2+? zXqQI+G-%X{W$K0ESc`<{#a59;l(Ti&_=N*pA$yIqOF<2ny$xFknneJjyUS`;evzDf ztZa=`02eRC;8+=k;?d2h7t+DY8_N>-vEk5hqGAq}MFk#`Vp16%9;q>gMPyR^++xx= zmvfOCH&eh>sqd{Z1@N-Hfrf$upI-s~*4f4jk+Jn8wM;Vkc!6F#O|y-lw5r&7hEzdc z@n-b$&qq1aR+4q+J!JV|z|nXM+&1E3Y#jjCP%r{FzrJzXCRVfKUNfv*v*gpHr!%Nr zV9>`MHM7?{!RJ}M%z(c#ghu>BGBMPGu>?JTNhP}M2yf`C{@Jk1$A?-;ec1)&vw*G3gaNac)A}VOE1sVJhWjD&1#>9c454-NhcW!~w?> z0ex5vefUQG((agvqt*c)CE$mbza)x_u#W-nD$2;P(D%a+>ZFe?R{X=HG{6v);q;Uy zz~iAw(oxU&Z>ti3H`Ss{%#(qgx71P3!sFyjAr+We%)4@vFK2TVH?yHKv+*FXn#COC zv!k$j(=XM5s_lZwkk*BqFhrFwSD+q8L?Wqe5nm{IGt%Nh=#VmZXwgB~HUZkM+8bf| zKy;JLcu4FGMR|nG$3S^k%ola*w3~j!oDOc_M(4Epr9~S9vBZbXadya%tf{Ie8Ror3 zvr&Eht8S3{NspEW9B7lA6#Yzhq1XZs;Yza|T}g+MtSi%bYy78M zj~hLjo}VxKgx~Q-E|K{_D1VxO;X8HSF;R$SL=`NVDo8-dvHH>k3*=ZhQN&nkJ=kHD zFwKT3BbZXe0GVdRl?Jvnu15Jn9*Na}AE8ja!J$YDVal+DvjLdE1x;+WK`oO=T#4j+ zS7JSw{l=dOxw61YjfDEgX79pxJ#VK%y=+3d_E;PHzwJL2EP2MNwzX#_)@`T(T9p;4 zc;xiNXBrG$C?bu<*VC6EkU2u=JJsUgK+%LQJt$Gi5Nc!@`K1bmY z9gzZL405AWz`cRVcdJ#;19-BfIO^#S2WmVRjM834OXkoE4+kbC9<#JzKS?7MtL8^< z8XT?D^3eFzec*i3+C{S2I%S6^B9$^Z;@$nxe}4Yf2@E)Ct|u~H+tAR{wrepx{k=in zp$3|7t-E@h>sujgV_v(Z=Y*c#m|@+CF5?hb^!Y@g?@%=_u%8G74@@hDMIj0GX=2u0 zsKV2}?UeqCoQOAplBB*^5lWE&_=N%@Ng}^bx;>VP-D5!j<`d%%VDjP*!2Rf>>JD+2 zpIF(`ddAg42CyL@vDvIg!^6TN@Ni)Evz7f|8O87IIeMaQrPg~}iMs!8BN@aUP7|JJ&{Z;w|MV0h({5B$T2-Q zn34pLSD#fnepj1SIDU;jMC1RS8#LKJjv)^;D_~W^#;RnN9wGm?D{p$*Y&bUv8qlG| z#l{IC%K{cA80?3!ALV?i-aslC6`>FXu&C%C#>p`Rhh(U5a6>W^qfD6ymrn^h^}_KA zh$X_!3bs58G+&>}c>q}$uvSPkb!Oq!%(e6fT2g_!FmC5Bw(qi}Mm%7PawVB8nKanN z6l!4RE#@NHO6RR~+iBjdGMgIrc1x|MQ@y#^%d$9 zdWP!$&Uke~T7h56I<7Er2UyhHns&-$OYk#l+DFJ??AD4_$r3x%G^KOsE;^H1$9$^s z%yg1dmohSs-tHSJjm``lXNk5s(*c>)X zOSKwRWz19fhy&g#R>@ZwR5~KD@;$K7Sv>NNQ>cWOS{Gf=p!sO_TkJ}gYx5=lln|Hd zE5;k>Yw7N`8uf@&9g!92agMKI3PuGWoZne?xl~sqdPXhgj`6;q1M;MvcTa7al`3Ys zPDfTEW?$)>PN(2Qr$e9t`LhAuhq?Q&{@w0%wOH(JEQW>agAP6Jpukk7nAlY_Oub40 zMM|q5v*w+%WUEvyb>Kab^7ft%E_Y4IGmPwoHrIN`jq)!e3J75;H##;h+|tBeKWf|J z=WDu9eZ5B`Hl~`0o%;H>{VYN*MBE_b3epv=i$tLwgcWIrhWTT^Dfjmt(SPl3&oX*L z`{ltRugF}cl`=s>l01?emz=Hln1ypv*<|d^k^7Y5!v~!L|xlzYE09WO?dPBL^I)o&3B9X@IA)zsw42e;y{@`5xm=Z zu=gyVzqmI4i?DZa&NP0ueUnUV+qP}nwr$(C^Tu{E$;7rZvGY!BI}_v1`R!YE&)!w% zo~o|rKX|(O+pE`SjXG6>^o!y4OJT0DM0l~p;dKN*H$*?*@jEV#+D72|!0n7X^n@Ty zE)h-GX0v~ZZ;qEV$j|~EKcI~&9KoydZjAA1R4)0x^jXS9OG%?%X-|;`SWOt8SnBVg zyn`PIu}|MYx_ONWUfDeRL#`&th|IWJJ#h5Wq%<3>Ap9iSz7N@dkj_L=i|jHYOc~iE ze@iw$dEveX&98dV^aQnvU6yB04-nIB_hIa_us|R$!`!LLw?HLPSiW;is@h`O2i@+A zhDEa7q7e2lO8R;DevA1W>)xb1k}EKuyjsrn#W;Q(kv;ZCc^i{6=fqF4Yal5keS$|h z68GKIkpG348`}|;-rs&waTC&thMG%c47$H5_(W^0VirKgMo8E+>pFo%Y&gUH{C>jE zig(zV^PHxIA^Icq7Ohu#>`L)|4N@)Y(HFDQhZ>3}pa8n-tl?#d9{I?J0_c)Op&naTo7G`$;pASI9+{F1G*zCW! zh#8uCPH0m9xQL$E<5~Lf9hxja)yy)cgpbp{p@6 z-t?=HER67~e@W2Fs+E=Wp;rr4BWcXxI9)18tGv1P0sp~#{2ykrUB2E<+IK+l$4jx< z_2Wn)F0RlWj9k^#P`)==EwyzUqnSSC*;t{ zV^Jm1z0B4V7B%6E@WWy{sju&%C{#>ZvUm0t_}4yCr8Hu6(H-HXRANgQ8;MA!7ahbAIAZ`W?*y5<0 zwg&zaSut=K&mZasP2agHtpOCR47ZuWPDY-JM)Pa{$4pk9cH2MYZXwxtv9*mbZJ`wX zfI0gv4WnnNplac6S`NoGIxwpp{c9ns^xzT|y5zXn`c{UJ+Fa7Box_xI+>e!-zK+K2 z8B~eS0JWv?ckdqyV1;=()>^|CzZdfHR*D|AXREc~#=<8R8odtGgvRI&+#hD0JMg7& z!(8yiC=-!h+)%Z^d37Jj;uuprpeXUjS>0J({OlZCero*%YfJ-zT3A$`*X!`vbW6rG zgF!SU8t69L54pPQuCC|JLd(KUU=D*cw0G%Hmty6^w*&W8Nj}`f>n^ zAPp6|!=E7_zt=wF&A?0bck{W&mMi99><*#wy2Qpw1waMCQ>5B}4gg0`*Wgm%~Y(5*qTq6b)7VGy51- zETfexAW5f?=hXLMVp%u>@b#$wk|(4lu;&fg2q$D2R^_n?0^yIsVffUhpvxf($nyR? zKS=SGS+jEQ$ogofDq| z33pWCf~1^gkRF#mqH95k06Bv6D%UEkACHEnY$v4B#Bcp+ct^Uy8vF%Vsuc=S% zI_xJkjFlF7q@X;-RL5U>oYmV)e_HR`;>Mt@=K7gF>OWi@5Pla385 zy|yIHlKW;ZJl_L({~}eN5fNnDjpzEbB9@6ysXQgrzA6s9F8=$|$b_zM zOpzbPJJsIzU%6`3O?~~3x1sefiQbTZT!47y{}YDxKZb|@^xXfr9sXOpt<#0^*VkAP zI+?k*r2J*W%5GDsFg3r(nNP0ZMQ+f5E*n;!-d0v-ACN7dTAY^6EQdu4t*xRgGFS%z z0gEkC9_)ZwDvT1h|C=-}IvS2Rl#Z5q{U+$zk1d;=jr{igCFT9P`{wf5{#lXebEo}= zs^nF7V2bU<8)@$Gj=tb(&lYL!Zb2RKOuy8vE{R|Nge?E$w{oRhZxVdLNvUhWuLm%q zgp&wfrqt(Au*Q+N3^e}_P(c+-1YV}U3*v^7{#<@F-)oTtD5dPF z<7i&^=giuH7pp`r1+a$+l|ASZ%^b5GTI5g9F8lN**}l-5^ooT4p>9^Vzp~HI^=CIC z-?%J|7z*I!`hAI?%`s)4Q8W!$V-OU~RLa=nCn}u7I`uD3(!3SLX?t5g#KalmZGW@Q z*v)Vg?`!qxFz9oiK+edB3*Y3#F-6?3b-Z(-8kZOiXTG?<9UbC1i?F5%k-f;fTLAip z_-``?^O<)@N9MC$-Y+=#$INyIxc6DB%n||iRB;%WUdagiHl-MvM2`F;!ZtTfrY>cX zf|iH<{M`kDriZm)ijyurV33TiN)_uLZaMDH(g?rOql6ex4d@>0)AraXK6LsFExEj3 z-0tsvd|pGN`cLvsR@0tpb??xz{vGK60{^A`r(+$~_e8Y1mbG3}tbApX8g zj`HK*yx0>&diHzS;6-9S+aQ}%XGgKxm!#C9b)a0zax!tP{72X14jmPzB#>d{A-&V2 zAD;$D(~q(TUP&B#HVdXDj-AgjcLP{`xFk0Y{^dJ^FWwg$W!5Q>Z(N`;U`Y&}5u^Zo z*;aJ=HK7?=cTFvOdiz)k5?iEF<+OrVJDjD+d#=#g9O@G(Jehg;W~jq|{uJawGBM-D zNoZ%vUkbmeMXf_Yp~X%5Ipy9ao|-!iz}Eb*Lo;DpHK#1ScVx0PId!uK&DI>9R<{)! zv5&wewx!%CK4XFKW_?xM!bx;5H{lEJFd4JnV60%Pl`77Wl4ba%P<6zx>dUUuPx!c$ zo2Ig^Z!@M+0pqi3KLW*;kNk>Vqkf1oEfel^JuBTs7J`tgB3$Ioidros2KqB>3*=e_ zR@|cS1VfDZz|vleHm7C>`|2`QBF7#cWyBmdA+}AGGLstIOTK!By)jzA_+wSx3ahQg zPD*joWHluqTuGj3OnagE??Z*B#~>9mvjS}}u@Ojxp5|~O;3(VQfjt920CgeVGy^Yn z+v{3o1iJN9cMj&)YG3vvCasXoG7aOONRmvITW#Gj8E-)v`?znik42Gu0uhRZ`=g*K z10=|p-HPdYW!!yIRI?W$MV&IT2aQJDxg*Q$xp|+Z6(NY`E`0CZ)wQB-#`TP|0$AFl zo6pWS>hwbT;-1?ROzXO=eb+L3CC>pdumWi>JG4eWlUq_@0yG#@v^{-84tTpr{^Q_IPnrv6uSnu4=t89g@v+7ojpf)lMa$18h!%r(p{-+gM_%VLnc>+$4Wv1Su5_8Y)Z~0 z=dg4JjZ9xyLI_ue2x(iqVF|ZW%X>T!qOC}}(J4;0!lPAEm-UMJEp|G4v7GuUOA#Nf zdT7KThQOs-es)!wHjiQ(JLx2vt4C=+L3FD&hej^INxe$ftoQ&$)%yKn&_b8Hg;TxtK)f%2!4o zb%>M*Hf)JLX~S>JtNY*H{3)DEH3W<;Q+lwItkLY$NsNc;T*|g6iebWVo`h}m=;@s| z0KZ&si=4Om;Ke4GGqrLWFLk&ArN7g7B=I8vUmY8%BDh8d;&OwS^i=xy!G#Q)6c!u} zGcdDU_CJWt5Jmx-_Vt>3nmnXfGZ=7Z9|U3jQ_pM=mx;_6@?PShR|{7u-pus7ZXSUH zyHKypOF7MImVRX<+@YGzI(n3t8yG#@W@F*fwGp`K?s)R#S6ndut>NGo1+}a2fzka? zcD;5~p^|KR(Bj!+-ddCi3JF>HkiBD37T(wjG9jiUg?&!*?PoTZTh<8`AWGstm{-ja zz2CYArCw0Nz7&3)fBXmwnn=QZWP9_`#E$RO1Izwz6aD!k_ z?#P4t_yr$W5ae(R_mTT^Q7nlKvVWqV;}pktb$91Z9GCza7Bm-RoWpj!N^=1wmeXqu zKWlO;_t7LGRSecY6tw)R(YRdb9;ncE?BN}_$Eb4q_4C09{;L-I+3CXz{l3wQ3bI%J z7j!}p@n$H3NZ1ZC>$kc0NWb}$Q&!qe8J~Ngoaem|T@ywXWc)tKGCZl;SmHKz^UeJm@*+ zY3*`?ncH@V0A^fEE=z`sYwjq!0!4+f73DuYOFWdDauj(shP#9h1u5*4yx{~yNfK+- zBC?%?WLe_C0cO&;GmDEItCwS>vM$Hm+A$C|st-l=r+k|gFWH@Y0Wp=mD52`-ShD$I z#eJH@>{oJzhbO*_HRn3wI4irsbYBnl=wRs{aot`?*mW6xUW83W2oM)Y(_QTY-(^60 z`s~^)6BqGE}$om}`BqUIn%M zoEZ|W+!H=F$AiCpQW3ccqlqESwbegMCypvQMIdBQkP$^PgOxa8trzdy7&up)biz8A z7yfA*Us@g8203Hji>OK04w7ge<_*LT`}B_&@giyJQ2jmjp;3X1@MjM#MUP&%ogx** zuWnf0MC5nPAF0djAyID2+)Ir%0qS6l>@=lT(80DWV1aFLD`qJ{w8XH;ibZwunJH{@?C5EMd`jXuaE-GGR+MDzV4)F`C^J< zXMjAVls>o)h5y;@ZwH1_1hq_f7W2?p(Q&>$EHj#i$WYih72h(3+{gX}d<>dS#$ zs_;MaPUp8v8H7_b@*b8M5jQ$nV|zumM@SdFZM!n9rwN*8^Y8do_^nLkhnyaYdvOxq z6B^oRfh~+pY;}KT7+g^`nb2xZ(0RGN7h&W&_K-W5nuhHi2rQp2izTWmOESgLYbE0w zLV`Il%{^pE;OPFw)gyIpsGaQkNZio4j_Ns9r5Q|0KcN=0W5}Fr>9Q)!u2Fsqsug)G z+4^QN(z}P_f2Nwxt}_9~ymUf>?`w36Ndoyl7)Mqj*Ttc|O^#QdC^W0y1f1P+4GhlL zLb_NCO4kFhkQ1!&fuv|{NhaeM2kY2MqgQ(CW>TOj&^Gkw$gsBM`T5{~`fv*bB2La};WYk~MPNLt82+I2@=)1y!e_|l3^(HK zZ;imFh~~b;qW#W(xeN!9CcJiz%GS?r+t!jTQT4Ate~E8xS?OVvoaN|Z3*)e)+o zdCP#f;mB!%t*M|>61ni|(1@OG!BN7JSyPa3922hn&g{eoov*0Bt zL#v8XtO(?Vv$_onhD{B_+`B3mdewKFapTwy=x=(aP1G^Ya2-1M9OP_CAVlWFW#YcRG+MI3*?! zmhCg1a>0x}v!HDB5xuUc(guwf?GfKVvcE)W;emNC?$O|lfuLe1qjFC6xq)B2A)8ED?Bg#Fb}qb`?mn;xhb`HL=H&u z56)6TT6(SyPj#nYz6OEhly{)32BO?ra=e4;Yp697EtbxY!vzYJ5SbmE?7yN}AB8d^ zP4!}W*9YVAM`kM~{h$J;maCu|7~Fp&@6f&NpBNN^@OCM#WWWMTM9YijCn-?fkop^j zc!{P%oRt`6y($BmnYLMaXu*Nz!@*xzY*mN6RIhoD=4EPhQioUc>f8!}F#88oHyT(n zFQU6CCU?sXnnd^}jFf+>yd$%Si6KIZFwc_|&2mt}%5q7Ij zir9z3BzyGNPoJ2dvG#?MuShZ3Ct?b*x>@48qWDk}l}CR=EZ5@UCv)@?I`)njkvZCX#RKIIKH)!2~N8xMKqS8J2=l{4%&}ObOyIRi4+GPM~kcwHq`K7sudAp_KKR zy3}_G*6qq@bMn!$e4a!EQgt>sLT&buKI64;RWJ0X?5imF)y-~4(uSkW!l%HgZk7_* zQt0=OKHb(`3hu`#Xve85FEfM9PDXXj9kCO7xWCE|_sSW~tx;|1480MXel4YHEqc;O zB;Vl`-0hlw=R2PdO-of{^yt1h6W|Nv(mDur+yV{rmM1OhX$_i_C9XmAejLfemzaFv zHpNm*$OHqj*2Fjz$*=bI)`T4mYbG>xjin`nRQ4*T5U`@58~Zm#+WzQjMB4hE@h^uy z?6G3um%xc>L|I=DI|$iJ`QzHRME>qbp?!JeU!Zg2r*$A?n+nJoP52c8pE^w# z+MVNPvkB75{yyBh{3bl%6FsfWBvJF>5U_0M6&}wU1Ok=v>>=SiLqYvsKcH~;n4|>7;EGS1`mV^qv0KT#*Kb~ z?lJiN>ysVLL)s`gAq{=M46Ha`GC6pkaCx9~F0ul@1b$>ou)KzGSKLDsVWW7d$U^;f z*R7#(Mt$}~m7*}J%Uf`tRo-J$7Opb^;KElI?iCQ-z5w~MVVSt(vnf&M&oas*!^b0* zdGGlKep9q@*AwTp1p38Ha4eUR!8Kr;NoFF)GCvx~<0n+sg|FEhM5~pO&7CSX^A(Y; zHuIH`EjL3bR=Eo~n@f!cz`AVdH3nRQq;F+!u}D_s>jn?e zy}6mc9f#!H)t{&6f#+{$WV8HxqR`O$N@5*$B%2<{*UiY+zByxD${axjwy$vPN&Vq7 zz}j#GooTlr#>#Kt5Th34%JO9uD?{^}QOp)XbF2wg+&af^ExU!n+0XQhm|tDkpu$X-IPFPw)zH*COyFk(vZNOxqKUmSHupwg@2=p%Vl zu;@S~mPdaAOBgMqt{~zvtctMGr;PMYsT$n&WfDjq(Z31h8szJ~%>vvt@=KEh3*f4h zqz8P!>IJ)WM@8yl!ved;6c$ken|OAw%ayj+rmq8(%ZOt6K`02zK!_qykrv}{ z!46P(V}gp(bk*PxBpd{cJ8Mr1rYiuNKP`b7N zp@p+F-VQ_tRElX!H*6(DsiECN1kTlEyEV=ysY6y2G#yZBp?VY%VJ#j^Gq^<;xh9Du znw^6R-u(@kf@{Hs?9{{&{Xu<$1kQ2NQKxXA&qc4A^WM?l+|$qC=xq6&f8j0bCHl3!4+<9NTzP6jhYJ^P&HjzkFvsTyIeW^y|D ztd6hqvb)_ZuV=G6bLCQ)^xesR10*7j#0 zu;l#@S7Zl9l;PpwRxFDq=bSi!4-^r*JYwg&f_zf}5*D3d?rNM@Tl8?l9@)}eoH4&! zC)s6kMVDHueSTW5|Kz_XDX44G7Gp;N)Ej2Ud24S>t@YdYF69h{tgrBaIAB7^w<_mU#uIZ&d5M0>7dNyv$#Q4}81>d{A-he2n zd>JZbx@FX)%hAlJvABV>5#-k%PHasyj@NA8>mb!D!&2+57VQtQB3dX zCDUE^h4CFhnHo!eZ@r(yx}6OG%tHobC-FTOxZPy)J-p8)6@pkcSP;ioGj0yGh=?r? zs7;@GuO@){OHYEYb-I-7{?9s)HZ2YG-N4! zWF05H2tv;$XTnI`XmfV;^PGI@-A5G@?%;v+9GLI4?{4e=%}n^NrR|?Yl6CJITFm6o zz3sO* z>nfNF*l@$aG&?gh+>?pwem$%=YT5c&6zM^*WUJD#VWyJR$u@)o4`ZxWFX`n_EmUN+ zD1_JK)&$T`J!%?X7XPuIci>g|H>3E&< z_^i%H6E>YDb*6t@a9w=EX4An4#co9m3_m-{AORZ72#%!QtrrcJ3xq$(s6{AdYrL6@ zoQyd}c+err4oSJ4L5(HB9qIy%)+;P3!&Cpv$o!7{VLq%ec4y}#&OX;*zX}cKZTGT< zV+~?l%av-^jrNA7t&PSR?>Zz|Uli2i`LOZhB}Yy*+UfIr**3dZasafKO^;N!Lz5jl zUJR|a={@=%ts}p}v42u;o+$FtsVM4jOWbk~$|!V^CTe~lB#^;l8s24M!ej_u9e%#c1)qhHtuO7cHn2kDh&Ip@I^zedIUclTF$Eu=0Z2ob#2M_ z{#(MO@VH&q-Xq3{GeL@ps*lj?|E8AwFH4`m@%>KyKUkgZKZW}L$1V9EwdBA2eE;ts zM$YnI`gEP9otmBmb|4@epSvOgQWw0YEEE^arU;8kS*56GAsnD;V^ilLgUNk#nD?j; z=I-9|m(wgLWpYXB`9{1i1L_ff)&eIERk117v`E%Ry6Qk_WzsHc~z2*1Y z09^&S_N-YNr(s5Vy!t)hEP2Qr4q#6KMmt9S2|z#9LR0tmG4%v{_061(Z4ECN@t&`T z9=V_uPPT~5PTO{nsh;+vNuR@p643gvs1HaSJm{TlXgBEqLyoqjm*Z)!a5s=(tA?EQ zpJQHX#-r`mapN;crcmM$J4kn)dddo(Xkec0D}X8BsO;dGnZXIEhs1$x$>7Q4sU=31 zbrxi}1`IUfE;l>}YvG6CH_xEjB(1h$$(*fZh^}~qq;+2P(E3C=G%CW9;~k#z$d;E= z%n+wC z@9J+}2A4zTx$2VbgcM7(C_2?GtXvE4f_-w!-x-N&e6ty4#0{aTnH*ueK_*PE676xw zE2pp_IC#OF8EuHxfWc?RpEK)y8qOD0)bM2`9TDlmJ7gaeJNNM=zSHabK4+6JIW|tC z5Bm5u!kdWhE>c@h2vVIcU9FNP?2Zfg7FOeNu6*k&U+qF z*&j=Ohkud1r3oEGK%G`FzJWy5aJQiH^~5C#Nz$GE+=s4lvw1igC!$qY(4FG{qV+S!DeD{2LfD2lI+J$}CZ8jSM%}Bc}>|1A)hyfO9^aHR?ky zvna!bY!C7EKQQv&@YEw`|G0PuD*qxy{x9b_|E>A`SLZZQ}xTa+ZDS$0dHSQR_zN@SMJ?nR{f>3d>)=yy*mm_&!@Kpy_ZUnGna<>TT=PY7xo|v zZo*MW*0;nSge9vcT?EBzrIXGSe!^D$l?7(YZu(X_kN3n|ge3(+Werh4GG4#sS;Ere zgGuJX&lKIDl0B-^C#(F=h=QOM;EwxK*=)fgaEaG1@~vP6==SJuXvK7TDM5Nik>4wC z@ayzaBfqzzxqkzA!Rtqcvx*z)pXS_C-rRn6M3Da(R&ayLb#rzZkRKp?^Ii6gRQ)$) zR&W(a#rw`46EG%NxzT_61hLguw$Xp~MAY@UHv3iC{Oj^Ee729$z+cR`Zw2VZ`)+7u z04uDOIXgI;o$tn{>UqhBR^a`DU*Y6O)lT)p zqq$(R)u}(S0Mx}TtO8C+a~<#8vJYUk*~S#{@A0`mbuau4iH`^u`O-a5EC+UV{`j94F9&4cL3bQ*+IE`9cQ|4$=q+z zHIf@ZJA>X!&AuzO;22b%dNCg6+5V?QIt_a(bvXDVfYNdtzY2r^?p8vg+eh(e^CKFT zyD;Qxv2Qb^wR41Z@I>bKIt70bRZq0g!};WXLVNaL50$sE8Vz7&j~c5Rg8hUfnhG#6 zBFCnkF-ok0r+i;~0oxuWa6s5r&aWIy5}3^~E*2YD9wy+lSfOB&1k<5F7jy7C^agzOP|0YfVXJ znpe#!I+41ycwp!B9j12R*tJ1}Jp;uY&*|Bdgv|U1A~}$nDE)>ERVRc7Uoehv%Q*a7 zRw^h2dbnPaC9w{Zr+i%G7);kYQ-By0KDgea2Ei#FtbGpiPorY369-VH?$D@ZFB3*g z60a1og%acPl1g{brC{V7L?Zd#W{5ZzqM;;!IK0%RO2MT`%xxw&Bn|bPpJ!k)0-%M< zW8SP89#Z&9+l$H}!r@rvKgQSu261yDRjOPF6yflc^m6sB?9#{}V^%_#f2+^bVp`(c zJE4>F9cJOLChOz2Lv8euC>7E0f)W6;itKNTl;2_$?`=!Hlt~p(@WpOP;c?mI6c?ya zMVCVHev~N=7a&ljfJ<|7g0K0|ah2M=;Uv@yOb*klRhpX(lc}0QUalVEGsK*qRH$Q-eZ+r=Fa@^?~sle zH!9Jld>9*d)e{7HG`W35kHau)SSE+LPjZ61MauBdMS0na^a(RoxJ-n2PT{r#0l4np?V> zOMV(Mop>60B86oR)BK^tCu=&!gX9(;;Jt|W^92>bJdQutxg?PiCBbPOeN(wTOH~5C zl2dhC4R4B=prn*GN3=rHsMNS=z-MZEC(AE1)ECisskqI+C30|g6-pK>wY$h*Rwz5!9=H+D}xxtMVR z6gSJJRqL-1;pdc(ieShk`LF70$5gBrhWq}KX7uANrg+A?%#()R1B3e;DF&gx>2=u<_F;`V-kZTV6zY}e@{6CrmHYGU!l3XDqZ9$rVS9^qt+BPX`EU0?)(L4u+dR(${9ZA4HX2nFr~ zTFzh;>joNby#8O5_x+F5^OmkMSmjrYP(~AWr)?91SPvA~RwZfi?tzq%ep+tK<_2c@ zqIukN zr&96d%{bvavmg1^`2pv~EA$zIhmK~d_SCH5mnhy4NG)t#=d1B}T#WrAN5;HzqT`A6 zTf}5ha`umiZNUST$X~pkU13Z|m2B9(9p~~`l8)8Mi4EmFp>yzM$Ol$_NM z0{W35#MMDp0(fN48&`;2gY@?<=^IFL zD7R)X$fXka1re!*SN$&F8QUHkx|RkA$gqGw&xN%QH$1yz;|FAil!BF-bM z))Yu4-wxzTCUaOvFgnj$4f7nf(o1ad6nBNtWENYh^ysXD8)LO~b-CN(Wo_E&LD_#^ z%YslU22LqRk|fByRY4Tps9W|(KF-`B1DlAwuu!ZPfHV2>zdRe#O#5so!c*Dh zGlU{`WpxGWlhkc3znmBpwlJjzZ`n=LUq=7FqVlVLKbs#`5Cb`l4tDL%j*InvY~h}* zigPiIqqEid;g5$;mqd?wu#!)u2RSnVA+P`T*3+Ww^#ehf2I8WbF?nftQ~z4&^o&?6 zgV#g;Bo4PTr@}@L(T_(=aBD~uPJ;O~`{XZ6cik&-S1m4eOc8-5#W+M&SYw zrFK)_U7vn`LA4DYVv+3=d9bfepowQ^HUKdYQ7VdH1??D2y?DwBpiL_M_R0(8bby^} zFRq6}8PfcdZXCCeXbjU-t|G<^#^8qe07N`#8oNw6@YA@qVfwst2RR|FWNXVar!PEC(q2+z7+TRGKdiO+FXGQwW&vB1 ztPvz?7auVaR8f011ZH!t@;*~VhrgQ;860#M_&*acU(QzLxtO*9i@p-@?Tg(>+ffu*_G~$&D~pWmFTkjp6Z=LS14U@1iDuWI3A|Jo^ag;?puj zT<*$aU&dZg>n;#Pn5k=7+L%*%R8lv@%Q02g@LS3}Nq+GpeqqBvsBC=gN<#I3Gnq9W zxiq)|eLNFkG_vwfc2TxN1h>6FM|NX)w!Ua-Yo?~?&VKO^8o95^P<<5jL&Wf&c)i!^ zYn#DOkM{e#Xc=m#a9Al~7#_tP&oMDsB?tYcz{*i@TA0g2d1;iorVAPn>HK?P@r!&? z#y!+SmdNFhX1Q9vj!SU1wLPwRHVtFlB|@KuAV=$&ULb{2u;atokMn&Ta8f_Bx zju!1L0o@lb?~vO4X+x>eCKmtYs0pMQDnTC=udCK@AH)7cH5sX5lb<|~1UC(~9oY&x z9e^FLjMRa5Oy6fS8>qH8mQAIJEW4Fjj%|$UZ)R@%%TQm7;}`5RhlArx>OF6`L9_WC zKf2gaD%G^9uKv4-86KduUoAq4}L!wQZ&Uc z;+j$ka}}&)3nWcmaQc`XGkG4Y@ylY#=tD_*}Ad_-PRbDv^HCkcS`?{sR&k z>!lcIk7!r;B41|b9LhA_qKAZBvW5f#8YjdHL2pWfv#kR_zR~fm2BOwg#p9yYB;ul% z=tnG|_t|AOrPiNW{7E6Uf_eiRI)(N8q8{I+~j#fn0NfWYHfEWvVWBhT<^l zj>L!den);wFBAHos4PPyiS?H<8%HepATK7t!4O7<;G1glL0cePYKm{c@V+x}109lw z9ow}VGQz)yzQZAcAgIW@TuJ1Dza0MtwosCEh)jnL>|QCh>~|}dcyFa0IvolV-6F5 zwYW@j#(hVdHc=ABc*mQzQW_F{LZ`Q!3r*?;5qTp0NbLpV1J*j{^@1ifaP8qdVfKt| zhj;;ncFp_)2e++g--FAWkbuZfC~kXh@bBpg7KJbzT&3eZpl7!Xxb?G;MRReO)m*k} z>ubVtO%W5M^;C@jD}B zq!pJNHi5+hV9AkMn1(-YakCGmg}|>Bv#4<)@{-kg%(oK)6!hPhWEMyYFT^2A`)iefj68I&SD_(xH3J}IpNCvjR+ zBR+8QdF2S#4(xM;rVmxb2;K4y5C>nVbcF36qLmhf2>6 zulBPnky!39EO~iQ`W%^@15IWoRD~Z;@j%Q3l*p3Ar*H0?0Ly89cQ{MpJT^-#cC z1NUs49LOkL5KB&mvlN@Rgftj0pYa49_OnF(FLS!J05x7*`Voo6t8_LV4PCIlAvBo} z%DGowk$qFhWSM=53{d=$(=0BF`pH6~#d>2PKT!}w+SW_XHcr9TV^|NKR}P_zZJ}X` zeq{Di=2D&96Bm__ASNF)%m)Tl50=auM}C)$VFWYxe=9jtrXnPy)O98luyUe7>PB&^ z5D_X=ZFi7=Q3#%4dhCx|%$v3-mBk$M!qau>)w+>@YQhb;fAsU5Vg-JXW~Noy7_r}R< zpkuQW2O_A&cj6PKy|3|~1>;iAJkUT4<-@{-g*EIl)2r{wXQwaU5^}ae!WhPZ`w=H_ z6$x+*X3dc0UNeC!M#9fbxjSH&BS(3h*v$LSCRmmkpTQt z3o+-$J+LKcHtk6B2KVf96c^U`8IEvS;#%T}K@H3G1>Uimr0S8+KWV-k~{H zwVjt7#p)Q}wD+({I`t;6Y#93w!cdejXj$*2G*&4RC*I+61&S@F&CrY zlq=J$!S-SKK$!F6N@vP`c-)txh6E$fOw)I(58959@9D>%zVLJ^bAK#iZLsjjMqA<% zI9y@vkBV)mO}E+Tjl2Q57}6^N^asYm*w8V*29l*gn^dB~2H6=qZ?zX1tAqh~U@C0O zr0G&Acxnxf`^pL~^Vl*!)Gq6-%9{_owEg4Wnh6Wo9y*fa)-r_FDj775L?NBga z6j&!lLMd9nT|0BiPU29<55Qgbu6-bv{qghA=!aljyFHgg!xsHpTk{=jd)7cK#lenT zhEr2y!wUKkb6$ahl6x$N3fe&J1oSV~9)Uy%%s%wrne4tau@HT&ba@3~^UiraG(2h; zIB^zwHkW76NW{PTr3{mb?~{g+zlb|t#IoW)K-)8;ij#%FT0c~@XNaVtUdUcv&>B*{ zflbYhtgqW6l(H*MrfK4*6|3epU%BFoqQ^oJ3K=P8=#I$R9)kcvz6*Gjo|5j`NPAWe z4QQ%i%o$LQeJEfc@-b0xMYZQbxlVVLd!y78&aZ0MRB%nUw&8jEc4;%($Km4#>I5uh zT&8`>cU0Rii}W$NV~u3 zob@-O>l2~tlc3}~k~7{H75oX2?xk0_%qO%azcDvA>Rb_ddjna ztS!$20KT=uhV=p-^MW4p0#9(^HqG!2k^KS3-p0fb9?uDbGh-RuL|!tQ2D;HmG#Uejq)mdPUJ0CqfCN!IIt*2K z`3y@Ib)Vp#x(3)wB>L`b21MEmsM`2M21aSD2cE7+WlsmLHy}aonjHvAkBwL8iS&+t zBHK&iZXyj?o?yarExTOLzRdd(MjEOwDVd*M0bFRrinVcI&@vX7#c+POr8g=U9}a_! zA{drWi2AVA4qZl37ux+PH7ZC{oOnYhvqA_ScY+)bT+iWP?A~B>6S zT{7-r9ZvO9K%S)jR7f6&;QjoNHFeC$f@@xEGZDzo@cd$69turqqd#fuYn%m*QU!(h ztq->3ta6!RB9#zTKK*ufc%+zNrapAK{z?rp3aTs5Oy8@Q%>oA~d( zi|vk)`HoYr$1&Ya74R?w&dqd=cS0+zsVUaiv>LkPuX{dW-W3Bq&B?=?R zxDAtb+ZaHFzJHLKj~zDu)s?-WK=A+LEMDZ6^cI%K`v_6n7>B*Bw02}S%$WiZ$>yf+ zf}gg`V8p{9Xmke7R{<^*$HE5pM#e_+c*|TyhccnTIY4beCa=sX64M0nJHyQ+#g#Cx z+CGBg_p5Va6G9su)=>Fx3Fq>rE%;8mhGkvyrIp(0UB8Tpo3h_X6U~PfU~FgAIrI$VT2Tn*XPwnZ!izlf zNU2rG1uzeG5>P>o0w>fFP0j4kuVXCME20~(%6hgmS02K4%glD7QGHob zap!Rm2^YKk~nrW_vw^JJg#bP z_}^rnzjbv#sErnz`s-S8k0_MV+9#tHwP!GH><1pxI~BESlWi2jB4{t`fDfQKavUFx z0K(JlpJcTuJ+0)LBbA>CnV->_pAn=Lx!9E;-&!u)W4 z3@c6JvGNQqs^a^`A=7BGEPp+M-2{J+QDau3WOYP=%^qBpZGgHNK;qGsbrSf7LYKRC z7Uh!e@zcwP)QbOPL{Ye0_NW>WvX~nyxJ)?b_e9{eIlHu)gFYw?PUS>Ar5Z5^>V)w} zNj_x47-I{k0Sb>W=d?W57$^coAB_CNtgilFsg5$F;9RMHkrGs)(tSu{ky54py`l@g z{Ufz4%}U7jLF%2#ZJIUL4BbX*#8~U8Sg*6toacg{c^203uUq^qPaDB|^}bzh5EcEWFUw>v`z)*MuUpagE`N6y z9q;f0aP6Ia@dFO=y@vgRuhT@fSZ1o{Hd<#Z5(3A(NnaB-S^@hUk5D6-s^Jsqru*?^ z2c{fAk5^@X+}eXYzl&o?wXoHp{`D^GZo|@_7U#!Bxr_OFe%!ct=3MZKG&?v>^ly@x z&`aeDw$+-@&VQ4#8a7nvbS ze@vVR|5PRnmN_x1k@3QFE|*g;Xc$VIjVemSkzV+or$R7tR8>bPU61@X8!Y{WwxDcE zFz&@ryU=XANieHFQ(7P^sm1Fi883fs)DZly7OX31et4rdg%LcJa=;A!UT1pY@#p?4 zfRwP?_Ffonbq0m5F%Qs5zIu*w4iD}lr=c0f8vKr7^s}u?Dqd0OnLYkDU#3pB>5w=w zdZ0Ua>nD!H^LP7sn;G4|AwrFCMZj^PS@?tkY;uVSatUOKSz|wWPlFIoM*iBR?IgO# zik;rk3&zmr%$iLeqxl~?faC31X8lNZtU+KZ1}u3xnlw8VfQicWw_*)@C3#VVN5Qwj zbnuoCNPS1qjbmLdAYO3iQNdAU)ngQPrcQNn5^M{T`2bAI!FL@RU**c5!2l6PMO-A2 zRmhYAnZVRl(vn&7J`^k1j6#`a+q%Vn#+4%y7F()LdK~3#47Dmihqw$k@kvk8Vw_+L zI5|TVe$;c(?VFbPpA+K}4wp<#9~lk)8_G_Y=V0lPSS|z8;qWS2VCkKUM(-XLwDBxukPQV`Ru_j$xs4?Cr*SK>K_i0XMS|oB zR^)F+H(Gl^{t|nb(zqtFDluxy_ErtN9L}egrzaM&DUho&{@)qa^b?%1Gm3Q#cJ_r5 zlHp`@L1`V@)FfM$JrO0{?tz`JdwsgB+eQnGeamQVUBeeuV|v2j&U`J6TRCJ~-{u;1 z7^T*%a?P707AzCWzQLsxZ;CSW75;)oHpxZU?>E!SgXPx8^Tl^02p4EOCQn==l4yr` z0lH{P1H&0{e^vtPh|`IG5Gk3Postnb6qaQ&D@Y)R!J2|gMjE`xpy;!q8chP34-?11 z-isw+Ze=yR85mqUl2If2KqR5~j6E-0)YtwbVfMs*$)Dh54{BJ2d{9aa#XIolTw_y+ z$>~FKWBU|N<|2Pa#p&`lC5k@bsDXcB&}!`miM~`<<9`s(Bq<6oavTX5yC5d|mj=Xk zmSGRC1Fp8O@tjT(Q&srU=#DG_B&}B-rx&@M!Nwo>@1F?6vzvju=X8;4Hu)QGeWWgw zD2l!8Kkg@f{+mUjD5{CNs`KRvvx+}i8*dV~KZFCxAHVJ(#pHJr@I%I|!}aGs^= z#2-wuFk1$Z&jd0xa4-1|1uH4QaPDO?Xkd5T-|S(V@1jIy^L@&kp5bA{E4wq*bSXZn?bYSy|0gx{|G)>ezHRhmLVx>)jQl@Z5dIUHR05h= z8#p@IoBUTUIVst~Qp*f`=yS-kQ1x4B~qqXEL0uKoe{1N*bJP>l1nDplrSigw) z`p4AuX~Nzz%t`WN#v$Kf$JFJ!K=P9JqkxSMLbtB=)sAxtTgiYOw(M~1js9YYd5Ug< z*RXyS2G6x1b{)Y#PfwD|o(?1@#xFT>un4y7sI6r1ka6bF{sjyJ|Gz#UFV!G6!{q3F z2K-^Ct0c%rGt#W%sYY9XxKFIpRkdnrv0f3NB9SbWM?sE$8CK zR9IHejGwOCNf9z3emH!@P9f7g-#R`jN%vz2iMGk_3JiqCYk*~mfW5T#@H{d?7r33> zL1b`QXe0g1&SZ8POAGPNZO0<%ons6Wh$+F-RXKpBImf`ohn#04HI>(z^d@4^xHv2Q zd^~jy$S07^#=SSt&ctGNz_Q{I>R6r1ejCEJzJk-)YO^*NiZ)3aR#&wpjSF#GpCIb| zCtKQ%d^ua;Br@s&joC z5UssOlQNBbBr%I|-Y{r?@76(-orpi>PvIrAg}=%o6>vLJH*t zjg>Key_AKMS@EG+lw;P)3bpm)?CZqIp$@CkNMKf>{$?+t2#+2wOSTM_SCKEf>UhWo zih=;K_|r^~szCJcPtoe&gF<~VB`PCLxq(7u%kva^B~_G0ak9p7^!vx{J#SBNhL@R` z6hdKFap9qfewF%@^ zNfYV@D8h6s-s&8X4!r_oZdx-aPKDKSgVL(H(e3pFRZ8|?*Y#?A;%fsIq<7@n3(3>{7D-w!1*$EXD{&@9;VS(Nw}>ZMmO2 z4Nz^h+sogh^uGlxUXRqNx>B@?xLIWP)-nkZKwaUxHca(0G%xM!En4R|=e504zv=0c zFKM{iMZ?^qv2O#(XIT)#y~2qh34?X70_$esX_4;GjLOaZ%XDts-o_rA8bJ_PFny5PZPiD z^@laPD~H?Ijcx~MQv`7Rr;!u({x1vjPiQPpC{+9t=AV&$uLS#E#eJ_S=kFain`GuK z3^ZKUR7oWA64Be{_MXx5*=8_4eyOh_?EVZ~zHMmJ8;Ch}xJL<)@x7;72qlFm@&Txn zUm*p(t=fK-k^+w5dyLkqxKnPJP4Wo@X3qtM8!vXf&fU}9=F7c|#J7G}KMM^yTU=GR z^(E{Uo9QJE>^z(I?CxuM<;^X51haK>&SZshoM?m@G_3Z>UuH{s{h&O@o+ufc9gHQD z;uJASE%`YoOZ%pr4PIei7Y&OolS;1`A@6LnQ6zO80pr5=(A~EbxLy48lOUhFDsZ-i1y?V#)|qTv5#z*UhHLZgHI6t6PsM~7GvOF zr>nDOw}&;ln-u)Xdg_c2)m;r@sxYfLbEhjF!}lz8pI?iFE3KdZy15E$FYNmt6|}N$ zC9@!C#vD%BEMXS*q*M8|#_pe41V4mg|IU8k?mfC>9ew5?epXC#>{pe_?H`#we zO;Ho9vC{HvH?r|g^IEF2Emu6(=-g__z6b4p#k7)?tLRGz=Cv-UTRJOz&jKkyQ&#l- z6_H1jBR`}dt?)I#jbV0GE5Udg5I9S$938WDwE}gqRA=y%pNZD8>-JL=?3I6rg&qcG zqDm&=uin@KqDX~EJ>G^gv64D9)5=prW|FF zv|}p(=_(hM@V+<735Jj-7Zy5ik~_|UcxoC`j=ENvIbK~(6vGgnR<;Q+QewaG^-oiu zvn+sthq%2~H?;Pm2Spd{N{t#yE@KP(^kqeFNsA`#D@&)eV@=ZcCu&6$zgzXsWpEm&^7CQ#5zRb^ZQk* zlHr4aKIKh~zj0Uha*Vh=bjuI0GW-`32NuT@U9fsHlNyP5=B5WFgqsG##t&^M_O9O| zHCU5=^#w&o!^cbDvj9G${!yomHa<{ek-wkYU($O1rb}ic5fE!EIWkEY+>2=jEuf7* zjwPni=#;70uXfOfv#(caB>!oNRAU^O-oG7b39Nxfz?DTawiHUP4O%m#91S(l9b|{c zCQHn0A<6eIi=;d-ww(_p+Ri(G_S~tF<4D^ej-bh-EPXnwL%HRuCD|kIReq3tj@Y0u z!t{Xe>;mddv{)rNBjlyImX*zX&q=&UnJ-7B3IO8_8W++clV2;KCnjr7>x( zEl>Zs7#GxX*BO%lvVO<+o_PNVP=R`rT7O*I8~WX*(%qB$_X81h`a@4%Nu4iHubW%Vrn zOK(-j!klM5cX<_g5rvXll032mve^Sg4uc;hw5hSDSD{VLJ?^q%q8Bjz>j zVL*M*vh}r{_7@HuqH_gzw#(^XkY(pKX4NHk3_8H#^9Vrd@xQ3jGw{&=E}bgjICE4y z&8u6;(Yo`6&ux1iaEGvA2Yv)ab@+N-{dCsCN4zc|>~uz2FX?MVX$U!q4Rq_a*%iL~ zp&W9G?A~63QXwo0d-@08O9nMJu03|$3~}4`ks}iIG3G8RH)N0}_UH~NUs7aWITWX; zHsI9J6tgCT_Ce;nC%CJ~`Pw;Xv}e2-IR10biTXyRLnM_^n`D0Y47xWDHkCcK6&j!p z;~a!&2a1P#hkDe35B><$;;a?pH0uL7p zXMm_T_Zed|&dZCyCgx^r3xPa4%IGmaAG?D8f@%_<}E7 zjG|Pc^Lva zHb@1FHtDKca4+U)NRBfkyA<~C&u0h+pkBZSK|AVy-8zP84dM&aSqh zEv+t|3p{qFO7y0CK3%t5ZhmGxZ}ELKDK1*w?&>|7!An&3JOP7`5lqm@;`N&$gxiXQ z9?24y_P{DeyTV^;sZY5b94RfU&~Qt`+hXM2XTmU5Nj*;FRgXO}xW=~mVdXs;^ zkYk_gUre-!uSy9F`-5NGByT2w>?2h{Gyj(nEoOKbjBlh%Tqt*N|5SKH+($->cOKnY zYpBI!RwV@kpn;=_QFe?Z;$fkga4p`@Y>j2#QB;u-RQlsnNy$i}ll6SIL2~YwOg*bZ zAuzruPAVe!`(2&OZgO=5x~MF7w&K-EA)8n$w_J_}zfMIQNWDQVr`4V94J6km^IjW^ zVKwWTu&jPHxEyPh_d7oeFn+^&7qkn`0car_n_I<RU>DU>I^PzH|eWY z_u)iKN_FO&%X+V=EEH;u0N$=PRN|3ZiFALV)g`55=~+|BxX8I#b8MHFJ=A~BTrA?t zI?imc>TD{Y9h{>8_vzcb6cqjY+3(I=c^hWE7TP5bofcHHc<0uk2!Wh{D1?Fb zUK!+-Cs>!mY$ClzTV4!xPQ+WfH!vU8YYI3Y(drA}l0yo`U$2%0dik?*1gmsR= zUJdnfMy5}iYXUfiZ3YaGQIOC|4b@rzZAWM_ZAGuSbzjX?7?0)?jc!wHe{Ao?GuQRD zyc#oJ^A$&j;f`a!7$b{wZzuCBwQl`%z$WrIw?1u0^j|Gbgm)4U4U_2(p=+NIAu-8a z^WI3Wz%>J$LceqeaEGqLY8M~w69e6OTL;6~AR*l=|P(B9o7NA!~ zcybIA!6Rp%ZIDROI|8z8;8+nuU5>7j-^byE8lg!!f}O&M=)_!INr8?nXqH`Lxc$YF zE@vZ85PwFQo-CFk)){xih@ADKi@>gtw|`xGT@GoCWPBI3t5`hA@ z9~ukBZwD4wV;va6V{b~j^AAUkxx*i?@L}pMxakkdOO3=}-Lrd4_oQ>#n5ftVhqhr! zyN9y#6hXqd;l%+HhtWk!y^PT$doYu3CN)brkwa^8CNh2L`@!lwr5}@M zfI{oieZxv_Qe!6BDP~&-AuGE_gYC&ys7tE86(E$<4BtyI;huHLF<{4uC8l zO4Ef5xS1^u3w0djXs5c4VPGGWS!lpM$T<>0qii}~+-}4?EGExsTtHEN( z&omi80YOphIAm0W+l5mPl$tYh&v*SO{l>i@{eUFW%#CBf2F-T@i9sJRUCh0F*`vr7 zIyVoCL2G98TgSIVbLt}rOL=L}u`!NpT1ULZBUX8Bc`MrF1W2nkRd?hLMYDjbUg%u& zi9E^Z%NC4jhU1-KB0Z>SMEwfAZD~Y4`85Ev^9c^I9c;U5ecyvxx{tbpL<#Acch$`* zx(5a|AEt)L2HmyI*L}yLqFQ>F1IrzwmxDJ{py--IAFk!wspdQJMa*>()AMV|`c)5W z&~bRemMgg|^9N&rhErk(O2YJuQOd^*>RA^B&l>O+i)&;5u^H7T^c5_H z(T`Z1Igv=qF&5}MG8=aiNCg)lF|pw}8uAOj+>I}cM=t>;C|2S%Odr~wbwCD+65O6c zH>dGxQh_#?tcdhh$PD;0?sRjPPJQB1_6205I%N_Xtq0=gBIdL2vz!GDBT;vv@texA zj=vM?Dx9>A8(0zPtQ<)?QwvJ{3j)%|~szkGE z;_e=TvnFYY9B68@eXwzxBC|435^Cm(x|Xo6b2~iOg~u|f{+o`$2Yc^hJL%_F=%@Mj z1oKfv?a8HQT?UQ=Ty2K4PC#zmWxTdl#LO+O(wLk@Z-T`=7tI4z3=|~zz57Gg_kZt* z&xz{_c$*X&IId3@>-)REj&|bQ6DN0BIIBQxXv6==oXM*<{cYTDO7R4%(3WN22@R=z zQY5yKi*APG1BUEKv-I`(2has39Iql5NdVQ1#bRdcbXQ*V9>Eu36XBsZbtb1p(qhd{ z?N#Xjr#nhIhzm0n9I+|P#P2DYO76jby<5QE7FOyja(}qwH@!q>AR`vL_;W}wWaT4g z6(j5BAnO{7Jfa}(O|EFD!=?+IloyX9AmVVmeoQl8@F(+>JQ z(VGoWcDQome&9qAw;C-Zvy7hji*m|Nm&J(!@T>#tsI3C&I0t{?D(_p_{wi19mRa4V zTiv!=-Ns+lhqk(+mwS42t@}Hr^a5diON4qVCjE`jVxxE!=bxkA{?TTnW@WANB<4Q# z@%QtaX>&U+P)C#RQs)fRJq6=6m81svKe!X-Lz3XP>j9#Sv|L3;ve{QP(0Ym@SCACuB z%@g-N>61T`#0_OF{QOTGguix^CmEPfjl&wE9i!~9Nk+uz&2s7=5SoNDqPVY4Je`@= zub=`nfH-b+Arv?}`A^uO1}MpxAP~V?BB)6V1Oj1TV1Vx4y;-;|$7ENhK5|nzY`p(I zdJH|{=O^=fopAc5qA6YBb7)@aVCwdc!Rp%WdAO?dJfgq-zVe}@7qH(I$Z(yA;_bKy z#udOwUdnt5L$wL@5^&1@Cg4CqD1e!)7rOLGRif8ci$I|x{Vu7!*#KTF3v;q${r264 z>Z!8jQ&!uXf&Q~_8wqx^sTZ8`$p-4O_R);uV^@@G(_y#TTKR_+^%V!y zCENkD;lL;5lYEaD?1x&<5G=pKl@BaGx>(jO#1FSW#v{TR72_o7Le4>WyHQGv=t0`M z7pjyoDijM6M*a0CLL^b>8J^cE)$)EVm^at|6aX0s;enBci@uWUfa2@jdq_+rUDYV^ z@CdnF#UOGjN05+NM3OfLcVyCGOA5DI?ub8MP^W|vlt)@ZQ9Wyhqat?ofJD$JIxMAf zu6&`83ako^a{e@YkSR5*RPJqtV^;$GFLj|#NFN8*O%+tDt-PT4wZ?}u{k--femrT? z#S<7l?5L&dwq<7_yIYXHO^s;GVnyg_oUw(rocV5HB~OXi4>FU}D5xF%f^t)p_$9}M zr0V_0`x(Tj*sTh&22j?8GhG+=GJ$DyF&7SO@Y46aHdppkkbH*igE)2Nyg&Y6ZjY;) zKO_B6D&*|*(w`ca-~huUvbH4b(;pXu_(XJ|`TV%R1XENzhx^d147n6}&>Ux}w|)I2 zGdP#>iNwiH+QPNIIPPvWmr3#Map=&B#{jI5l!nrr?b>7@ix3tqOtjN|iE71cJ8_S( zoc5Ty5MERnUOGx?A=|Oc@iM1JqpQEy_y8c_gyF|L&ooCW`B>5|)aEU8C4G&rL-wV;|J3^4+ zcZjqdMf2?8n#G#MSXCz%bIF9Lb|Q%50L&?gA0-n+o;q%bkEZML;`M|Esr`pK%Ngw7d0op#frpX-xZwywoKT5^mPE+@1q zqgN5&r-x312_^RN1I+jf@x`;?nkBQun&WPK<{tZ$g>4BnT~sKi63p`r`pw}!`OmwG za+ExC-orZFV)aU;ekXw?qFvkd)O5KKDw>iqyVs(2ZmJ^S66kzKDnM+V-2&4j`hf`e zg*2Qw+4{LB74zKv-8vy{`aSDIhCQj)^f5vPYk+obU9I=b$>4WW*A#<0vcDNfZ!FH7 zz(UD#K%=Aupi;8Zk!$ao@HkOOPqku~5Rllr%q|3GG1miw9XVE~Ggee#gn#89o7~K} z0r9?q5J!j?458jV-P_+dSA8zdoHt;xQ0+3*tJzF`HN5?xckEo=ki}lo5Vyz;OpsKY z#zW`WF-_tRcn|gwnz=}!|Fwo4NvcnLzl~uD`a$HiFdA_BL**0@EhB6ePD%QY-vi$w&OCyH{?4v;3Gwg7`WH1vLn8$ zb!8oC=OV^?k>x{yhjT*h^)Nh6>7Nu2m5DfN|A(Sx!#ZBwYj49$5J~Fz-PaY_Qtrw@ zd{+86*Vrr)*p6|0{BZckR<&ci6R0zV<25Q{(gm;7R$T*@R-&tI9x-Omy6+T_-_8;@ z&k3$dM?m<1V5nT!mWw{952qGhY->C$sDYYJTvwnXXH8%LbGkcEg1;KQpDAhtz`3i8 zRlzCbq(NeYv@r#f0|ls|IRQt$SF$XlPD&fYFvTZT3rtjynH^(A=y|TjM9hecT$oy2 z8bpx8v$)yGnHA&hO4m5%guL{u- zD(*0LEN$vjrzB1lcF)vq48D(Af<|4RjTp73r)HEk--h9@8X^sqvY#;T4P$W-Ar|YA z8xT3erU8qsdfa`Dk6_ETz#~ei)Q}6kR+JD`B9Fp-$GLTV&5GPe?oWoU_KX<9sJ#24nTrUH1t z2fbh28LcN!QlAT7=T{U%wLh);+j+8C*6c_&?NGbcq+501B-kMo?P^L7{mp^>497X^ zbK~`x->EMdLI8A69Q7W$-B-2{G&>-51(1Ea)flB$*O;{ijS%z@fXHQe`%$V*Y*uX< z#yUV;i0c#a)q4v|eP$QSV-{8&=7gWFntL>_m~g*7{R3EjqrX#*q-=xEJk;kqZ=O($ zu;DtuViSL0N*HjY^{%=`sRS}k$6Wh`Q!o$99^9VXy^H=gD zS}}oOPQ!G(!6b9aKw%JE?O{&omYbr0MbdPyH@HdGZKt#7n_vc+o}PXOMh9~biID~3rITWz+@o~XPhmRzpjIzseNc1ZVk)c*CPD~E4Q zJANsXuC>x4wq{V?vQ!y6F>G$(-w>_(vH{SWg}7IkFts`r6G<7i&D##}onD;DN@sAk zbI;OYcXlwp3%?D|S27nuI;Bff32sEcgO^Bq#ZjdfTE@ zG8fk15!6lKxkZuvs2Ni7t>ogpbk0rdhS8FYqbFEj!1LZ(RsOThQ4t9%4;=L~_cNn{V%lSxY9q zEuAVZ>uo|`^9jR4w7`v)hfL{(f%!`x{KLi4IM+2kSVFd2AxSfinKjw%IoM4FLfvw# z&IUsZYBWR$>PnGl(zHKuj#F6y`J@Cg0>De33$y$i6`7bYk5yt7oAFL|4ZBZGn#YLw z0Yd^mp7PhVov~)eR6~nq$#E$MTgA5I%(P*V^a95WWfC2JHwujpNL%|}TyqO0EN3J# zg$hedi7BoqH-5CNv{vN6xGK$mD}kWH}~>i5BI%MY3>YG z>BP4*T8(HHv{FNnG6iuKM!&gJZEl8gFlkvD=2VL(;X1IZkW4$uiQV@)twY%NdF52P zCOa-XO%oP4ErbAgMp18TNqBx!XBAJ z|L>9N7}>zNY!lZA5T7pGOI_jgr)BPx$x3eKw$pHyGL^^dH&t%VK2#M%$hO#4Pd80lGS6_z*aZQ;$IK)JQsNrE!mE|(pq+jy{^%1cK*aq zU?SJw2U=SDuaWQLlbV!}&kMpDB1Vs?(*)Z~FWSdG& z>y?T9NKHW4MTn^rrogrp+5sa@SRTwubJ?dM4T7*w4(YQF8(9&tPoG+c_Z(XuxsXii zup~{9b=9S|ek++u53C&RQb~sHT@}(l>lE8@p&B%<7m5BPzLRR=;&Qf?{^vCPY{1F= zc%>S~34qi{!WHXF#J6L-YCb-aN;XqcvD$#t!AN5UXZX}Oyi#nSaZ1%#x8pm2apRYM z8xwAko-kL))%W1zDEPT_tRfB;X@McecksSD)!<_*__=rZIR<9wOZ}A1uujKs95aIJ zqAt1Fh&#YGB!)S)YwnFHhgk?-T)yG@Y2l|>f&=q+C;K@PW$~E!7=mJ|J4mRK82TJ< z&EImf%s4p_%IbFgeTKf;H%rFrsbp-BG`f>ES^kp_sswM*e|^?m-Xw+0GGQprc&JI z%wqG{#NZ11mQ;6W#jG=hw8^h+u+DGvM+m(c43erGK{}DUvv=ZB1#RYWC!f&%_7$1> zhz(e6KFsda6!u9q;b4|}NIf*Yxfml)o`ndUo2q}HIewqo)9QP4x$?F;`bgk<(CXhB zGhMS{_IPLE*TT8XWClAsKBRv>lNPXHM=AI z+P_VSEjzzWJ8o;}p8(VUw8C0Tz}mn76D z^9p5u3H7)gS{BOwC6T>L%^l>0(MyK`chPXARyz<4O()B1s&LgXkjXZ|n{cr(mGX@= zBi7yX_42>B8L?PDo+-e;eRKK>C;Z>G8UG=p{?|4mN>RrKMG%b-LaV88%}}8mNi$9} zXk&JPgDy%T9mlAa!RpIfL|eg$upt8i`vl3bLJ~&G@jvB9x|qhL35n}nEKTwqZq`3O zW?u??;~hv~rR7yTxJCgfFe&H^hD*XPmz|Z&E6g;7H_6OPpQYGhqYy&F7m8vztxxmZ zYTeXdwsyE&bRl~;Z=mrJ^_5J8XbP(Aw8)O?gYWM52xIwzUs1y@N4d0jmep;G4Z+pWj8#b~9` z8vaM3zPw=mAFJ@kdo_eqLGzK%RE^H_vKZF-6GC9kbQQ#X^63;0^Yj>twFW!_Uk=iC$ zN@7~A6I%=*#R_NfD%C}%LqnRzGOWqkh4#n2qmSqfFL?LL=PKbD5QW)@FLX)A*0=3p zOY;`{IV<#LnbsN=Fhzu4Y*(4m?-7L0Tg6it#1&8jd9rpOyd+{7mM4Fj^7e$A5*jf1 zMbPv!0OOV#X8C9E0K1;+{6zGz<|dV+2Y(9tY9+Z8fm8=IiMT`)MU?>`H)|BcK0uQOMv0pqE>(E91)V#=I6 zVuA~U)rTU_X#AxYA@dC;?H0!%Mg56vBK{pqoZODt07!>kaPbNozKEaPrT`=Adf~KW z{u*9=KG)RLxVrdqa(c6>>GkPwF)=}!8hG_`^E$z|<}&r{^Lfd$^*lLos>lBh?|XbB z{ta`N5X`aRNr^zA%y9eF4K+ivwQ!|>`Br$$i5hb6+BoeQZeB@z_2~4^h(^EW}%1DJv zvy+p)`*_YtwM~Vl4&}#*aY)Z;@q3P`|nZXEWJ^P z9}+=SN#=kqD!9Zup+;x%g-Q7sks{^Ny46G+mBqBW)MNH`AfOSX)L` z+tgxm{{j%US8{Z+E2wO3;ZDPm5up`7QR@2qQPf-LhCZ0?v~=_-7RJJFmEf3MyGk*~M>h6Dk-2%PaC(@hjkM`W?sPG& zF8;bI*I;wzN(V(u+b2MC^)ceg$HP@y%h?C7JBGLHX~Nh9%Jj5=K|$qv9BU%$paN|q zVWX#TE4;G`W(!?^OBHxr0y^(@#r?ZLk>rZc^b>IJaDhm`^Rxu*kmW_Vl?(Lg`)6}) z`4mjpN^y-6RXLrsDmkUJ_1V#8=G|2ys4nt$Uh1e0lyWIi9CrDN33@B6TvuH5yMwQ( zgiTk8fCJi(Y|OD^D1lQwv`@vY1W*8C2J@?@f# zj3u~7dhSYAJn7PR!?kR*>j5^H9=KebcvkF9mZ7Saxylti1e`n*{E~BXTjV<8)MKR&VLnk z5YaL0gG1QWVnkf#KqG+ zFFNi6zB#-TO#8kQaTC-Hl?t`Q!lyF5(Z`=Ez0Hk4;L7yoDyr0{xDbTVwRNcVPTe5v z#SK#vF0<>vsCi!cC`#BcsLE<)Y3T0ZhJ7&Y*?szevbK;{NdC5^yj4r>KIY_;G1i-q ziIG%1o1)CQ#V6Cb`wwOoL2*_N&{oTgG5wfPpN&lv*XX4I%&09L#!*bSh=Nk`R#7V% zQ2RO?4=7+N%XiXp5#5Oxz|Bu@7m{=#OYZ!-iq8M927&O&AW&U#S#HD=Z90<5xs9o z(|33_+tF%C@gU(?vewDdB+%(pRuOZikb@(!I!*bl(E^{W)$)Ufc0Dj%Vjmg56vKMJ z3goFne>KKIyAs|B@x__drBfY5M%jp{VFU{(%D6h0Nh?9-+ zc>E!UbZ_W38m{Qo8m_1|3Q=X@_PcJlTgBeF@=@j;0baaXy(YJ1)Tf}J-hDWTjGRFI zV9rGaoVRZRq)%n5t0MOi_*8HLgK~hJFBp(*Nkx&p#!5Vy$r#luKfiu7vTj{RN2L92 znfVxI?c?DSl*bBXxu#|lX#r>tCrAuMF=d-jkTG{>e+{%wfjH)jC>ba_Qc3SZVgeTWQRi;g!?+DQ42qDVc`Z9y@ABS@5$hW-VRtrOHO;} zX7eKkYjr7_yyta}Oe`3OnKh-E5s2qIr~P9v5^DzP&NkwkP0LGpCqnUy2Rig8Kr6YE zz|JZ70L|~Hc0^5rHTe9lDtQn!##sepQW-ajI?;+NKTWFjH@cIshPdl#_^S=3Xdht4 zB0X1-+=Rxo$IN`mejdEtw?wmzfqL&-{0h@{M9qTPT^r7>pI;6BLG!(CPawTK*nJ`X z3CG_cufeNW<0XtA3f%n>W1;r48DmO05(4tWFPwF5W zG~Tcod@Q9a-ssJNT`s)yA12PkYXN*%Wve|#4R;B{3YCaI-#H=1EDM9pgSeSCe{;k< z8zYH#7f{v3kcDOLO8 zbwg@0Cac&$lYghUp7Arn*T(0pl7vBb)UShMqu?Y%e+UIvao%-RFs1zJ$H8g;d2!Ka zes>`s;g9;@$?nn;t3D6by6n!3M78C(n6XVwU9~j&O?)*!1f#dEOMV zuWl3jckE2)Un(A^=49sKQNnDEIlev5cLjCZ&V!Vr?>6a;_E3CXV#$`2q{LZ;DxzEH z)YPnXp1_zmbqcJ-1=Qj)`EBwheP|2W@MLZvSQL_vja@^p)9F=>1dxZy)2*@3kq#6FUz=Qs2yhYfK(&!{ zi*tZ8# zVe#{^j*+5Im&SWy@P{Fc5TAZZZl_d3a!L=5LFIx_UFB>)o!}f}&&imBd=`EW+lSGb zks@w}jdxPw^B5t$8D;mL_4yH);?|)$@OsJn{GJ!+v-Au!_mp1q>fL_kiQ--w+{@G5 z&rxkeoM1v($R|0UYXl zzvGKX=xau*B*;8qS%SH6+j+JQ0+3~;+h~O`^(-DzWaM%;Nc?yZS{B{WUVeH{Y znrdm+FjHm8jk)|gVfQ7@Q)+I8D;Lits0zIyE^;`<&R1Y2cG>@nw0DfIgx!`#I~^x0 zNyoNr+crA3ZKIsYZ6_V$%e&8a_TKLq=x%t0-WR0r%)T}jU%^ySy zdxb!F^$5y(4DyjQ=N>MaM1~V%3n>BUj^`kqVc1=l>;|gb&af7oGxmlmmdqTs0!j?P zTD8iXOaa2mzK9o_*eHzgI46ginqhKgh?0h=bhR8O{$Yptp;hFGw|9oekEm;5$lZHq zY=f|`nz_6h+lXZu6R4K~*Fc!|C)WzUoP$xvZR{0GAIXl?b;VI~0b zF;5jq;(eNhRxccj=zCeZ4`sSmO8Ob&lspWUf=OcSAQ+(lFOkwf|h}Lx^cBidktl4 zOsNCsh{jvO9|Ol5D~@wNZ(lnrc<}BAZ)s@On={C9&PnR4nrmcZX-cKu2v_G`e4n%b zzRl5={;Ve)(uvk&y)^zuotRxea4poe4H|u%wpGe?hplZvR&tnW@Dv88Lnqml8Lm-d zWzu*?PR@;))LXcr4f~RjRmFdISjNfbVCZv|cR4M(t-tvZ(RL@b z;9+M{dSl~kd^MNt)}EZi%`mtH!OAVJsbh47cWvy!5qnd-rVW3=dTA8YJP{HxA!LRO z!6<|$fZAQBT@=qvzQ2w`qoEk-E{o2Jn^id9iht10a?#bY`j=bCLt5cV#*TxTGL7u; z0;j8?@{CI#g0Eev9U1it@b{(CJbBqMpG+(~9`8$;1^HBL$uT~p^8JX?_n4xKhlC=T z^7F#m!_JB22r&0UGm^{nv>smID%}uIJJj=*1_o&$1fGfQ#?kx0(d-7 zMQ^a=l9$?uH+sB15}JJ?Le5v!$uDz7HwM}FLMVSvs(pW{0?aj|w(O)l$0|1Iadvg9 zn$?dz_)U%jCr9M)28B6XDR7A+VGEQT(=X_;T(u~3#>ATGo3fI&HM@>XUX*qwI%qb< z@rH2(jN8ok)lwc2at$~y=b}hWo72uO1z1oAu=rFCSNhlM>a~*_d^9k#)DPti+9AXh zS06_2AX7>BiO2a%_}{*kjD&Q;zQ&6`)TDCz2C3d)vy2W)jMzE&zeYP8K16co>=-=Z zK<>-CE51kKkLt0$9LBc6DnxEFFyANq9+i>yt+>Pv(T>1zoKF?D#c~Q=;^yAuDLmg_ zU^Su7sea4$&FFRGb5YLlr<3kgKT&ipY@2-U%DA{BImRbBh9z72*fTkno*+JnC4|Dx z_N9~l45XFD=W3fYyWo7z2KANZy25Vnd5CD9rk0(0Nb1dMoh*ZqQ|z)e?qPXNHBL>n z08_9u&flo59l`*b8gZ~;6DudK?NGIWf9zAVf%`cVjUQgHSBp-uS69Big&vmp9$HGi zO%?HjVi#<&iV@Fa1S*QTjXjbX{pP*Q8i!TVVn zFFR&%{ntQTza`!4kcbj9w8oGFhMmk1iV=()L$r7pBdUoQNO_cywz*6{sTd<2d+{!p z5ri#^={DQ0$eKZB<2kdSd5Y-TXlRyYrZY6p>vC_2tU|(*Ntq{Xd+?f3DpB&3sJy4y&O39rK-z z=FFrm)`T!t2r4KDEEz1GC1&W`oB*<{tPmg-#XLhh8Prg9Pi*+R*)I!cFsfVxA9J8iARlgb zDk$h%6%Dwa@HbX-FR+zSuZ5shF%6QqkoQQi-GL&Mfmvz#wyjG1J8O(ooF?%)U%u2j zE;cxpyq=T(w;$UivI7~}oD79<%c&mS?t?8hxU%NcvNW`UC4- zn7e}+59YM122>-CIj@+oyk$@$4L62-cz@fd!S3BbvPa}bQsN4-Y08{dICwyT~DRugG_D9=cYmFkeZ&$)ia?Z1D)=gL-Qwf z3WWRWrhH7dBKMAHrTzP`wlgI0LXme;=yw!1w_;?$hY4B&n-#Z_hI4%)Y{)s-F2)9n zxDEQ$PQOF;jflK5x_ingxI7#iBllkMcAxn4P=iDqMT*3M%zUSw8l)J7a5}6$Wtr&6 zFS}>CE1edbb@x^IO`__pS)t8=o7Eto>-A6)#k*zlMt=SA^6@dWbf}=`EUeohWWZz;>Yoj~Yd$L?;^|uEZ&Y2N|GoF+hvf z2WwiP0==^f&*yK3d)7k>U+fU~+CH2rnYTWlx*b4}!55aWmz39WlkW6Jvpp3n2P+p1 z_ayc54A&ZseAC{sUBq1|kvTOQr148Qv8Y3{%pa0BPHse~+V*%9RIb*Qt!Sezoi3j3 zn^huFUzi}fE=WlX4*RJ?1fJdEt{SiH{LShgiT9*kIbJ2Yxz>Oy?z)U@9hM9M!t*bu z1x~g3aRC}AVy9Fv_O@8PJ%F#l4NxLAx#s%tgAGt!ME>_P4e1vgTi?FAvkP%Va@`r? zMsKOLkrURTumA8qC4@ndlw+=Xgql>RI#XV2mJklA^)JvA#!t@M48dbNGB_g+EVHl0 zzx;J1RKPAyPbk6fh2>gk3?UjfW0KfBd+E-?0Lv|P&nc~nCr*1I018oy7RZ-0DQ3dF zA=+h}1Zm%)_FI%m<;Ffgj)~0_et$Lv&XMy8vlVu*H6xOfP!X53Mv<1u39mxlXhA%z z!>CnSJO7*pI8VJIn+D6tp_HyTp{dlQx#_{YJ?H2BZ_@8Pl-)fCLvMviE7P?SoY9y7GI0h z#icl!nL}&Sp=yG(=n6h(c!Ddw6(0U9yyv58dMTrrip#+x7(`G4;oDR0nx(j89h+8W z@Tjp8^q@3TGKMhWOL|?T+LQrN)#<$fSt(5y{-eZ(fSe&7I$2O!C_n1SBWO*hP{)64 zG;gwu!)UENSsZ0=rAr=zZNnNaALSUXrqdwNbn~h#vSo3?JFT$Df2zD>`s-&1jAD5M znX`pXm6zgT-}Lb?Q{Wt9&(a;%N7tcOPTnT?=BsD7bl1Z~{Lcuc0cw@d;r%@_R?PSW zO;%2t&*Yo>?{aG8qiURG-xK~g)=SA+?iUKm8lwQhIWf3C1Hfwb<$7E-nw7xfXnv zy5B>}0zNgJf1G~s2Tm%4I!Oi|Y2~ zw?AadOuf<+^i>Ww#z%sGDdsH zY(sM8OnHaj7<)H(y1Kb4((I@dqS9Ah`FD^v%UYp3F?UthJNplKtSGh_ICN1=j$lsDn|oK+W5r8nUE5a#Boi zn1#;#mEJ5dnLCZ3WRF<|>xz2Yj(U^TGU>6Dxmh*+{YLhND_}8_rmCDrVV|#53Y0Yy zz1$R}oD4yQ1VIJlgFinH{+PN=%*RgDd!wLZR`({!q>8|VJ+H4^w5e$hQpYG)9B?Ox zo38XbyVWxtZA%D8s{(|uVir=_Qa{Ll)B?j+LN+tqAXwbNCcPJ{iK_}pt!fM`axC+8 zIzzg=UsKpXPx@>ruU9ihtpa?tiVZ&)cWATVW^dW=f5Z)Oo$OaNeXc8zf_(Wx_W!ZA zU|?u%@?W>fqU5;Y0|Zbq4-sYu+`*)q?2V%8YHRz{^&5R-g9X$WPV?OwuD;-nwd&^w zN7bZzq;2kcbbzK7T=uxk5I060NFWs(@$bUI4tfxMEtu!gNOGWQdU#JEQ#I@-x2q>_ z6-?i=ma>To;g5pto(ZGqlMy?h67D@LxZ+G4d%5-+Z!bbeDT?0XQf)S^t#EZL-K&g8 z7VCC!Sr8Y;@C|Hfsud<+QNV42l5M21(^?c5CMpqI|EK8t^5w77l%N0WKmR_Li@(@8 zn$g=CTACO+yO|i$8#vj}yMMOJ{}PISea2}v9Vha0DncLp%NODQ$Il2V%L?1sI-A%! zOBmQ1TbnqN2>x?3S;WNDz{T2G$>qPl$s!f4zmCYh7vrk0=zt(n=_-7SZEmC~bq8fF zv}B=74Lxp9=1Lwsw_aZ-`WP`o9^4AtmPGc83`;M)?sYd^RVQX;W6W6RWai%7&t&en z^y~Bm)dv}eCSlA93Tu#@Ah01Y3Lvf^Z+MPlj%A+>;RJ2=_W*9#&qEhejG*v#e~x(5 zwjuH*nP`ErdX*fkP@h(S%Lgk3y9JfE&gl`&)E8u4aS79{vr;J=Zh_YjVM2sQ$6G~d zYCI!|{4Pq$%WolEi@(Cki83%2rKCs6+bzqui8F8Aegpd2tgA{rgMSC}FSKEA zcVSwHi>W`M94{}xxH;ZQUPf!CR$0(R@DW!{A##*O55@H&EgWYvBFC!7aBa;qAjmPVl5wahRk*5O((Dfi7Djt!)ZfYszHRNXf5zvdrP;|3mTtA)4u_C&-5%~!jV-bISm5W1 zSl`K5^>9i(MiTweo*07(oKM@-w5Jz}fBDrcckqK1Ny6>9o{Kej3A^_IpVs#J6m9ra zH!F{RuB~WVh$oBE0Poofa(OHF0$tRhz05)%qtG0YvHc4(_X`pY_X|wjAxqRY1Fx3_ z@*^Zb(fT;GG@793*dC>THk`aMW1b_<2c$XTk?%1b{`OM8)=XmWVWz(}VuQ`0+qIX! zZ!d>oieLQeZ!$?~0r6pb9;B=u=uDDANxLEY@LK0NhK+bXiGnH0g+%uI*_L##2oYNZ zXkha}?7^X)#4R<%BYWi4W!!~3@|!ffsHf&qp%uU^|5-+iMj0c_-EgLR%s`3VLVN3# z{O@4T(I9IR1pV@5=JPnR=>H1r3I>h_HYUy{j{gRC)&IJgJTLcqt~vmf%9o%N3cP%f zUPPdlz_JPItJ-eDC)^k6SI=x`bByxI$jBZMMX!6W_5%6G+|4>PlaMk}P0cRXHoT_N zyzELgyZqk2ZlPST86hYk4ltmI$tUuZ5OV}J7~BD8(R(=o75m;`#I3moEa4PGzf84h z(OG3gW&z0?BYJd#B^jtA7$&gJCH&|+CeT4)9^;iNve+#n1rDSjvV`j`RK5@u$K#&(It*jalR4p(EsvbD?z{uZFK+GbYNVTkIji`!D0YlJAxWm^$s z1Q)sx*N+Pv{jjEuvMhjFu-Ek&JZ*_2)K0XOOQb@X*Qz1@17RRPnL;?0f8v_Tbt$oO zG4p!@-$FTAHNHPUWjAPL67nPpx%QSvcNHB zsg;eYvW!|R9+t_BkI*6~*b%4*Bn1BtIDoIn7Of5FQEpRMKu?Y#|L^wtV+h_Ka^NBT zM>m9vi1`xwRG6@~0gzYFd11ztqYdI7OvO(dR}kqT!l0L7A=z*u&EL+~rdNeCW;oeu zD~52$WvG-Iag2WWE&ks*N@5e*V)@BY_|L#Vp8pj`|3%F# z6&+<{GZf#AJvixlEj}WVyef(uNhk<@0T?uFMHrhesFBR>yTDH1f=SA#Z7l513mNYD z%VPl7&-)cj(PL3ayUruOxnmD@Ev0eS2@dWIUN64vTb@hK-`yMU*W^FuTQLU_Go$lB z&C(f5cW9feHjGreLz!RwQQ{(B;QM{{#`V#{zP-$5YMZxt-&Bf()4lXi8rmD;);Aa$+V+DnR~>`*r;gP|QIaUB+V$0e+>^1A zY}!dw3|E*PBp8~vKvJ{{Y*9sx*$6U^9S<*Ac398B*vqa2X-fbt=jQ^^I;-`mr|NT) z$2d|Frm`E3;B}Z7GEf$qlYAi6<{oR8zWn(S?Xc2`Jz&sx4Zh_j`V62&aX5_XXH5ozH4zmo3(@&wq?M~k`k;nGfA}%fQVu+4_-O#l5VzvS&ttl5=_2e0Q`g;q9??u zQfGd9-!=}vw=Na*A+b>o^#b6Is?2CMkDa@mmJBms3RtrqH6S&ndpDd^ewaNv>pAZ*12;BC-Mywtr#eeZ`^Sef^qOa)%|v z{>G+=^vM30YAw5>a1HHAf+M$8h;R*&$>blB=I)Nb6ErBpvx7-L+X!otS(4*_p6|gl zhw2f01m9j%KwTemBtgC@OcSY7D$hXMztY{8j{ZJ^@GxRO4j=uFYm$6%J5<#x zBiGXbaPxDI0Bi3^1LJ6BqMkyj+c5@y0~^9Xmhm~<#>0F5^+RA@?CX{9!h z6&qW%8eFYZsax8*P9)?dF5y%5%gt$!%?Fd4-J%F>?jxnpFd9`$XfX0Uw8EoIt0=G# zJnE#luRE1@7QWgoTdr^XN@N9IXC_7u^RC8$>)M1*-3TfdVY(HeL@iLc=?EUTc)76r zk=HG+uc4r7HXccRvgzutqDn!vnzvf6uRn{R&`i11MqDCu z!|}|{;r|5R@0@}K-`b?J>hy~fESQEl()s$(P3s2h4|)AD3pT04xZ0!?j%9ym9~Oqt zF9CqKkUEP!qBJ0Z*ZuQ;t^atdkfF(TGJwWtut!y!*&bIK!j@pT_FfM@2w3$!TdjTZ zdGbD#NI)la7|?HeBfx+8B5~r9{}RU-MBR7$#x&u~9cCN&ZC&y06lKJ|W;ND@@YIH( z(Q|(N*@$T+sdN--F^dcHLAJ6C5hi`~YrS&_V9uq_kdYN01^l=u?MoE1Xav*@=uuf) zihfz!cPO3`lP}`OtMZaFe1@rp!hT zhSLnmlEW|ev-kpBcsCy}P>^*Y{?RkBjzvBJ)jncsFFUZsnuRuks98Odn*(2m9KvI{ zOzp9dgG@dZmkoE!QH`ZcbOqQ__}gG$r15M4zd3qqz;Bbas) z9&hQ3TH`&D{u;n3{qg%@Qw%22r3!Uh4=r1;&&3lY--VSbE;R!mmqAs3m0r+1Hr!*{ zZ|1XVuC)WP(k)SAi5QRJ9h8_zqFSR(o=r4A$@9-qsHc;wG`t4{&9c}jCy4nddFW1XwjsdWhyWi8S5mCNCTIdrxWxCWd;s+E6w z8dOaP_m(2NmYZNeaFb8{@A@~0%FACkfP`X#Y3*?dTVQD1fL+=>d_>C^*DcG30wo(J zK;sO$XQfC|Wmr{*i=FUBOOyPka+I;E3{yU0j1#EwuOO>7h&E`1gM+BfX!Xw^J8&2u z_=+aGHk27gx@MsMzDYP^wm>IJoW-6z%BBcbD)|(d$DhTyvt95_^1WCyCM>UlC{Tf_ zUxfNW3y#0JfEU)wDAg{^((a^F?V;rz(@VJ?&#UoZQNlp|Jo}w5|5yf^*_k}mnYVUB z_cJFq|E|D4FfS&bQ{)I_=XcqX{_isO(9S{|FiB50C8S5Q%;M!=jB$TwP3voV?h$#WBvnpKscXhe5cAIesAa^0mXm-kGz$!tT6M&%J7?Q>+qL zq0P;5W+FtG*@K`%V-Ayg0-?qkBFAMh}H#{(g1>tgfo6wtEz%Xc8lTKkS{BzwBP(l~k0T%{>WB?W~VtllfJK|cDe z#n#ls4f*AaAE{FTU*ubPXtyL!1GKt13@qQ-R9gR2*KL-Q>A_MCy&j15wk{TCrE%=w zBtT73%8)kr4-K1wT(3-CJh(V(m?n}7P~>XtUOEF{y7~v0yt0BzBGrCoG#Vo4`uz`C73z6!;;67aS>!lxu|f-@e}wk)?y1vT)}Zv5f6JaYJfkE zUV1V?`%tWnT>fSi+j0^$&^`|Ote}qfL!Y=GGqfzM;PC&%eO#gK6AOp`V32`L^s^C{ z%_h9|`ismku9wf#@**xpc4<`}DF%c6P>;r5d@aD*Fv5WKEAJoeusE5WWdGGx;Z^^; z7nOdImeC%z3nrfDX}bBcurUU>!+8^8qVO+vh2E33>TEG^dmf>M5NLzUhk6h=J-fkKUjU~DyD{7%TP^!%Km}nC^C+p@_v;x8FYeKx) z?Fo$|1-lg@3gw4cI6h$i4p1qd&OpmgfD(QdX~F+}k^XmZ{@4DHFl2I{C3O{QH$TjN z!3^z!Wzu303zlpxnPF%RsEqw7)9M-BvfkDQV;yVN(A_AcU*h%D+%K|0-~ePQx7!q_ z(?u3+w=e$t7lqy-lK2r4eWHw>uZ|Em4k+;yhK$ilIQw8(^rXE8nCff_2BF}WHvA0} z3Z)&oOO9Hr^|;=Nw9=2fRxO9>O+yv3-@%o@>4Q!<<|>dZ*413E67v%AGgQr)u4G$? zF^f-{ z1F1jT(4RQWJTX*Jt$HhJpkr4TEkvJV(1~W$XH{;&lComdJJW3X5nts?@K&22dSdZl z#!*NCB{?AM8fN7^9sE5|%=87nm$igjZOcTxw|egOs}7ARq`LR%G> zo@k$h#T*InLoK*;4KQ}i3^2X*$Uf8S&(A-fQ-;rkKzsqDP-qtYoFa*c@X{X~tO@mo z7o>cSMuhT4U`EN{BCFHTo^_PirOIm@An$X~{2s2?bI<4i)}{I$X5E$;jz@qdSeMAu zmzx+Ka>_@B5S!YwnW3cVk54q(Z4mA!9*iH{f)+A1+;Vb+RUIOyW)I39mL&q;Vvmj7 zDy$)A=0@p7uaZ5iU0S6G+bScP(O7N&4*7Q=7b-s4i+r}zDxa1Y`+orBf8_c63%*Gz zI!?%{7`{`-WF6~tEbA)*Dk8N4b96M|{z8_85Or}ViA<_=@_mf!Q>F>OV>GL;;`z7S zp&z5TrZ@^v&La7H@CUE5WvPRM(mdmMr(gCw_@}uKH%t6JK=mQmfpNo>$S?LQ0v2GG zJCV@HW^gj69A-kpmHxL}bQH~%XPlsym>h<=hFdzf>#${i=E*vwuVs)o7uNQ<37| zxqhymC43C#o-o7xzWEB=9egfVN3Nz1NbW!h(Vd|x0Z|Q=sO-39jEf>kR;+mzXq?x4 z>7*zopjB=BPz8~gL#xP&^8lG>l5Dx{k8M$BQ-X714~~8$QNgXC z2R_Fb%gX8-#v+`LC@|`@8_MDeuLl)248BXBn@PQ)^w;U!%V2g$Hr^;{tj47{#N*}r z+>zC3%h^B^%JFNWGIUBF0e**Lrlr5bT3dR8zQ(9H|LD>{^55*&3Ze~W3<%_qImFoL zHKqrnPN0)s10BZm{2H~($b>pPWxLz3LUxyd%|K@igX!gtd@u=3o1(>kwE!W8*ZUl~ z%p3iae8KLw7p~W(oY${9akmxD;i>b+VH_{(5*s_iOr@^ki8B6Pm^ATJg($e9sH}X~ zp6=kmZef4FnEqGDi5vX79>2cBSF_5i5cR|EExHfX&8toOoR4hyyg4gpD<~M;-dSe` z1bcueRz`4*Vjs#r_0yb?|rBl+#NZV$g8^EfLAb*?rCA!C}6*mjT#b!E9^G-WW zwIQ%?`h9l8Tkv>O#9^|y5Y5hOeKv4yV9hS2%d@o^J)TG&D9+{-mJ}8g%me#r`-kut zFfL1{>9(iZjr-iQOl_OYki4svY;soB#KFY!t@CxkZX&tj$ws5Yfc@8rQlSLFsy5u- zTJ;v3Ynr2`pojPt>+r%;+l*D&3yp109F_h>476;(N>#QcRIj zp5@-)5$Ul&dffLs7Ys=>>71VMqUlhd(D=E#C}pHXTABpAAilV&Evnz7mD?++0m6BZ zBWU~qaCzDSveR&g-9Oai$h-9UfP{D7QyM+h6-Nz(e@B`q zBIY%W#L6b56!MQy$r{A2D=*~y9fw+m`0Xm655&>u1M#2ut^dTK)4u^x)y8gK?GuP+ zLvn@$a5jXU$+QZ?&@SWBuz9D8N%gKI&IPdnW9UmirJ``S>$9rQ^ausNN#y!&#H4d9 zK?6dA^GEA1ou*fPrrHj5KW;BO5WXB-vjjq~O&B7i_@HNg2z9021xw+&yJh55SoY6J9wAIbwdU=}gvX1kD+4=~1D_|4PaFPv<}{jPQ9 zVO9?eR$0F{V^wsaJJ4&kbn>P^x{X+jUT2!8<(0>rsoFA)RJ`MvaVWa+yyvcN?DrB| zEs;v*U92XrHhvYKfE3bDFyiQPHNTbHd(?fbrQTZs9$xD&H1)+Myf2obNa;c5^N?Je zGs>L&Ib8HNX-{5aYRT`p)@0NQ?&y@g2-t`PndPq4)_gbCTZ+P2(r)Q{11=z<)>~(U z6q;fiA8XjeP2(Zh0A)V!c~PH02n`_EFr~i|4M}}dr$3RyP)wxxm`Fuiku+rdo z%%^(!i=l?JU!5#vUb2FAu>34}6VBRq8WFJ=NX0>o!z#0#2%M*&dX(+wqUgWQYhrng zegQn$QCgK22#%5{%v^oRzaZ!YfzCM>5%;Se-|vGo0=Wx;pn&$bxZdUnA#|0NvkLB&>e4x7Q>*G5_XFAA)O;ZdQ_J z{yQ*?6(eX!p`b*FLKX>GRl5krTDegpy-dYXp-ef@{5I%WZE1um_|(D0Zi^@iTnPCN zyZr}`%^cCi=#BW_*=pJ21|sx-+4`Tzxqk#2{EMhbDq70(3g6!4(%CGq3q`jw2CJglFE44*rM`Hma7aG++;gcVZML|nOUQb z^KqWy=6Hd41#5N6rhbOyiv+MzWJ*N6!v#7sW5Hc00C=UNZtJvXB1vN1 z8|DDtFw_`owjt11Xm*NglTm1_T7y?%sIb&(%eUb#EL%fZfpzOUkW5Q5(|5Svg;5_c zP2W32S=8PRocs4L*xHpJEIoX*D9U*{NdcA-FHO}e$OcG2RxUZteO+QY^)oByP&5HMKGJC8JO&7acuwu1J5YUL;qV&wl1T=W?~kx(Ar*9 z^urMXuAk}rs~B4*9MC6Cq3G9-`+(FB2{NsI7N0xkXOVgpsYn(LL`{|@eGI}=9Fk{{ zQSEndb-E9jIp$|-gT!n`n1DM(i+WZA;xJGSnU`-v_Cfhz1CSI77JAdDcOzCKNV-H^ z-)D^cd8yHzi>yRp+gF+l+ng(NhrN2kG)NyZ=}P|KjP_e_;!2CpCl(GKId7roFt$U_ zkpm=h7>Rs(8IP%N=GYSpFWn_vptG%X=y^EpYO6$gM&jaSENX?(1njzWkk*)r>snaGzEI-Dj@B-D*sNScT+N`!EuBjktHVPNH<8u7yHBwxj6YK>oCPre$HH;vj!7hBXzd4rdGc4WBlESI-i zU8S6RiG^FF^;m_uhRZeRKoK&no4O6 zpt~?~+l>Lt9Ms#H0k`hSN_af+qY9Er#KfS#0}a7|@KF-(a=o{$0;}4V?mu8ilCuEZ z9}hmonA*pfOKX>OJajA5%29DEA4$U z6k(1F=^CyTcJt12R7seN1H6<@hRu<`x=oH+BAsl1ntvhb*jvLyY@hdnx=T=X%kBIs z!%&%jwZq6^st(l2*Jd03iTAU=omV-%8arTsSo3il3ZQR0SSWr-9hj#NS~i;ux2(T>me{3ULnxuyqc^j9&17o_I)45Yi8|D$lH zMG-hgy_~HCATS7`tfgBYKM%>rug6!&1h9jR zL*PdkxdWp_5}d_d8`s%}h^HAkBhR&@#qV*uoy&{?dQ_-NY61Gz7Eus(KpkPx{qaBM z6n6oeDL9|Phw-yb`A^zqvA-&;iiiEbRoN_+Q#oYCZ}0FO=gB5<%Wft8(l%K{$fjJcDLy3NWE@K_x6Pe&y|as&2wNwk^OEkfCrFXDY;Auw*ZSD?nmF z*-^8<7ATD+h7qt4u6l%L9Gd3Ao-$#kHdy~4VI1FCo9x|bN-lm_GJF$Fj$;?kt)bOw z@fA)hdLOZ!zuip5I!+LG+zebe!GhDUxHTE^;_LMCURdgri7mb3Qv4-q2~`mzOLT{~ zERA(#gqG+rTQQD!s}UPL3Rv*;rK;eA9?vgP0%FJH{@Bp;idRDUm9Tf-m?v* za7+8x#i~~%KO>nNKX_?wR3XqRg0VLUO&4>NJcC;Ap1fyu&~}r-n!m$Y2?PK{W(;#t zZLq2_Fa}kD2mGXD9tI}qHP{&atmzU_D_GUo7{g$=hO=?hMh>fG3x1_9j6O88?r()c7>gvquWc;6AB8d7rp)Y`{S@l1Kn2DLWF2`YN z!BsMe+qG-7^(RN-un?A6m4u!t*+BPA>RR_rt6#hi z3HS4UvGKXy0+7Ffjk7=GoF%z%`nF*P5!%56@3h0a!Kej25SnU&dc45Qo{3kmgHB?V zi2r0+LO&~?$q&2`!*#WQ6$A~fPS4zaeKAgDkS!B1(?^biexft-%x5N`Et9%d{gazL z5fe(0GgD-pFa8vnSRV|%4=b}zjh1BBTH^hn8WUR&t>ghFju?wY{aoY%7=Fu6w*R{R z%K?l`4yi*3^ZTr{BI>Nv;l6sLp-bq??Qy@Lr`QP0Jh)#E{_PjKij)6AIs=h(GpA3F z3h*gy{u6IN($?0*@qakTSt_fx^8(*^Pgfl1E+%KBVQ3{OZEUNQbBh{PD=3gGi)J9h zZ@MJE_a+%hH!DADNr0>1J$~^83p>RpFg=$*v=l%@7{!^+PWzk-zAw?k=li-m;0uGv zBhlYui6o6#nHNhY&lskS^hA=ZOp%u<2!6`N=By3~yGp{XRKW~~o4!=n{j{n2m-0=n zbFFk-aVuP(J1^Su?E8r?vN`)U3vzu{oBBb4QU-gahMzu_msx;8y+OxL;gSvX2dN$B z9wWAH2Dj|R>P_3FN)Zb%%xDSKcYRy%DxdsqsE6>#+e`(T+K()suQB;(nXcb6&tZzb zb>F_lC=1wi?s}hJ$t2%HU!^HArACh;_$!1CXSQfS=`l(`YCKGC?BF9gkZfet2Ju@6 zu5tn0rIH?H4E$RH#;TH4 z6&N>HHr6sY>c)Gw!K`Ww7RLO-@&tU&7vXy1J~B7Y0S#QHx1HLyVv6F$oYje1g7p2B zP$ta8dvIafksA?N_VXTi-nKL857QYgJqean^!|%lAFN&{ZR>m~`bt4N=8W`sHz|oc zd>tB$VrZM$hC5@a{TBVA8!rkwqIk&YZYm{kdmfQGqw$yJO!cC^uuj zcNJ8=_W0j0$2+2=oJz-;gSZiSgtSJ8jxotmcLaH15Q~9ua;e6V%V);|nMCQ3rM}(z zsGXdZuIaS@ZMe!+ zX>B%7q;MG!B?ef}P^y=0wPf6{m=uqWL`>z7nu`jS>AflLv{{%~QlmhRa(=3Dp2N%+ z``fqS!CvaHd4xFwvba=itk$G;$wDBaxL8tHV^~yxhV44sJ-2@# zIX&BjXk{DQAdTlJ&5U=rk~QWe8ykk5XUldN@tw~fZ@C(m&$tw&SPWGQV7Yz@1q=qB zhYu@GBYh5uaiWZ}bh5c=uC?rYqNtcy0d7MEcDwg%u36#@c4u6I_1xUQL9J|LGzY%o z^RNs?lD0RG*Xo#OUM;OTx302gh- zzjZ$1wb|Wx+@Rjb=0ZXZ^tM%BAH)KV8$u>lAi|-Iq7nD@2jsB$Yhvq}9y2(^v0sM4 zF;B(8%d1U4ybzolU`=$Phxd$8<>RzR;>^OK-`T~yxmW~oOC|I>U_5xoj{Jp0Y_5*9 zoyd5ZCh}5NW?GKV4@h#|*oqw1JtBsLMqZY_l?C5FR=7f6EA2LwdpbO4QHJFK^OFQu zg88PrF*#19>=mT)bHr_5Co?hcl7>|9DS-3_?il$u6J5N{02N&n1qagIm$o^tT0SJu z(zG-_Q^*;rv_0|($|GSvU%86$@UbtaV=bwkMo{>Q(spnuyN;aNy$h}Ve=xFyldXZB zC~tyl<}iV0&E@Z4f5)L%`TbJHr;;K64+mWTiNn7cu2y!dDj2@ervuSO%`950V9OW^ zYUF>?s{)nUn-#ti`!@!f1WC7L6_=Ee4@X;*GYmlT_16fl1PFZngFV-(=ZmnzD;M5O zDufumbDR0_+ zNd$$vX{4{pMZZy4Xk6*pDT`VtRI-0viv3N_)%_c}BJSl68Pkif7F4iTwMl5=aC452 z`jWzqU5v>Mzwj2WVRBCPF^8Y(Ya}Uat=6Y?W2GMRdra3{8yso_i6-QlL<|nNF2ISvrqot{_Oda?H5nEK_G`2awrlu}g<7i} z-cGw6Q16l2n-4L62oI%U|28glG_t#V$Uk2D z)>YE4%4+^Y)S~ZN{m|Il6UGI=sgk{1QD5&wKyni|*(L^N;M^HwCiZRm;H7>)bk<19 zQs3{7W_^h}62s-X@&(281c{*uAMZNn_U&!ZLHv|oJ)-T{PR?2NGGbHIgu(ADjrttI zN0=+plI^YTkd>{Etcf*-1r2vH@ra4|R~QD$hJ_CB@^f5K9z3j2y(iAd*d#CY?%0(v zWyGbcu57d7H&B}R&!)3e#XDKE;+~>S4F~!y$+Zm#a0YWz*%(5TQ`wOQrn1xXH8IDR zg;w`aC5uW-qc)j*%moL?PsY0AC0)Id5R`c3hIGJ~Wvh$a+nacaIIa!=5(W7Fzt zzP-R3YN|22QtEDD3coGpeR=P^SJV_w1`0Fva*@M2fx+TyP8yUWdq*h60iu2N9zJU! zs^sIWPJtINwj(BWqC^pJlSC+sQllhK2WT!ZQLQ19!Yh`+>>~5P)_P>n3e8oS)cX2@5M2vt>g4HCGowNdCjK054o2nru9B&{?v#11&tXJ1koBWC-QRp zWeQRUd8908jE@`{LE)04NpZ&kptIcU6ZDL!s{H2aT|cQakABwD;;~ir7n`YCPP2Ps zLSypo)?b9>%6$F~=v?3eRLV1>cM1_)y*dprXg!gt!)3QY?A&P!&9ZJ?FqmQ6wr$(CZ9795wr$(Uux(oz%wUGi`&OURK%D7Wf`%1$FhVvp?d%&g96A|s7t>&XiX-kS3_7^Y4}T!beaN=J}$mz682r9Za8^F%_s6L@CRrF>9AG8*}91HF9qF!e*GZbg4xsgg{-v){gjN*TrsfQ-&Cf#fQ|DjG&QdW2-pgx@22m+=B30){5^`R}wb%g9Pn%3T80HKf>Zk@0 z&1AWH(#np0#)Pr%1@>lHIhM+dK$BDPWzbZ`mX?fh?qXUtJfqHa%0lw9V7gNRXHw0W zsR-S#JVwj`4vxvfy^~TSnznI7MDdV<*|0F2I@8rA^%TN4-k{PVmDto0yCc_4qAnmU z#^_g75{7KIrhT;lSTC_PGwpI%)#>M}usqdh~yTGLg;VQRkX!Hzz+H=1QUI)SER<@PlyD;r|~Q- z3@-zaO!#nFcO@PkrrKNYudY0a-fZipRjI#>3?bD*RFCHCTFeR%Lo%Ke^Ncg27-|r@o0e5PNZ=i%^tM83YvCpT|l~&5(Y= zZZQ*c3^Q#*B~XzXyaLC)g9c0Y5|#YQ?6O{4O2Y8N`1M8gEc41=ohT+d--J_SktJ4i z%N~!K&!7jzh)Z$Gya5nhDIZ+*D<2Tdwa9I<-!D4wU@Is;bOM8QmnTvjv4lP;XUr0;QzS{5@?ggg*mB4gik%WMBc zjGDjjbER(x9Sb`CP$>48dqA2eY}v+^&J041M<5)4Ksu&y%tSCs%o{=`aIc{E1b!+v z*HI<8uS*w9EFWQtMfC+0^#!xyK1wg;9FZpa!Lo7w))kDQ|N-xPKFZNF;eN>oMEWRQ&1ceWG7cH#5!iqAQvN?pHaTPuW}^GZ$$D zdHkT9eM<0JTazSVZ(bAZjha-3C<~N z0NXD(2;P&svDI^}`Go~cXT8ga-3QUMYz*bda+GUM^!roCoo$+4PRWlz3h^G(wJP`7 zXD$y=dI@_4u^!x?a0R8|FCpI5iV z9@!v2u~h}}Lc`;3IVy^5iw_E+c*8&LZCG-d{vp8$gN69wV!+^c5YErg4yACs#zj9QOjRUa12L^`7Ltv`t7Oy?0Aw?%vb#%H>xE3qy{l0U$1|^DnH%Ab)clr7;r^2bE-8%}q?(?u9 zy0kqBx8`3h`~d;P&RD5cafm zA>xd>R8oGIyVM)iA>Sz6v^IHurhwuaSfq1U*_?ADyMJvZ%0klI;@&0N@?_B>ALT4l`d35wN4Ri}$LaTiWcHwSN*{O*$D}T~M6IpDz9!X0TzeE15D((to$1kSD5@{a zwMvmzfRFh62Yvjzy0rNgpp3r(wiVp}Vg!-k9Sak@L-)oQYuuAgbO_hEH2@7^n4 z`2aE;HI0;kba7+$K*Z{`8e2I-7Kf=f+nzcWajjNs`>OL8nls;};*n@rsdN`H?F2k@ zr}&k~C1X9Yh->S*bEWZM@;Q|^i8s0tc5 z-t4vR@VCK%uW;#uIXi70T`LBWoD}1^vjG~HDlsM%JbS8bDgTTEnTOTso_nn$9=VtH z#t)2nF=HK!;`+x_o?6O@bNma@0Q&qe`D7P8cD+R#{WYSjR)T&aV7aT*E9}kfi(PAP~hr11$dkSAU;+n!!~)#1l!XHvqpkG z=JhzpuBV`Hr+B4=V7(^c_4G`}09{h^;{m#TUdr<~G$idO=bK%qWS|z8n|K8EWL@4Z z@d8=;+ShB$4e9jiF$S6G;i8@!s0K1R7g%5N0#e}!M`64rc}KZn@DeCX(NolfT?AOl zzVLzgk|i^;a5%Ak8?v)S-^Ef_ag9Qx=vTT6BUq1eZ7?283WNCOwc?Hbbm@?ogi8TMx#r<0+ z5?Kca8#hN44=Yy_%YRH9C93OyodYUg>^8R>td&Y;YDsm0+*YxD0LV6!P`RX40;DzB z4*58x+xc3;A6F#g$-HYANklM&@>w6${aBP1a>)eG`s3Fbu48%^K7cX93$!7AT&N@Z zBKE$d%~+oz6N;F6P+)fCIwiRYBU2fYrG8MPj?z}_erzN-ng{z3ZEEyH`pvjK z%hhS^PuVGUx1^EwA?uq{O+y}|72!*y(P(-ez3Y^C+CpZnV-s6`E2x{VD5HD&{pLNh zP%S$SGifuAf}o#R9IvJEVzCiDe8{BT#QXY9MW=tUba>_Yw}eW zM2Tfa*C%fe^@4@__1OwXx13J*HBQ6*zOrxpW=H;IKjm~_;WE;>M-$p0j#_ib-VN<< z3#Hju^{&;w$P|r)2Nhk}RtK4p$a|Dro!F-wegR5JUfl)$3D7zNk z%2P8MSPSX9CAy#;p-n(f2!;8SPq68fkMN-{BzDmgVE|#TXris&TDTD|h9zFVnC_Wm zSJ9?Kf!p{qPzCr4*n~Pg)7-!=lqyM9xZj8(7@Z~Ekh?QfcXxtZ_UW?;4{;%`xGW^u z3!3q*P4OXzX7aDl`55L3edqLfoxel}AJ!Ky;KHXCOIt<0Lj7_J*PA`M~`kgBeV#6CeV1vb$LQ%q1oJW zCi;i#{*u;sBaqWfbp^-_I-7`|a~9fiN13YYt!R|F+Wcf>$&J@4m9r(tx5(1=(-!qs zwz3UPr_9`rJhNzRsx^iQO@lsP&YzfvwmqwaK zV@l3Nwa855dAWO7Q~@jBA)l72N`WQ_yR$B^^e<)CNX}I$4?MY9dP?`A;$};xM+Yu< zojS6NGq}9R0N-7$N73SjWH=lAVAZCOlyrU@$NG2Ql!ap0!6fp4CT8DDTmIACnXll*HshBi*pv zSWPY0;v1lH!tsm3qRCi4uo$YsZ#{(OMBKmj6F2wxeQd)|GeT>UTlcRT|B1&ju^^Rz#|}_(7Xm`^W3G0 zXLhTVDlgG&kzO>Rha7MWZM#12tX|JFQJy&pCiqM|W1Z6G2zU2B77(@^q_fAnoDMX? z(PzP>nAP5Uh9T1$aeGa{DalhYGWpk*E zGxFsWahQ2U9+BxreBSrI=iH)Z8cj4J^+84zr;wTh@+y*9Z2VYNi#mFEd$RcZdb!07 zPNFgaC`l5L2l9?Ko?Ke5Z&L9%cv}OsYG-BPdhmrY9FKj{R3JMe8SFFkB}GV$k8^n_ zi}Q-B7g39gBYjtxwj>>4F71Z8#V-zf*+ceWp~6n5%Lr|VX=BJ?l;`jGp?+evFK_YJ z2fzGFH!x?0N<6Q*#6@xAa|w<5*^!L6jjJPMrUWxH(v9e*nkY1l(5+eR86kM49)dkZ zcQL5m__jy`MNJG6w`)m}Fmn-shfW^5#jY}yeuHj}K#20iAd`=u4Z_~03&#fMm05cs zE8iA(O5WsP6DY^X|DN*uEs>1XH>%$>WgI<1spT}_iUoR)jnP0J`A=5l{Vqb50-&R( z0xmVSe{rG78F~KCJ(i-P^H=cN=eKX@sXvubZGU3?q&r%nx71-^lglKJA>9qa+<{1+ ztC_4_*P~V-xBiMp&_4?T=*`S{n+#tSqo3=&XR^7D-)8LmK3_jU1>qEuB=>XS@t#mL zrH$YKB!PGZL$R`~X;f%{uEnODaVQ97(x8qR6{mKUV|%9J;+uonDC%b)E}ZRM{W7m} zjv#lx%ig{1=^vFjmdS>|zX$`r%Z;-F2-^9^9lMRVZigM`5_V|j8^#l@+VqTCLo6!p zhQ`#aVYOAF_2E;t4X;_BMLMo`RYK1-&six3n^1{F`MoeT-CTsA*x6FWLtVCDXs8Y)A zBlzxG-WJt_cA8TM8evc>%x|?u@`EkFC~9zQpa|D0j#@nFrNK zCLa9g?We=aHNIHQA$+8H@5$mAWj`H17t|>xdhQ{QW3GL)H0);O2MhRTkWw}(TaI)B zWSDG1tg^O}`y)29IFUBb1avJ0Eu@R!mG~NjyK7qvT}Idoq_1SlM#mPc*fhVR?;oB=!5#;gZ%`KdM9Cj_8Mzu5zk_zvICAH^2Tp<3M+(5 zl+h&L5u-K>VU=H5Mtq^S4_!l|?h3{kDo)zkf9Lp5xB)D&hMNWeReJ;8X`KJ2Ld{$) z9ZdgLq-r(_07@BOYwLo0=bU?gzzX;fMYu7V5)3~ho8Mhax78|b=QKZ}e`Vj2(uM4$4$%CrcB{aV`tXy5HB!3(XHJUIin}G`8qISwm^iQCDb|w!|S@ zYz-$lv04fz`Uo7UE!ll_5EtxkOf^a?T^-xQX}FTp`9Ll7tg;_!G>tXvMkK7Z{ef7y@hiz_g8n*s55wv9g-{&9CMeNo zn02ES7i@{}QOz1+DP4AHJGy7;V)i*9HLQVcW)v{EjS=Aoy}v}Y$J(PRQfa~`{;_oS36O*7wP7{71rp$V%8Cj9lu&VK zX=8t~e3V!cJN|Tk(MY}Egz1GR!8j3rPE@F$jM7$j0Gw*cAlgmuD-aOIoq8iVYQjsj z4tKhWrQEaZDvJ2sHJzN}yb({cw&=A1qVvRS-*@;H6c4TXL~~drbg`S|QohOhMSb@> zcW%KH6*?ynX`(k$k3XrAH&`o}DT zUcAFUjD~GWCwiefW1bG-_di8?A65r0erurhY?@%m>3+a`gEE)& zg6?e&nF@=A7P}@^Hib71MBzw>pMblpARcHS&WEEG+!Fs0x&;sW?TA^qXSI)L+0G9Y%MVuK z`364Dr}dE|Za!QBc355ys_euno=w&tnIfU&WqMbi_n$yXKFGC)G{C154$vl8|HTie z;ArAt`rpo-De;r?1A?fbUjh1*>h{!y^^QiwjrnaW>6pkSD9PZVLr2ZB^~JJMI$gY} zFvj}>5Z49K7SKE#nd4J0$9XP2EL;Y^2=aht=BR~7Yr)~X&&snb(>V{j{kl77u9PXq}@b{=h^-0(dKJ6i{h9q*-&26Q;c()q$77s7Iw zZl)*?eZ*5l5cYC}?^mFBvFw%24!C$Sd+7fzaAE8CBf*Tu+`Z?F9Qo`C$7w+sTWEF> zbuPGf-izGH@;PLu$=Phw*R1rzs&IVn!+;_*l9-DqO~oQTh3Rn98ic~1v_N8T*=nCl zb=g2tZP|m8c>_HXwN;W&Q9ReU{SJP`sy6<-S$(Y6tb{#>4Md0||CF4z`$wX^QPz8r z8IlMrUXFEt?%QPmXQK=_8?JwSHWJPbZjS$L zt-7G2Fu;fkajim+qamh*dPPp&(~c?74_$JirwI>lQ{2EDV*56A*4pzRz^W!5iZyNJw#ed_TZ;C^#pkpzW8_**?K&C5{R@O z+99N>e`Yi{{!hK*d3@N5i0p}j*g->-8PD_eV=(K-`lzSy_V7*FDPQ~@+I1L~y}&*_ zMEYvOj>D$s6a_l;n(EdRhYu~MWu4hTu3m(oY3#T!88T`x1RVY-Vtl0XvEQk)Ljz|O zBVe^(?NLN|93dK%f_Mw@LS{!)-mCtfBl1_Zf?77R;MmcSL$EhtxjG)kqqPMUMrv)d^tDJu4J`1p$;xtSWi7Y5a& zVBG|XT$nZNG9Vq#$J9_$G47=SgM=CX=>X~?sli|b zxc|HIh!BA)=@1bW2^lM^6DKLZ)eTlkL6ooTh*1L$Gc$;JWDpq%&0`tq8nZKhv!P@l z3DKQzqk!odqESkD^3M!R zDKd-P^d<9>t~|+J=*z1C*C@1^V#?e?$M_t2bX>)O^^oGUtLa>W8_V`yCaSpenJMWR zB1?itb9PohF_v~{b!5B@>Ug!ZBec!wv@IiJ)Y&okVErTeAce2Nld19~cZXRb!LR(3 z)}#%0z2wpYQJWY@rG9Kt)aqewC=_UNC((gL=-mD$SR4CUJ~DQWy8e@$^L|Fw9nH8J zuWd=I7Drz|#E*GwRcNj?wQ7C0RKJU7?#5OzwGDC^$fRn)Fn4#{;@7Gu@&CMj@-eORF}IsK&T)WFu8*g%gPd?q-y0xamA zQ3z=MAqi;y5iIb$U0RW&HfbS0YQvNcDRX|8anl(j`5CHb+~W`!z9f}v@Sb8|`qB-% z&D807M)9LYxn;`*-jUZYrZm^Q-&IHb?X5MrW#}Kcg`5;Bmu=NqRE`)lWuU4UsrSE`sZwxF5b~r_ z7;ECvsu3P0I;Rek9N>;CD``e|2p2?ASZL0k#-2#K)Niq@mT?uSR{|l=W~rq=qP6xh zFGa&poBuumxi*x2cA)fspdyPj*PQwdx7=l=MwuK^`|+p4yqK5bPrqgch7CS0lD2OG z&2Kh3ap9RtcloFYiW*z7ifCz~ap7FG{`9Q!F$((HWjMVae!P-pm%Zc_kk$QIAM*1I zU3sl-SUTP14$r#B+)xXnaP2=iI1|fa<=^`k6()7NF}Gc=x*E0+`urb%zZQF^9#jOD zkR4eI0<(T^IEIsmd$d7O+EkC58UZ+#P|F|~rhn!EY3k*8c1Bd@iy?4gUQ$?t=75h9 zSbyNtE^)_1I_S-Pe^p0;uriZ*>@pvo>y$s3Az0<5bSTN`1%(egv? z+(VnMxu?`E({Z|)5`P6PQy8yeb(T;u0EU*+8y*6E+RzDnAb>2SyMNnaPE(8%)k#M0 z6QRxI+a$FUu>W+V@Lpd|tu3_2v|)Sv$9J1Mk0h^bhJEuFn&8h0;@*mrM|>jY5KDL- z+_u(mOZ4zI!C-T`P*56}{%wvRwPc=w+z_psv%>F+D- zFXT(N?za0mj?d`0$4c3|n~n)j`#3!)z1RG@2c6dtzhVSl@X7CxejmSSq6qY5woh<- zCc52<*a{GsLA)5bCtIvB<(gTvPtV-&c8*bOQ$c$rDW?+)xfwR4(-z{3Q-~c|9A85g zmJg|eI3}v0v`)r&X7Qj*N}`uqc_O;q=h-8)7*fS}B8+hTJ+RaOuiyrtDF2ghuky!wQ4!NmK9yY#$0E&2&#gvfv-a2eQUo_vbiZObO7;Dhly^Cn z6^PWvAN?+9BjVRVm}_LPUVBj=1#Qem>R|$|W3DT&o#PMgm-q7n3ZTuk`GNy=Y^yDK zBfcOW$`VD%g7Tth>2F!(*5y{^ETl!N@|qjQY@tUO2a;eA^az7#CRQA|UOQ8SC!c$TRLP&Hh1|$3nB4dxRU2HtQS95daJ086 z9lQ4ItEt_D{jC2;m^P2|MW4?F(}O4rP$`K_hCX0JBDyKVM*_lsNjPIt*kTBA(I z-Y)~Tq9FYH79L6&bJ_4uujx%)M(}SX0!C};EFW$8xhUKT3jj zi||ZP5<-m~O-KpJp!^xgC;xf3B#;ncwq5G#RnqA5b~5db|Cr|&0Oq+J>O>F#*~L`S z2xjCz76NOnl=O1Mv4285f=A2KaLR~eD1R=Dv{BuvFwBF%zEpN<4fN)vG`p68zI^B# z-AzOD33=!}69Rv%YMTvuyJ15^DECwp8VRya#a4F`>=(gbVt%ZTL;^Q>%7^!$dJctv zxrStbK*PN?Btq#O-}8~_Z$;xh6G91l!Ta=;9X_D$ncRKy^cn~fYl{MX=4TMtJqqjM z9iNQjyf5RuJ{X1eE8H)m{a^tXc*=)UxVwc(eI`rtA3i}5^ZeFJKjLt$1KxW_7_Nim zwIXtOjLKWL|781wK>b<1uK+OCzp+5`SGp;T?5%vxitMd=4vS1v?W*2KL#wOwlp7XM zdzTsR)r*gj*I*26Y2|{k`8r4u>iv~ z3b41bH=IoqzD!c6aFv-Bf+V9b=4_1qj zk2vzRZ6l5IP_$z>>bZ-E&35zh2Ha-j{AScc7A#7xZXIQ#^d|D2Vff6(D3!!%1wP)b z!!L&>T6`L`qBhHKlBw}1^l#Jis!NfJJI8FYIZN4y6=(_CI-It}$||U^CEAE}inCB& z>_dy=^$qM35?WjpaG7g?-$41WzuypmJ6LJ&#JRkA0ID7W3jv02_3De}UXJGg8VX28I6LH4~XFIee z&Ve_+m2%ihU}PlZ%YJeYgiABTP%yKjrHmBxv3dbb~SHcn^Aqq^mMZX3OK`GKAP;Lz? zC1R{rK)8vNzNAilA*(y|_rg*>2bEJW3w4=4jDx=8ZCH55TyBK;BtrDz1B%Spr(}Xy z`O5N-%E#zhQrog(6&ewCiCaLO5z1*~-uI0CmH5(Hx=$^mrpW=sw}uZ`Ego_9nNG36 zE*I=mt^)JK;>1?LZag!6UoIN4RR9LXO04T^#z;8uL>PLeV5irBazMrZ5n z%zO5b^tQ)&?(Ayp6&8Pz74dRcNEE+-S^S%)Pmznb+C$ISu;kW8+5M|aKeWgEwI~5W zx%GWW`rfqDPl>sbYpb3;VMC@G?dCQ)XOS7&`ak!Jq;hxS{SlOUbhr$%bvh8Cu>&6+ znEvp1Q?N8K0y5Xs^L)d7gvu6lY(7ebL}8uJ5s=!Yz}FUIc>X~`b!6YszBAHU3msZ?v|c6Ab=3>|az7hmm;)Zs`F-F{3(UD?>A2-Ap#u#}bie%Ri1;9u~(p4ANMOmSs8PucMG)-j_ zi%1pQnt-4$6f+6dXVr_{Z^!oQ8p_z&cunD~cnpG@+G8G4w860Od-)Duo`AI=uZftYqjShq{AZq%b*rz_0nG}<8z`AHJv zG7a2QmD*E!Ay4n3+XO?#qy<(y zDkLAKiA{1&3`_|oJZCK;szMz>gX9@Jg^sM@M`T?%C8(c+%C}LvCvTj}Z5Im5Le_X_>B)|^o|DNv~h83u`w@2Q@n{oAJy^iV5Xp{Vd zPuZJujhkd6NTuLi$EI_Bzxini)%y%oiWK*Cx_3Y|o5HX<^=f^u!Kk;iL@&IrE`67B zvS-BxIZp}IjyFC~lf*?FvXc7glQ&6(lVp?tZ9^G94BLzM>=3Fvjm|Q$Mw41$NV*-Q z>PXr)(T-E6R!Fiogh)X=j~8vz6p^VN-fG>*!VCPUI@I}%NmoRRvOrhQ#)3=y=bh68 zmcjrLg@s6awiQ50R7=1CRd#@~mXsBYk$`W*&c+XP10??_5UfH9Pqc>RiQ6QOSe&S} z$~6JY8?2(o$>P{{PR;dn>spz_qDZv5NY9~IV~fp_la-yG=?Llu+&y4PkT(=#YQ$|n zP?nuRdm&A0Zh_^BD|~Fk@#vbWGqQy~%+<8$#PVn^CwZpjPIaa?`O#AgE1%RVT;YC2 zd~vT-{iA_JoGGN?K})vgu`=4;QIVkt2d_DGUhZIi8oncPo@KPi!fd|qjQPU2%NwL; zxE~x-V6(p@ChuU^9_On*sEXaMHptuVofo3+=S>ZK&&0^X{IySk-elF4+k!U)HY6{G za;^khCz?Li04>%Cu2sI!<6Oj}QATv3n*E>@bEws#HJ%}qyF z?9BCdCCVqrx-KEr2^_JSE~%+B4uV=rrK_op?_0(i?WlJ*R^G3YJ|jEJ78RE-QbZ>a zx3I6|@`VyIkMix3?r7AaX@G6GRqf^Fc_%QaDgg z{Sg?WX4dRQV=t!QcE(pGhEx_~2cqD#;3mq{W=(zc2aDlEq{+l^GqE#g9{ql@2=M+;dFVY6x43a(M+ zDP?N~Q?A}xjO?ZAJ}L*x*diVByroWv<7P7}9jrljPKry6C$9eCCiffdGPp%YbEtmJ zY@Ed3m15?b2~4tlI#q{m=YgpVE~JSS=*_oc)6BtF;A9rlhOjTZRq=~>fr;#L+nF>r zEp(0nlS$D!CJz6&ss_ z9&@I=j<2>d$6DT_;>MM_h^awBSlZ z@H#5ZVKVTdwkamIg5AjQ?pThYku2yP5Q3CZGjMQJw3D{V{9rb$&_K7Yn*3k^GXD^bLVo2b*WlbYL}*yCpuJU(oLyeiu&{_O$z? zSmbP))e;S6Q3>%}3KS)LD18#Fu<}$naN94^hM9KAD@;9IBuI2A^A00i5em!;i4F+{ zItF(G;hW@@T?hC_e;mm9#rN`V;(8_4&|IMS7e#F550yby?}%Tcld|iq*>;0_t-|{5 z8jE_x2!fo5NV=lnsg4r*1|!ANz_AX+A2QtR#(7b6&!XuDg_yEqSyhpA#q1QTN_ew7 zq13I>%2ET09)fXwxXbg16+0RrkvFKUapQDWHuvdK^ z2y_=|D{?b+nPXa}EioH?QW(2)u{L@_VoNeILNuUvuOKx(xOM#F(A`}S6}r>=ctqey z)W*9i^hrIU`dS3de<9ZUPvHXJd86=eb zdPZvxv$^NlDG|8F|2UdxfW%7TJY=W6QH(y&;vHQ>bMwlF zZR#ZN)Ew6f7fm(epbAa%BiUPP5f^wsm*WRac+r=^f8IoX^p_2o0N_ava2x%bJ-CX4 zoAcj=@hPfu4giw}-*ZlNz1WVb6RMswN2fo{}sy_UKb!nqm1c7d7-%jBDqv4$pn-Ode}Y=Aq?7%$$2IavyM;HaM#vwgubzfju^3uOGuz8}xYA zEGUo6&5yERt!sXv!$!GnqA@`5$#^=n9nHyB?l?G=jq~ZmjwV$$kJRJBrk!ul3;m<}k?y}+I=CIX4#~Uu=OSc7dHUGG zoGo9<1`*O3ZfEw_s-9VyD+~En*@Z1+8HGGyaoIr4|_zE)*Kn z-XCa@21qZcfvG2a3WSt$v?}&vxJ=cCDaOdFj=r=+C%yTKQ>gqwa0S^SascZzfA|_j zX|Y}-qCld1B4Y=JVz>6HTX>uaCCXm@M9j%aTR4sZI+nHwor1|tB5ynms!~c8OFFrq zLsXfSuQ>mCGZr4I@h|}DR0crG<@>*@)&IdkbJRaH7R^!p1~wDt%%RozCrUSijdZjt zWmWkpP!ptKVyR~u=s+$Oag3w*yFf}c%q1uuZeWzkq1g?PuhcsXgH`Gdo_j`S{Uv55pPUd&M@6R#@+N2bPD7Uiz?u6wF9Tj#^bG zrNOd=^^;GYE4$`oI?i_6)w14JV#Hxr7RP$bsW`R2pJiqB?;Kmjl;q`mf^Bx2!BBff z;cnXw!#H%e$LL+kv=801FWx*@^p^$LO&hm;$$=gd%%;!B?{Ue@GTTWCIDVAo4_X&O zDeFu6)<4aXcn`rST>`cf zkl)3!qg-stc422Hg~4}fvw6gXRKBm`Q@RgbD}7>BMTFjybR#?bw5ECk>Q~$iSx#|4 zfi~Mv5?EAijI%UwnFNWX7-^8&>oWl-57n@Zwq z`4`ayNoOiYI5Kj?^bcNOb|{SUHqUYUlh{jbFi%P()%x;wHJh>{QKP)CFqogN3X-GZ zj1JtTYj-}Ms={S??}y*)=gKVOdpwmrS~;sonO^4u!25};K=53F=a){d;+2aW=58{V z;C+Oi#oLmT^+%C$> zN{uF)SZi>vxXH$JNhI&97L@n}C0p$$t>P;N>`|K{UkMrAomjwN8ga?iiyf}{R@aju z=uFi88XzwQOT^y+sfj_x0gnQZZ@EUbb$w(~Y5A6lv-mNjgwoZ2&;b`mz(5#^?Jo=s zgSz&L&Ehg~soIAr4+Srg8>@(N?bnEwaUZy{Ih`u#+7~_n`KmZqMtstA7kF~g_YMkT zO1#%be5Z}0^bQAZ5q^ipv=EzWRI6@a1KOmN6oCb z6JiGoeOoFhYdB=c%!t%DyJOFx(_ka#9d_OHPAD#L4f>8j-t!4{(7vrm!b0z}HY1bg zGUJlxy@4RGV*sQ%pw5xlmi8kegHt>yU5s2P!xs0zNp^^dsz?{vWei7?(U2-UA`?ZP zfqD%6Bj5Vvk%=KnW2;3|vsM1Q_NQ-~!8Kn$U&Clu^@cOA1g~=ZtgCJc9n~DP zUkJ?!4L81k<&qsfF4Ja-Y~@K>hK_Ln$$`3Z(h_RAM88%*g!3OQ5%Xz^+|i)G$$|LA z#h>y}vR~_=Gx?icXP(f%S%yvA2WZp0)Xo*bVl}p-zfaH;@%(H7C;Jn+Yjg*TUnLP; zr>dkNu1U;xU-u0R3LGXl&=qG#%-ki7k@|@mI$Ara4R!y5EJhahH70+GfJZsBp9VrV zK3MiXe^r#=6^=HeEzS&uMw6`})D09tmUk!=IJ3bSZ~bI|ht6i;XDOB~Ls+0^N))mS zPH={m3&OfP@noiCMepUM)sS`5HogJ$rc8-5xQzS>WL|R4M03!Ui_#qp9b!t%2ZZpZ zBXPG(g}ZL=yKw)VJA*{h1RK6CT3D)6%iwt*arZO1FG=#JUpvvE+kDQ%O>of1v+ z#P)U$MQ0a>`3G*0k`n=O!g2zqARm?2r3-TVB)mSvg&K5>Ie;Jh^pVOLkEI@Gn4h4~ z1@qb*C9|K{cYd_Ez!=R-+-(33TT=#=J$K{%$S4=~3dMJ35nXN&uhwg<^${BQ%D3ON zn!UbH(rpwiitFJ7;ZY%ju)-9{RGvI*oXs0^0ZBf#*dV(_K^2MQOr6OcBh*NBo0vXI z2gt4IEVmN)2OL7}AYd#2*fGK~0s+ze|8KSb1%u>hdKsz?V}12Fc-)c4g>+#+A`Xy2 z20MZwipp=BdJImG<1}%F7q&^IB95844;Jjg>3c>|hDSzv{`%1osj+NrV`EeEU~N0z! zMy!cbRcP9Ie1MMGBN|9uvS&)D#yMjjavhRqP3Y=re8^_8XLsKp?4A5U!!7b_aX60? zM%9HJ?44qf+Tu>uF0HVH#GS&u8t&)>*VfS1Q%3oPO|~wPFsQ`K`D=N+Te9t{Jw0yO zgnN6qt9hf2;wNj*Ja`teZi7Jx*L1qmAZ-5PL0u^V^yl!OUDE@Q;y$L1$Gy();5pOx~K9mBz zX?bz1??KsHH6Q{j>yHHBpHjPd;C{r{Dgk*=?@@id(C=A&v*4e4y8>XJD!W7hU&zl6 z0bfYZ1_56v&;N_EcZ$+1%C>bgY}>YN+qP}nwr$(CZQIVUBQqRvqVBHScB?w4?%B7s z|KWdLYs|6coPG4KhxF5d_>$aN1?+(X3Xq2ba{zOIbO4)xF9JgdWCS`300DP^z#ub= z%ctTC#Z!=L&Fc#Y0iS?lQktjd9|Ssr#K0$$nHT3P1d2jo5}8-$7Xim0G3(AR1d@Vh zlAHgK90igJ zLTFN-xeJhiKY&vrDpQYBjgyVjl?%@!3IGU@L26Qxlb0*YXXMA{I|`6NRKg>pDpQn8 z%D3cW3QPg7Kyqr#Qv{|$ajMK)1ge5_>c|Vr=j3||zyuZsszO>KH%rPV<*x*;f?J|4 z6PByUXXU#Jn1NrwBO@WBEmN4+{sa97f*V(VmF z+`z6ov;J*3)b(^B?qs&Sw1BXoZxVBnn1#Lu=8z&}*W?|KxagUpNZ*hB|^-bK# zW!RQ#eHoMH(z>Dv%T3MInml&+QcYuGTECcf)A~NZcVlJ}=6V9bxUzY~DbU8oigRn| zGPB)M6NgBrt(YJsq4T$ST%v}BW20T~pFaz(=b^{$pryc6HEE(pRhyVsyUZe4N#62n z)?^{_W*_zh^OJ*<;yu?>0TculT-&P~24sv&mYhjWgap_zR?Zfdnv$HGoLdOm4erIh zF;5d0gbhPI5lx}>eGL; zX&iOo8XCvL20xLXb31nABVyKVaBSbY0Evp@CC@KPa=mw^ADQj(ajjsH2QuY(`j;jeE%2u8?NPMrvw#H3wZf z@l3$e_xIQ|tLlypmadk*7zW?J?zJE)Pu;7?Fm!;vpW)*sW|g%P-B`s=8i5`Z>x!PpoK^Mf+>C!1=)OG%;!stKJ`HYbZsNf_K{68mI?m0CbuyAM zdzi<*wz+OJFRM;S+G{FqPX96V+$j;7NKjYX$~W*LkyDQTc|v9=(B@cU`SxeYI7VTXLM;gc1GYg#qy zV}nF&+e~ZcJHEoVPe^<}jwG4OOSyjB10l@Ji{ zv8P-7@IS1+CRQe4oXhXLTRI5m|+FxJv>Izf7J#@h=?$GGB03p)Qwspa-6NFwZ@rE={z6X~h0`Xccpq z3DZT9dmIU+@0_+ct&=zy)A2}yG<~x7bnc0Gomb%?J{Q%6>A5?3ZXR#B@Bv0G>ul@9 zyXOBjO5U-1<^Tz~{tM(!HnV^K$+mt?Fd%(v@W9!c|E;=&OY`8VE`95er}p8-U2^`bcYN_3jVMwroMW8AEM<)gBL8vb@cbf3vYA6%jP#>u7 zG~mgqASSsWzEIt$z}*0^#qiDjb^&XF{2_J9zcu#T`mF@=r_~4_sqeJ*Tkzp^3pbnm zl~7bG1!uidLIj{Zq)k@SiP-@QAUgyFDa|qh^FadmH5#btsmgnO|D>n{HUVB-s_9j{ zq#UY|d`jL^j#MGrHQFY;X|fJA<{U0McEDl;N>C?UGGzSKv@q+x<&qG{kQ1m^6o^Qn zY)}-)+fM#M0jMR8+Ulm3Nkg&GO)O0-K5xa5%fyjejBO%T#yH%~LrK2SnUYsg zAYHThucw2XWwK7(G^~bE`=mTcPu0{-IRbL|JeDs+`g@b z9dF^rn8TcCLIPxx(hJ#FrhXI7s0X8UTvt{&s5E8c+4=G-L_kkNqJ*2BJ4K38kmZ5p z$J6Xyv8@a4=|6`ir_n$+oODhLlLB%qoAkG%Ge;YBKQYKXLk)DX+U#zbL{7#}qg>jN zZPhSF)QiNnb#C{`Ou*x7FND4#&WvZU{pq<@W#RWk=CYA z`a(~(_j_zB>!?~qTOEHJS#z^kN3^(?S91#1)D&H=_i@^AMUM)fqXU9n)4Rh9lio#% z&7m8*w8yLpnvL~gMfz$MQ}2n%N`WYgKhVB=ehWb-Z*!uXpD+I#A=9b`nv|@N4xVRHnnG%qEpPOtNcbr1GX| z&KW5UPn1|isJqn^R-{)uAa;r)yugCngvBV-G`KoYq8uvuk=e4 zsfU$s@H8E6#iF-t*+&Pa)yVq*0qY-;F~WrG(Ucs1>l-$d^Z^302_euoY{jhpOW ztx0Qfb=t2BxdDMr9YW9=pX6Vlh;9lsgcMH|g3ubD=AWR5ZUR+=L@x?yWOGms9Gx`i zuEov?fK*JsfJ#b&uLqfA^K)e^0;yzUpb1ziRWOfgN~~XsY`QVX0Fh1;!qIAP4ftE~ zfL$wnO(#9iA4E~z94ZR2ULA65YY+nBPP||oH4W`wxzJp2# zQJy5&L&HprPZ^TZI-l;ZqG;Y2vI3z_6ke4 zPf8s`SRO*34Gm)t={)GT4p=tmst({baDE3YysuIo=4L?R4Oz8MWj-iSk2%KAH0zK0 z#E+%Q&$TK9eFQ%?Q;%8~=F*O~dUR9|pclY&kFy@0*H8L^I9nQE4;vHuSPnm1hBPn7 zyF2EX2Hm2{Q#&l$A(1}eGyN^49U{XG+VKv1FN+wRP(c?kOI76pX1??{(CNZk4RF(P z1LO_BJTH#`;&c}p$dL(J*WPUT*z~ybuaKCGfbFPn_(aUp4;@XL`it6mcFnORtv{#g zq|-6y-M}Vo3(}nnh-tT(K9ud!823zixBAhZ1leJX(w=2`ACnzNYnh(18g_F?zf}{L zE3(EwG?InMiF`G%hMQyqevoxln?AIr^$5dzTA3f!RUew!l?u%)XAhy3n0WmvR>q9WxuQ)K)gH1^=$PO49lC=B`CVbWx_ebvVjQ0i1 zUY?U#oVh`#jXVLT_uk}QhLL}|>}#a@H$IHmPZj#FoN!{t4!W-%b0BH$Dcb3U225oJ zPz&}6hZN~psb3L?7U@_RQFKkuAlop3kaca_QFINUmEB7i#1B+NQwOVHhA8eahm_rG z5^T&9wat#(iEWueDZ6*kOYOTDv=3lJYX`An&L`(#i{uYvjY0>rqB9`fFq)8et+9*l zP>os#wPH9R-LS?ex!N$CPRR6l(8ikBCFuuuvdx83rM5 zStwC<&6Fv+_sUgY{1uAs1dK8U!=g1q;IPQ3yocFE4vIz{L*g*XD7SxtwC(#E1P=g? zoI~QU5JKe8T_E$AFHlIMK||y)6hh>%s8Dd3F;RGpsuf?V7mDvVj9LayV^|>d=rd8i z`pp$y3KuHxNQz_*rbN32@i5KEy+_XEUn&ulUWkZl@5V&S2G^onApH!hm0pyLdIr~G zU?BZWvn%dSM>Qb#=vgU0LK-9vvPL%`{VcMJ?r4x^RgTq2v&+V}NVDt4xk$D1$Gb?i z&A}&jnGBi|ci9Z02>VzM2t|C221g=4R)eLGU;BflP+oH&(kLDZAhb|kdmz%N9ugqb z$REIvYL$}v?~((Q8y^D^sY66U1abrbs1>va-_s!4)UWnPw=EmK)9bekzgZ4g zqdwdg^fUoiDvFhil#j{Zb6j?sP?we!W>V>yIXT>Ro zvDpOdOt;+=^yct*0zrpiy_(S$)#lK{*amLYL!l1N?1yOKgSS1%7_y0JwmD3@a4`?z zz=!eFBisZ-8PHjuj9+rLXIX6zUG&)VZG*kPyfbtEq8kjl!{i3G8yvdhh1O>a#?~d)X4}lFLcL*%L&+HC)+P~Be4(kZ~0-ZY8xVz*ME(fa z+7I_4_D*OUnD#>U&G^0S7rwQRvJF!AaCNoOft-$Jq ziN#w6cX0be@eu?&z;|xNemuXg2MhFdJs$GSK04rsqqOfAyKxs{gy4OCH>4H|?|rQf zy2noFZKD%&7EZvyS~%2zkrPWbf3hBn5xY~)aU*iD9+nYnChyiA2!w5yzje+BsJ zgq>%UdIZIsP0O64k$ycrGBA73KFk5*l|8jhfn-W)P#6gndmV;8A;pea{7x*1mwo1Mv~zsP^bcv=By|8TPb0;1RkgoDr%Kf)SZf z!x97#dXM+>Gs7Fx)Azs8sK9@D<`V>o$n@p>P`RyZVAM7)V>c+0 z`|p>GV6nmo-)Aw5+iIBQw3 zpJ!@1nT$B}#Mi~&k@nsUeHi9_LnMJen*f=Ub*&5 zY623IBvTC^CZTc}e+_CWt+yViA=?-C$ho^_;589YX6N;qvA;T1X`G&G6j~=3)sagL z?67J{=3tD(St9|UrEIEX=M-KgeNqjsI6t9zwkxV3n^Z~ALt~?pr^Us)+wHJ1J4v2m zYFauc;Jl^Sk?|~W#Z8NeEo&#%XefH>Dy&6I6(_7>EuiKcUD-PN$S5&!k0L^Op)Kd< zs|Z5NFn|B(kb$8h)D`Zv1{iechBV_Aj>asFV7UrwQm@Z4X~CWnkBh!z=%kut-${jp zbM$+(NJH`GjzgzuJV4_izbs*O29f&g&uBNEZ_OR)4U6-5l64T zf5xwZ=pe^<=elYIB!x1rWCMWP0FBPL6D68WT_F=WGG1pav1V((%nXaETx8nlL0{8= z$QR19q5V}ckt_h9Nw-!@{ODtSX{9rWT{miMZRe`X zl@?H=J@CRJ@q!NUIr0@(CoEj1qM1okD>8R+i)f1W`*{0!B)n;<2l@{4{ElvOk3Dmb z+dLlsK!iZ`<8tDn+E0Z9ZNa*7C)Z!*9~4A$!QOC~bGFavPedCKaUbM)z)$V#SM$ZV z=ur)b&0$c|9Wt-dVYGf!k<vI zra1mx^_5jC-6Hl?NZn$_}q(Og^f<3Eb zpqr#9;Z(6DYQfpBKjDkZhmBbVYj!8fLlZ9=_8W5V)n~~C4kE|gHE@)x9n+Un4Uxih ztYlR>#!uthDkv)4)q_JYp*i1y(Tin4vtF~mae<(VPx5E(oONM`9CeR_%f@y_%VX56O|Y4SE*FWa z@QIzz=k~+SDezjmaUv=A>df;LHK>Mn|Ap(|CF&CHiI5@GT%UZlHi{XwnVcBVsa~v( zK0jJ~6Bv2_HykJr=xNT#PamcFDX9M(UiRO`BxLuKIb-WAZeVL{ZQ}UPX8K>16cW>5 z2`B&``ps~v)14kKsAZ#Qev~*!S%MD<0FtM#4K~qmGk8OKQB`sW;7xvi6X_pf9GPM8 z`}_OW`;`a4eatCz3|cNY_V1tq>8xmj!>Fs#Fp_7`LD{30%Q^ z8e}o_R*mK|yx=#UAtXFzc_iW>P@jHj%$A1LO1}Q6FxBA^r#Qp{d|`6;y-9~3J1=P!_Ji$BbSSPJM?~Czmniq9UTRL|JQ`x9S=4R-58lOPV-4M?Qr&JKjq>e0 z+7KUHb-i=%wUA_gJFx(O^EfYEj_J+EdGb}-k|ls+e~>P4opp;dL~_MM+lLns@BCZ% zsH*T=>_5iHxqe2J{xhfJzpG2a*51Wg$=brm!q)7cCHBuQrK+QZErQI`!!s3XGROuF zoR}^g0MIxrPKa1!>~9Pa0F2lyT$7n|9U?I^+dpkhOi|VRBqQ^ht=HeAVrc1ew*dAX z_&xIAdb@lBEMD)v-s@)Tw&yk5v7__;+~@ZJ@e?G|WIiO#r0F08i#Kslip`rkL`IW7 zQbR30-I5RX_~0Y}+je3v2Kx$qV_H8vkE#kOvR9iNf>!h9J3QalEvghSGaReO>-l699;yJiu3w2ihaZI)ZIyt zYdHUyO9r^qGAJJmy{3ZDcc;F-uvQq~G}uV#!FOka5bA4xKF*D3UC0acp3ROUIy~<@ zbf0}jI~7ehNE^Oipkg1QywgVGwgZX%iUZbSK1D#% z`LOFsqUnT_6~A&IhXZvKZc`kKE2;`V(^W`17gRL-iR3PSUv~>EH1N za6rVkDR_?6P~Bq!vdo4M|CNyd!<46XO{FYJ61p5JF*Zh*B1iy-uCOe4iqSAx`ZHop)-i?egKyEI!67fAg*vz?<~HQ zVI$uNU&?tk;UEt&1V;NI3W$W=h+JX@(Fl1<{Sb#DNS(~ z+(X-=NHU(`fkl%=)}a%H;e;nrqG1~Iq#>Ojg$5JTI?M{#g>W3DWEZofH9b*t7vCA6 zEL=VV++!IH&+L^o^cB{Tdzc0H0M#$?EJ=gRa5W;`h0s)*7$VQs6?(5YTzgMps7R^^ zbK%z#rOLh>#57a$qn)xrPb&p&wzSVl`tsYs@}AP`iu9;FCg zcI6QZ7_jD;qL|E{#@7$A%2y=M*E#gVIfh9;i8G7kKg?(4(iGgFwFjMxOZ{NSB!8q0 zG)=zY?JA_Q3cq=x&TJ+T`$R5I`u+a3o72FqvtIt38zP|pzs8jQyBqzm3;ts}()vk5 zM*otXCCwt0g0g@t7NmG)rGcPaLlqzw(WC-_Jo#;tl-nAWWxcV(KLAx2?ly*ocQ*ir zXN;Yf-f#_!ygPr-dKA3|HpXUmWHO3j=B@bM1YtowB8cbs#rK{2Is5JN{hfDQZ^u>I6hH@d@>Bu+%@_~?cX(LfI`Zhy{7G7Jq%*t^fwExv z8Jq#?-*FTCZ~==LeAuvsU@_%%g6R+fH`77&&}!i3V@BdMBF8iu9x)Nw5rt4nvb2k) z#g6Fl&MulMlW=F8)wl}@r8!t)FYT>y*k;Dz$yS@SCZE#!wsVWM#<(i>QTZiPlbuUk z26LQ^>iR9|9f#nd`qrsNute31dhxC?Vaf`wjAQ#z>6_-7W_#=@T}BGnoH~Vh-d$VB z4F5=j$mTQ=bVMb=v|BRazJsf|bm%L5q4sDT2zws2P!HT*VdtlV;}#1MI2Wa?LA&L6pA#rCaD4CSrpl-<8vhC+sr|((3Gn) zTRhn)g0=ca=ibB>reWEnQH;eU!`mC!P)H@p`XR4lKE?V-3-;uLZ7iG-cuIgId4hy% zss&9x8BNAdj9fu2sm~ECV`k~QqXv0T`L+tAU>UM1n6OPw&Thyu$InmV{sLA@hN`|j zgyu8^z7Yml_!9ZJl%^%aECMKPjY<{4-vtM<&gSY7#1iqTMCAqyspjgDqA(8C^YQ$O zMN{XnC}S+mhCz`?n7AWGl(=hmz_OO^h-Kmpjsu>ow{#W5^~+h;o(l67U+D+1njCGq zs71Pcls1B;56DB=5f9cA7^ZpkEZi|m!lVZ#8Tm=f+(Asj917F#KVA)a9tj}v<5QMy ze>4{BH0QPhT$r3iFA3V`LaC7{=&I7C9q6dZ3^+)q@Qb8v%C|q+9KI~oxvTw5%zKl= zOv}43fQIQD3Yv&=*c0cZElM&Tw?A0a7S_cYHm?T`eQ;RtHZ?Y+J67%Ezp|+$mTn%6lKF+-mPfk@>&K}CP8f=0(;Qswme~Vp60|0>n z6-|f=6I1*gnD^UDH7cq^O|@fuS33*h%d zTtm8FAn-SG&Bsp{o^y!w3t9Sr%0AFLWcgy*J>J{L`J#FF;L<+a^D49@vzUdS)d@z$ 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 diff --git a/libs/asm.jar b/libs/asm.jar deleted file mode 100644 index 334e7fdc7f08e1f1b10f9871ddda951dfe7f2d84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43401 zcmagGQ<$bfvn^P*ZQHhO+vZocZQE9tZQEV8?Jjm1r}xa9nfcGN=gdXE$g7O?WaNs- zT#-t$pkQb~KtNDHlycKN+Yx_xQvUtT|7-u%D=)4lOfRhUEMVHej3 zGsJ`@{vz~!AYUvhQma&^s~(D=4{%ak(u8AUB##pP*>y!0UUOkMtXkI3>vYVFt;nxk2Y%#*9c3;Qyg#`=3#=|7AR&utLt`#1Pz zU?3pse{Tn8OGXD18*@`v4|5YnV;4I{VS9TAS7TRe2YU@`7i(7sX9iP%v5QMuJU`5k z5K`D4R!Zip4N`^O24 zQ7FS8Ot|b2SEP#nF<@ML21AFO1R)|xjX9;-wR^SVCi)&QMqaulGKoU3E`^o4 z?GHFT71rvQ@u&THqMz2g2*@ve$xE28-rG*=~Rv`fQDz48x7y@-5lNx zI~sC>!f#Pd)t^gi2+XBl4=1<`7qAJJS0eTU`cDw-epN@oLi{rx0SJid{|5w3XKPpU z|A~S6l`5(x+K*jR4*W$G)fmS~QRGS@*xeUYqzDr32xTHvB|WiNWLPMLuxx89jn2)M zfPBF!9U zy(kJ_9_aL>^C1?PN1Bc00BgQqka%v(@f7z+B-Kcv7O}~j7!!TUm$4NQ=MJBj@Nnct z!KXkG@EG(?u#J^K?ON*X;L~gO8y$<8Xdz3f1hC~uk&8yji6}bCCUuG@7cUYrTYk@V zj5-^n`$xX~?zx`1U>t*v6=ThET! zWc@q%9Nz}yhtO6o#*$=L{)i_9KL!rvioiin86Q|x#$wPfc0q;X7n&|bD;ii7SCmIQ zF+VszD#S-DGZzSCPLzfdC7DumKEXw<$1*_tw-2cVd^Eh|BAt%ABgF%5arl{zUlc?G zZnW9%UXCsgt3=Hjpfzy$#=2M~iPX?!6gvb(l|u-X=*uQ?g{0JVR|u=6?syokdT|{f z^^T23M0tei-L>@s^Gkcox}w_T!Vg)=xQ!NsM*c-?pzCl=LRs=<1Zzc%0C(C>GQ75te$mSS8(p^fQIX0dkbIvSJIm5G;W)icZ<-L>%kn&VH*J;LXeiMf3(A5pWtFs0wJ*JnwMzXfEN$?& z(oi8&jhWV{(qKb=kxmdKEtb^`tacD$a4-)*>3nXYs1O(fTvxfw2zS{1^hT&GI1dT^ z`p^JX1|94!Gnj*~ZXfAo6B|KP#SyFxC3o-Yxr-`k0~r>_%%*lq(voK_KwB+O*Ww(>g=CI05pFKYN>_- zKjFptg#F$2csIc2Ri?Zj`C5Z=Dgw5=ZO~)|J zuEzZv+wQzndVdt!)Szr#VsyK6;wW|Gs)d~jp<)$X>5s_MlGkitk(bUWZ&+!!*yVIe z7o18#^j27Dj9B!kQdyD-1a;M6weNSjfeGGpQQBC7GH*FEsax}P>mQ6flb!3{p_LWx zQT#__3UTAhgAi(2?8>L(d0`s<<>>0=-;5dR59(Tl&mXA+SGTJ!m*p1esu@LXw#o`a z<|^EE)p!*a$11$RNWKC=W&Is>&O3_c#?_{W98beSs8~ZwT&uMvpXn4|je;7|Bm+jW3E#BDQ$X}nmZ0&gK4+JQMN9K@qFrcqe%qj2T<(>%eTLqxH8SwJ_y_#Od~%CAjxv@_O=ei(*;e^sCLIysg)`%E z;c0%Mrs|1n^rl~=O<{0QAD!@t)AsBEkx=psnnnOYFq?UVuAl7HZgrP;?fEW8?K)wEinCzu6_I2~FAk^>^=!?+fo9clTa^-wq^G zC|SrcBAa7lyaSf^XV4R1a3&l!i`{gT20N?4U>j=g65Eu2YW_?SLZ|e|d|Ip2Z;&kh zv_OAJ@ch7yzW~0!=CODZLsD9K<%7{{m&N4`pyp}grSRGQjd6l{<=yx?HLnSuVzv}@ zd_mvhENGqNZ!yg>@i|cWPR(kWJ^yM$i*PM$ted4kT z7Q(Nr#g2vLw&>=(4A;jBVJ z=ELn{m`eVj%V*B(tyQ01ODsG@KBo+9y`=67mfJrh-qZu)!< z+Rh@Lb)ru<^DQ5xrDLJ66@^Y;Gv>7CQ|@%c$dSs^F~umZT|Jo$bT z2%{Oe<^i(M7J(zUU&pU~4m_AYP#rM};4hAYVL(G5;oz}dg$I3s5e#6=*JD5sJ9kGx zIZdJX$q-s)P6;yfIe_gu!~`;p$wOU;}Qg= zrz(fs4;I57)kQg-iI87tpc*oVb~qRPga$x+{+V%=$srlDKHYWs?faOw*UOq$(7opl z^mG6cB8Vfqc?1`NBtJ%h-DQ^OuP?W1^;>f`X&w8t&w6D3P>`S3xo* z!nV7Z6LBSTq4H!VM9zdfMOSLO%}sO?g1q~x?Ca3Fx*=5;i>F1@!`1ze(5TE-wv*g8 zRD&z4Kf~Opg|}}58ioZfNUkVxBXh3aPDw!W@NHDic-v(DQrcDq!NktmbZ4qAd02*{ z-H4tAE8xf^aqW*TpQX}{Rc=WlaM@(;303(+Pn^iYlS$t`#%-y+UYe7hL=2q%7&N;4 zU8Pm{L_`S<8x@TRSMed%CymY^$hin7;csv!n2L~dAwDCnGh`_ot1FF6@?qo-r&Ge?NnjMm!y5Q#%sP{|) zQv^J*ybHh*Hk#U3IG9pmVSH1Tdg&Ex$rtg=D*PBHcHxF(HluS;N~{JavTm>t34=sj zkkbhyWSc~t(_4+;H)wkofz;mRl z;+;9!manKLM(Q%2@3ZpFn@FPl!Y0j@S>SBL5y29Vjt2@X^!-9=oQp2}`Yo%Uz+W+A zy6*gSF$GTkLW|@F@CxV2&)4{D8A3E=Q#13Uz*!37nz8L2C~Ij|1};xQ#WPb@3uTEt z?W3##*ec4;=;#`|ALtldg$&(5e8`Jka@8eLrBwJBP+cq9HBy}se_H*tm)d|SG`9bg zC@_cak*N?`&nj}#P9qqn*esITwe(qFPDN_i?BVN6istoJrLokinw{+2Y+9m8%=_hq zUtr&BK9d+)l)ev1Sh?L3LXE;3G%@;%7kI5{sMq>_ew^yWsf_$+eih#|Sqa`hKSd&M z1Orlu#oE$@`x==8wC)~bwwdWX4T(Pg7iXkGDF`L|M^`D}KtN>wtuu=LSIQ@BX6*QX z=RSEUx(+D9XyZS_3;@`rMI9gE^VuqWdwmDSXl831c`2Qb`BKF9mH~+NMg3;Ly{&aI z^Hm7p0HQe`E1c|#IJBJe>2=m#=kL3tv-Vpcgu6^(*6B02`WcJI*CB#+jk)KpRc)*e zgLdY)li58A(;nOOrPZ({1l$u-!E>Fy&)5AHy6yn$Ue`Q>v+bMiB0@GS2FuxW zH9wIqR7&3~!|8Sh1ysG6gGn{BrrRZKznqj@L(0GI=U)C+5p}n5A6v{R1Bt~gbs~}& z?HQqXf3N)m&?JiM5liVhjUwd9=KsOsiYy=A8$VKQ6@HGJ1?^M5|uovM&EzDWd)$O;DdUB z%0i@bI~(D}Xzh0dp^d|wa@m{Yo2uj02p?%h3^oGil?1|#)0dtp54mHA15O&E@QK~S zI_O98kvu{>Xh-;opTn3MW&OpO7B5J|G~ORArRSt4FKpqdb|jmjRdPfRKe=3y^HC`48UpvrO3dw}CG2Eg@d#XU<$(OOG>fuxlz^)Z!RA`@IP zOR!4AX+$e6-6<=xv5D7K6F4VFD=Cf^S*60zsDxQ>KGGaj5ghpQKv>_wY?qR-wlGfH z+cs@MX;3K0aXujaWNg>ITAdmbMTM$$C0M6*)zWXduk~`}>gfG>h~LuUIjI4- z#&<8^JL@r<)$(^PcXPn&=Ek@puuz;`7rtR^U|gVtPpedO}9mr=!hgXD#dri5^UNs7J5*0iMLE<4E=&D@9ETd-wj81!sD>_=8o6BVM28G203D z-BsDRhurv`)tWQ$@oT<6zn*4mURj-?}n2@AA`q zO#AGNkVGH#x;~~e!HbBP*c|p1z1=>wjd|Tv^tubLn4uK=9BF9!lnw96sG1%YOjEp8 z0AZ|T7~^hMOj#!-3sVCz&c)C`x#@L*9Ap+UmYQ6Zpm}-b=~PV92@5f6q7sX(3VF^) z_mOf|fnR4P%LO+d_ZvMDMI{YIJvGCzwK84n(zJ4?yqXS!Z+m2LrAV7IRQ)z;g8fh* z6cjm;c#iqi!<61ARNXtc+#s@P8m2)K-qx9644I`oB|SL@PPggK{RtclD|0`Mx4u~e zG~`DShu3NY@hC8xQ84cQ_y=Ux<2Yf)=0mzs38sj`Z-jMUYUW=q3mpMEoery!khgwU^n|;~4wRZCO za9BKJD@}E#f44LojEq`FOcwl&mC&-V)mv)qu6Dz1bh}L#+(NqBB|mscwtVJu59tDG zuWxRmBuwCs8tEH7T_d=xqn%fv_;5QZG4`KWYN>gI)E9IcUM&RMm-&5sHZg$1h*22kf!i^p7beGUK;xh3Uo@7Z0NovZK z)+Ibix=Sj*adD_N+D#Rita|F$ga3K1)?GE++HQ+3mTJ+gHRwdn;8b)~VLrCM-9?TW zf&5tLC%@?p`N~^RU$_b3)!0Kz7=utkmxg`Hw$}meeG2yc5S=Ypt=pu(GzX+vxIMX~oxU+aKVdsQ_#-QN+0HuFdG>D063vJI09d zP%l?5tYMb*9>+huNItthKi?ER!zcYAu*TeqN8CKV-p0Og5P=S#iFMb0+6hS_fcd_< z+XzzOExxBvlf~VTz4^uu=`LyH8YL=*6N@s^iufLTGtD^c`{|OROwwPL1SJ$g&3Y{)N6 zxfA;!W)tt^WKUkpQkgk+8xm0;MEMt`hEm@ILqn@>hQTIGqEGmysR}>;#r(?f$vB8} zNNz?-ITo+W=9Wyuqi&vg#NK@8xu?UMuuj^Pz?wepq1Zgj)Mu)4qP%)aZoDeDXy%JF z&xu#xR$CsMSJh&NC#DKfEL4w$ej1Bsmt}SoM_t;F*J2Zw(D&o-I8e4Sa{LI47UAE` zfsvwTh;>u)t{}p=mD}F`q%c}M36exPzAm3oph(^ZA-)3FZ_$jYsmKoLR)raPFGq`1 zkOdH>mp@M*lk?E;G%84^T3FZwrAbvw#)3U);UG9l7kaKqNMmu z9IdKN?COX3-Eg{(^LofQS&wc`$XhAr1FCf@h^i^QDx~4wo4T#_pCk?@0HmAq36&f2 zn3;HzmNr;k=Lbbp-iMLXZL$i*B>{>qU{16?-n<@VpCW_VHypWSZf+eC5%4@MSMx=~ z68Ib!ckcLYmksg}4G4KW*Ym~|2s=Da7kBpf?`~N02NL-9i^d5EoL7!92tVb+XZnuw z;1POv)R=JH`%4U-^WZ-h!4Z0iu7kr2o+ID|PJ@>EcfVi-&VtAF97n)^PJ&AqxK4wS zF=M;-J7CB3?mA!jp!CFz=!4uK0O7xY zZvz=Xccp7>p~VWv18;by%KrCb%ebB3ETloyj8f|g}!Co7gaJD&|mI_ zb;rIl_Us4t7#0B)5a~!5a)a20m4$!xXn=b~)G`}DYJEoi>km>ub_e7LilB4_i$oe| zffr5#svukqte6b0I3xq2iF=2phI7X@!@4iav=YcDIv;3hlnq>A+y!hI`HoKFiw*<- zilb*S(41&Fur`_Q5SSn|5$GTS8bk}{i2w)M2Ob0ONstZq%2B)T0p*LCj(x|UX+H2W znI{;?0%{Pb0_qPn4gZSF{V~4$1wF&QFRo=eplBQf%&7cgu4Ozx>sSU{k1}n`v=z7} zJ&mj6Ffb?eI9D_j$XT=yXc)K`XgIV5_llm1d$*@_X~Cl_WE7PnZ*B`UvIF4hPX33R zEmRAtXGV_x7zVQEf1$_&1t4qKnDwO-G3w5F+pqz#-KmMKCB1V8xg~R?4}uC(;H0%| z1;ar3Me4{MGzvxsBFjHB2|{pcQVUi`+ORad4QPw-(h7?>X|yA-Xy69x;-f2=B}aO0 zpa$eepf|`MJ~n9+XiNkXXpGoE0f-u+2D+i2e6*Mw(VDBF;5@aUyEjAPp^(-OjF+^Q zLzW5@3!{bDgCszvp=*d7!GqGkvY~58=0yr~2L6J%BcBsDu~69&DYcoGJI1#Ln31`gbS2}tcDfOw$1A_a9r zZOiYIg8dr z?FqUekzqcJ+Ys$x_So-EOa|`rqY8mWK9IO}N^Mzq4JzdKv`O`QVgB0)yHsZK#@y6# z|D|V?>c@@5Hzt4$_1fd@8QSZ==n}g_$Tjsx(A*lhj(;#Zz7g^|efaEeD1C)RXGe_f z@Ex(qV7V%6J9wwdg5?O-jtL$RXaUEHVNw3dLSt>7RDfTS1 zF3(!$k?_P>*NIf{QWO;B+5*NQA10#XII}y@MnYpqWz;TcehVXDh{yxzhClM1K%MSI zIN#*Hm3HM=n46kbi!t56eS6bnUW{$OFXa#}w2Dc_&yg^@!8+ zG1N!afPTm+-vGWFal!>Rs7n)Nf>n|7M2`XcR9|~7{)Qvp((p0TsCEf#Y9*mLV%BD* z04%nAoX=%^BU!J!KHc;NC|j^biJNx(zVfs6fhi)Vfx_a4(*f)W!NFYJXn)=*i2}ITh9k70@v`OQMaW8i^1-y%^&g24%s@kcMWrd2H_*34M67ObaA!? zV3K!^cWOmnvrJ9Ai95s__nt6_ zFHQ!5xFh#ERD_is>PfNPY;2?U=w#bnI}gtF+~8kE*{U6w+M!*~p z+!=f?7DF+2odL?ZVO+5C=0(|hh_=n+NvriWrd zYMDMFEpTZIw6FRhcFPV!IQfcrE-O017x=;J!1dfdoXQzFH+-27b7{}6bG6B2vQ90EK>TT6?@Sxs4EJd@ZysU?WlN3=$wm)R$W4B@D zr@|36Atf+!)Qwmm*eY+7vtMJ3qR*?&4}Qj4A-VG zldPRt4hq<&KUW|IErjJ+s&j$%3cT=d!Y)_K2MMPE#obr!N%+DV1Y|(=s z#;h-YAZIkB9UUpb?~n)>oxx?Tz@5HqN7l6L#=fm0l%IoPqHiM$Ut=o^ z!da%gM7gl@4%mXr1;)NZ!C@6Bz5b{hFoAsm8xVn(35o4K7mAg7C1wxGuG81>dr?4^J~O|M z(m#(r+U%K_VSX9ZIv9t~W`q`954c!D?)o@`ZPeuow=vU-?a+udA5HQzoVAdeKTF&iKcp9K6xw>nz2ZM9VN|k1e{$~|x$$8~!eN`r&jA=F z7AP2)U!<_iv{5S+Q0M|5Ajm_O)dO4~hz1RW+jMNa(h;ITJd+kjb*-v&na!ij961@K z?f~9o6mr+tGSR7A{;}_HW;J7tT#H*4+I$mp(L3Yj!Wr=4YzD?d>(U*ndYcKg98;g?6SKV?=C}1JiPltY@)JgaD4ST!;j2%h<1c z;os|wg?eowCr!>%<}A;!X4jfj^=9J&JIhqhuuY}~b7;aWs5{~&CD$Lm=>sz)vHC{N z*9kD&gdDmS0cyD%1j9R4d{yp8cy5k8_OqkuvLm;AJnQh)$+*4->)DErZLIr`cn6f3 zf@n~8UOMX|IM*k$6U+gb@Q2k+(=-FYD_Uw$XU{r=q}Qr^QXU+uMRlmI#=Q_9wD+AV zed0ede`|)nExfR$9``{Jj~+S8&YnXDlV{=?M0GEopR1Zkjn`A|s^PxN*a#e4_lUb& z8k%AuVTqlfG`9!%UHOa)rxWH!ynYUuKMCNQWX;YNQ$}J-&xh4;rJruZtAwf}yOGO8TY?RIWX$qIC z{oTsLs}I;eioi<9tTeJ#05fCwiC_UR#4%+!+Pu&vQ%&918uRw*8?`pw>Za{BH>)7s zt@HLP8@1weuH3Nnt8}t>F&p7cq**rg=k+vK+kxWHKK*pQ!PrYvVP{T1sf0$#tpVwo zzqqFGMSz+p~=FXaQHBdO# z7wR5p1)Tlu2%;oV_phjyJUP z?|d*`yOsJxG`5GsNmlo6Q3cH-KX;>*|3#9Ml&jiuWSS*HCn~~27W>lSCCJ7!TOOJc z9C`Oex%RDWowuOhPg9dIo^pe$P+@@3(YLDXd}5m!mhX0*Nw-85@3Us$pCaH6j8P%h z5t|xk`FU8nuJ8qB958+Z*&=@CYrk`kv4v5cg~2t9)SzR*OxVa(m;ucoo)(rt>`7lU zSN5C*c4vf6H?pZ!P-D%~y=tTw30HS0F;g19>eYk`$yn1RrX-IPmu|~m!yM`}&J=H9 zphaWC-12I@U;-_fHxvMGzW91ErgGD2 zUElw!Z#5uduqG}I{g#jZBx*#Zy6+^CiyQ97=8?yUb|Mg{tsIN2VR}8lM@7G9LceXYq782)NNtxXrVUChD@~U@(8tBe%U~ci4BtgGfca~< z7{cSySFUTaxtUecksp8X@1dpY$5;)kCuku2OAvi%0^|pB=|`hqh3~$0hE$ipv6K+8&I0k8QluzrTA;+pOJV3ooMH z3yAX*##2gfC`%`11g5XX00bnPDQ%Qd=Xo3E76lj7U8L5$nSSMKOD6kS1_~>we6Pzv zFPE9K;wZmM?KrLFlG4z17Tc(=N)-r~SCgNJ@ntZ9I`}*js5~M88>j$#)K9qSTfX_py$ zY0(Z^l~RPJo@G!7vBw??0R2M%7R~q#Jhg5#b5j_6p;%K$V#T;K40ScF%ocWjaps3i zyQ*9=wxW-w(_hNVbSg!m$J!*nQ_+<3s53Aof4y(Kzt?)Q;$O^dt@ z*ukzqdtlBkwxhT!rii2A^j^KE1Y>5s^ z>qj^cJ)6$G=Zv0fG^<3%96M~`y4!~+JobeJj_**%Fo?q}_sF9UWSMb32twr05Hi&l zW98HrLY1U?wORH(&FmC>T!Vx#_=*;Ea8$7EfvTSveHt`wg(^QtsZNmk(8{vvg{ghe znK%aYxTpwfe_e{vNwdv~159nq>M5@2{n+?te7R$vH62BP`vUB2EDP2D*>~7Hu_gow zBA~g?D!HNudlz-c+N_2sh(qNTUd`6?(jO>KuV;=aFDAhAyVkS8icsAf;?DOq{qhHS ztMp2IMe|mTw_9*yIGaI;_5N)|{CIr%BPb>zP4yc=b+{UlUODa6>ngxemsNMsALyPk z(mIN^D;@(p)gzZnfn1)138fhB&%X+A`j8 zR7y}>aNQBZ8_wLmznj+}g%53kN$6@QGA&<`{nknLK?7s^1X_TSPbu&_4prfcC1v#< zXa;OMwS<9 z*p^BYV+z1P2P0o}qbD(m+*U5p&-{x^o0QataEeFt&3Z%I;(Np?p}C??I;vml@D2MO z0nKCKtghuXHA4b7}CoR%JpS> z^^$AuVrE>@;P>}8r_8EU%xZ@*2A%xH>}5hOU*=gRdFEqtg>1AX%|$tvl~4xK@>cca z+3Gzt^{S~FKkBR{CjH47RhF`psqGAucNOnK+SK`zqtJ58(4O6#XLaK?S?l3=mtg3* z{oK;Fw_kAz0Kw4{*>-kt8Sz>_U1+YoW-;2A^xLee-WL~{YdAHU#uF;BAN(GLP}VQu zG0^X>M2WMurDcQ^$}jdf5cw$0eD*^{aF!Te(TjHqo8p|!rLw+;vM9y*_+?0#-qi1Z z%k>4)#hP=qU~}NV9fGB%)WfB)x!P^|!##P2o=~6aPSyjnZNJ+wG63=M^sv$5$0TG? zVt22(&uyz~Tpu=@QGK8{!acP#^rgX>yp&d>$6hb)jTqIWg!F<-5^9Z=Y-=8`>> zfIsayMUg(8)Am-={L5*22@5p&(fxS&&Mzi*=)^?PR{t;XFUMbUy?hX8NRZO6LH{>{`3Lbo zbuc%aloQ1NwAbqYv@rjhqxb)iUgs%KD-1Is<(4Hp0o!@)A#pCka*HZJ1)){Wi;D?p<+3sUf9$FpX3%C5oa zU+9wJgD@5;%w>=6E%Xh$R54YlmN-|j*bpIHj%pm}03^wC$j`lR%qy1J2&DbvTN>inl1 zOF6XBcFN&;^g5oQq+8A_lHr6ecV3f87c_5lsGtB%zxy!4T1i?Kxt=p`VZmN>?VsuS z*+*C@&V~%31F`8g1RbALXOY$rgHJR_x{QUWY`HBO(ilQl1(rH3m1i^z$q`Q zi3&Z25<$x#!D-DV!bzL4pi-g|{UVwYwHwtmT+pE29BXSE&CdGOSlBwYD$ug3xuQ{f zTeW6eU;knA=lx~l5h|B#qSxc~cmIpFPi^n&rcZ6_3$fzo<6wvwn_-W+PjENKA6Oxb z;rYb4rbxh6M0j|vWv}Q1stHNsdbX-L&$>d*_j=`t<%bk#P`>V-a=u2`IO zg>`Kj)vzZQF(&+tYlw05*Z6KKi3F3)S0kev7E5_di1Z6}x9=OJaT-9=SxC5R=&>CR zCz5NhAY7mr4(=TbCM$8ujG9a{M?KS8phxL(gzFpD(>9tE7{k!I!deKB&Cn%ap z)-%_Ws7sD=yQk7MWRLT4N+LMyO^8%W;_JtBFLyb!-WeTaN(NWAP%mTH$Izd~s8?P_ zvIsL~;6KyWb6LJU$b44O`AgR^WB1M1uSRRRtk*Z$hjBNIeA4Ud=o{#3Xw1%eovkj@ z>AH6a!8_FN$2^2aqqm;r_g7sWUZ$D1s{ajsA}eaU2Jvsz6w3~onQH%6MrjLkf#Kyg1SFn-CE!*8>qGDuXG&-ur4qur;SwP>+pk z>uBcw&P1JqEi|NwzVdGJuPS*HBAH}6tpXmFvL zkRtk#NE!zK8+fs4Eh^l+W1#7H+j!STL1~zLc)(@25*d=Jn4Kt@4yM((5^TUvE0`&I z((|*_zj26)Cl=nz)xx=Rh;Q+D3UULz^-|2h;v$5~X~$7t82FLlu$CRu$)C~{r?K|2 z&u>(TbjKNP4N3Fz+2xt%N5QQR4lSgG)YPtU6F%S{zJ%`_rn zzvvpo3!y3wauB*-na5enl>siblc+Gm4UFCc@?*37T=P_7~`wZoB z6#*!+C<$4b*Eu>i>(FhS_(o>wXJylk?3lshjQfQSRQ*8+1@6!5uX=~ery9Cqch5RN z!!Mh-liar=50_p31^(}Gj#-pMDWzk{oUdHqIa|B5sp4W`*Obb(rsR6Z=Z7<;p~(y%;M}6FRZb@ zhfC}&pX=iI>6Q@0*{_^)#PyXdc(8Zrmk`>zCP)Y_oLAs{$(4ZO>{Ktzv3Dt!2;^N( zfZhQsfaHSw0#XC10y;Zy3FbI=6==O^31?WT3}RTdrVn$|f$TtXL}tH0BgbdLPK3<_ z;UZvy-v^xmngN>u_JuYAQh>-s-~v^G;eu5{_ys`+Ob1Q}ss{xHlnsmvgq+7yDOZ6t z3p%q_83W_GDYgVm32FmG*PTUi(Gms&EDJ1mRbI(sR|d#qD2V~Oa_h?7=Ftb9YY#H# zja#~qdAMo;g>4MM0T#}yD_(N#%BHw%L2ZC-z?E%^pg4Dh*Qy)6ay$1!@2y|Z%d3mP z_F;a+r?@*8c3~84s)1w!&ITR?yo=3Dl`D=y2Z9J88v*aj4X6w>0p8_u&&xH%igFCl)$P6I za}Ue=qga6~fv1300?F;Y^>a_lImJqHcF_#omvo;D?Y(hLZX-|Zy)(Xd5&cojyp}vxa>TKx~KT28~EvIVL957P*sLF-h=3%nM_~OZ__oq z64sgaP_WssS9Mh|-7qNGyfTxe@^QAW3u@Y-eQQo^aL%PI_T8&E|4{d-u;JD;$JM+= zl>X9|lHDLsp+74F5USIkl>!RXjuff8xw*|hT5LLnrl0vXP74{P-D?5RIVViOOje8CM>h-V+6L8)~{hSueLZ zth2X{_2fV972Ue<1%A4S*3Sk_TZbejuXxz?2RiJ;ZP8JCT>6t_9t;^Un3d|H0XXyx%jga}y+8 zuTd4XSJZ(_{v8yZHsuq*6I-CpB-Le%CN;_n14&KUnH~nsjD)F4E*_w0NweVF^eFgj z7~SZk*}P8H|5TXR`);atEhodT5RN!6)mks>hFxc?%74Lta zg5qOn-tQ2{$5c-*q!Gl0RBuro3&zAaSu0cci89K6iC%i9 zwIpNt2MjaB?7CwjY8|^!5eLq&XwUYg>1vLQ{~bT?7nh}rIoR1U@H^e;q^jgA^h=Cp zGD`nJDJS{Zw1eBPW*~0>w5cdaQTG_AY z+gj&w4ywzX{+WytvBoT=>aiJyc>ii+TDi7BX;1C+gwShC>&`Nb&VRgdfyNs)J@Ll+ zfq3R&HgBNPQVlUV%|_VeS1fM}pksG7Pz%wd1mBkU-5l+%jnFht#v7MwnS3lwVB$^S z!RvCp#aD5y_}Ek9S%+V0J%8eK5Y{SfK3BP*pHY>*DI+{N%;nWtnJk zJaoek?Nr#f4(;)bHI$x~hV;Ube%K28E`zMz=f9v??A3~wg!D3OV87~_RL>j_pVGQg zE{0OPhu1xW*Zof@K^#ry$Lrl@qFFaB_e!1YZC+<90O8)nwYB$b<3;m*+^6v1(;Dij zaC0GPFbg;JG^X&(GjOkCqbg`bP;q#Wmp8_9T*oqL%;OY>vr{Bth{Mq(8uwt2S()d~ zhS@#vT0EI~B~uHM(8hDOTW?~-@tV*6)`GURaw>DJrkdmAgr`*?otE^$DsmJWJD&(( zM6^6QrviTCPODXcE*@F1;&GCvP`96NwF#Ly&w{zYT$tYIlP)&V&Z=-r@prk*)}krQHYcj@*OAZOF`PB<+LClsTcCyA?wRW+S9g}k&TQH z_U(_DBPj3NWAu-Cne%z&^Uf5g7dQ4BKH8PE|I@Q8i^CZp8#xFH`lK-o~;T5W3w`Aj;WTc7qWEpye5&P{BhELEw znjiMrWxD^p7`^73NGZ9cY_KJkR!B97Ld3cb9wKwfEjUM;;b$EayCBDzS_#)*RUQQp2ZM$bXk!6fVAeci``!{%>B@G3V=DP%(cPC zQOm&H1av-2!ma=Pd6EUw3oN<2fagZy)8Gf_dy|SwPZwG&YiYP4Vsn`qb87=VPWzSf z4gc{&>=k*$xPEMkm2KS-({!!@CEc_eUYfZ=-~9lKR@FO(ZCG==w}3I}X^sjH z`6?pM`3M>8^!89VOx#43w^=4dAF8fD$%Fe{^Y_{DVk|$bt-&E=U1hm{3E)Iv{m|N) zF3z@o-e_hjbl|YB;P)(jVhgqZ;@k1X3_AhDJmA$nkBu&QeY}#+?CM=lxNS?AV@;0ZHCEi+jo4=F^51T3& zW#B*IrtrHUeGB6R8}dc9E=hC1dG95aeXk{2(Ahg;m-P>-vJ1pJ;eYPQ%m_W~m;S2( zIRDrFl?41Z*A9rAS^i(Ok#@2F$4vtg{mcP4C1VmT&1$eOK+$npP{6z&J7&<(%)s#8 z477topq^AtO>P#RkMJ|5ef=+x131KkI&^bj9yw{+y`=wxuXhR-CFr(vmu;JS*|u%l zwr%WX+qP}nwr$(!eY$T)^xtv%K2$|TMZV0coS8L8j{0)#lX4z}6RAYOMMk995qA~7 zI;cx$h*07=gx-onMDaY(?hoehP!N5p8wHd`$$_!)K+$(O_^uEiKll-GAA%DMJ7DC! zeqlMSb|Mcucep`zr^ARTaMm((Vd?xG_>WNyISR4O`sP~T) z0T;-RAZ!K-$fD5Or!IK-tf*lwVrU>};5HVF)87dq`^5&$*B8qOWJ&Ivxjr@1nUc)h0Rt)Z zt2f7-bYv*J_HfGMvpWnCxtp7fBJ#11Wa`rS92|7M`JMo&Yi6x-G2qJJ3}F;C7h{5q z1LH5Mqn_=V_woevpRv-yhpLK$008Vl{=d|<{~7E5sjelf?kZuqA^ds+?h}*+B^8nX zgf&MyGBAImQek07x2$dyErV2AD8cdU1HeOvu5iC4`37EsiIqpFi1I zc6hn@m!N2wzBGPrZ*OkT?x^j@_WFL}_Q7&H0N3ia?*oBs868FhQv_5RO}r_VXUQZn zde{tZEiytjH)N-6vNfY*OC1;WJ=Yg^bySi@RK&|{wLTQi*fZBmbUltkD^o4JI}mbGoiUux2;c|>D6GB^i)%f z&~8^rD_Bh{Ack?yD`%$piOgbEXwX<$-(s7}GCji*l_eO9ubB>@plkinNWck~O+bg} z_7wo}4rzJ4>pv*!8+(T?Sm&w|BUm}_o_FNBk=4J`V?F%>Y@xBYYz9i*{N>8KY*1oB z{d*>9Ty-RA!szAkX&PC;AA4XMY(4NU169{G-h6g4Ug9t_~5M%EUfEJu#Yz1MEeo!R@5qk&X zfF?vCr1gE>>JBuXUk%}w(YvphcL&xLuO?3(0!7_4Df7dr81>#d@sUhNzj?9|eG>Z+KWVZ zF)HSo%zAE7F1W`}Q8et z>lPQyvK*zz(YVQ(pLXo$5kLA&4uOf)`u&hd?NX&~a<+@@N`AoqIS|Em^s*qq003NL z0RZ6sw^NF!qk+x;H>Xr%*w`yCKX>`uUT^wn=)Vpq9rgr6s3x|)^UsM83K%s61o0yv zK$&OCGz954NU&k|SPL~R#ac?)s02|`LpGqH^HKhxQ2eSev@rXcKj+&#m-cfmDO`+M z)XOe^%KEfrwM&GJs$S7SyeN)K5Vwc6@SGcP+M7e?( z#SL{;vqaI%yl~BpvCdUQnxk~8JVTa+lO1C-6}!zEcP~r1u4>AaT_u%O+{@eDge%E? z1kj=Aa`#y%##Tw(8LhUNh!G%a-V_B+9wexSE(E_5NOb4M^b^kP*~GfCCoHBT%~owC zD=t~1Oc0h;RqDJt3q3t=P`SbD)dsq(;@{yYx;r(!oe<-y(7@qw&x*~?P9&Z3WTduA z5ux(S>o6$-5t23>8w9^fRhc~VCIi%;0??m}b1^@cH>x6gJDQ)n+MXCME!5)-CEqP2 zpBXuwCc+K**c&XYF+R@nS~2(*?XUcaCIyioV+ns`Oa4A-I-8BQd`lr`B?)RwI*F$e z$q(?456{GMcd_xDnx&b9mz|uR0Oc&R^4_9Wy5;4}IDb@5(_zqtO&qI8x5BAr+)+x} zCbhTw0d>Q)Cv`nN?s>uhwiM}+m*&@(Yasz_K`y9Gw~>TqimSXpVW|e-e5F8auEX*T z<5PY)?)ZyZ8E5OTQm};ZXr0f)Z=@+f1D~#5p7rI_3z>p`*&tfTrW#=}Z#(FYG$sz@ z9;H8NJmVVJQuzUX7nq|0WE$9DNaZy-?#^~z+Qy@NEFA8-(7AWs+dkiE&{-C4-18EL z6Fl|ZNI^9n#UyRMAw1E4(Pmr)kbC4oWzOgi6Q1Cko+HQI6}w;laLZo@bn?{A1HXFd zM}lQCx9Ri9b+DcH=bF4MIvF9AV=wU36+j944q zVFkgG=*ZN(qG&}k+z>;psUHu&f^5fgf76I~VUtJDs?fGcv4Ek@YyMY6SG*4(e_Qt~ zm{2el`GYVYAMt}BKNrC>WX>r__f8O>TlB0nD2L2>4SF{~C@5#%fb2^u3>~5 z%E>)3ZBxr~%6djl{Y?X!@&~|D;uZ--!}mMT7f#mEjp}bcavgnHQ$>FE;oS$QPrIOZ zyL!CPq5Te}YLMxibvgv1TaJA*m&W>l9Jit5unKL^6p|PqV zF@4dh<}kc4^#zA}unat~x{(%R^)@b?>@C$vB2sJ%&gyu$&o`>R44N1{n}`SNF*4k_TM6i&y`nFiqB6~rfEZyA7DC|{?bBVZ#w&)P|gh$iTGB-C>sGrlGrA zR%Jqo*k1YS&n9h-&b|XpN-_OiTcV1bE&HMsQ;dIGU>s-cXVR5t#xJ(edZ4rA^YsK| z1IhYkc|f@41i;+l>q;BlDuC0?s4+H*k*&VNR0NW=)p(i^!I62}YceU+-Z-55qPQ8ea;h+Op6< z#~%lq zLrM&}QHZBZGWw;-__c%br9s08c3IQL4zs)uHP~&8LVGBJH19|mvJ%*TU{gTce>r4O z)r{k86o!w{rV;8ej~h6ZJi9wJtYbTR?SXc<63>fx1isWLX0AQZYK%I76ojf4;0cJ0 zd*|;DnH_4~3&N2J+1)EU(L)>e8*qp34YsJ{4mhCLkDSL$h%-~F=LR!@4)L2Kh?{pn zp~i4aDb$8)z%l?Z5DAeB&}K%QL`W^9{2iWc1i-PZ|9L!zQ8Hd<9mHUf)r|>Mtj_FT#pXa@yaC4e*S#_3A>)u}WzqT2p zNs^OAwKH7KmFul3n?22OGBrEXg*NCW^?dcxUKZ7hf zlXlW=DRRf1yw>gKjb!)@%(D2WLMBJRFQ@W5#G=Ild`%9bw#d>0H<0n0`SO{i{OXzV zizO7Zldr546G~1#x?`nE9vNnk$*)Dlu})kKpm{9!7QP=GC-GJ9fLui%Q|AvcO(dJ z$Q6zl2RBUB$ZJo(5o82E;Z(!A~=wvFFypvR}u7PLzfyXe_+Q%c^yTL;5VjeeR3-;&sIq{a+_3n3oo zg&b?ioMBYW%9tw5bkx0+j$yWgG){ONa}>zK;=my)wKT(!Oe&G?G*lzz+Ay?k-Q9;? z2W9gV*~jrR#hzGg%#(s1{Dm;AG9tY2w~r_o3YR z6fg2M2v7fDuJpXEh4dzcQc_3=P~RV0$8FP(dB4Fjpb(82^jHdUKMJ=wzY zpG1FRsp{6KVW8nAeWXtOjqJz2Hs?4S81gag2DNY?|Aqd)iV45{gT8-71ld1p7XE)* zOo$uU8e9KwPK8VK|At|*{8$x4uc=oAdjSlOh!W}(uGvjt5itZ{JZY;227}+p9~eWf zox$MS?M+X4b>qtcC_O=pn0FB;oeH27K?^!ydPVSC1zzJEi$uta_N`%m|ljR+N%YYTIzo z5tO+I47$U$5Yf9UlOCM?;Yc7!FbViM-teqR=vC`1v@^C^7VJ>gE3|wsz4Q!*^NFQm z>9+M`TJAVT0Zl02S5wfVny{7pV*=<_nC`(;+jk#g5#ZDeqH)-oRz*m@jSRTEZ^Z5} z5xyv!jQs-fesPhFyeG3bG=9My@?&!L)1FJqhh(`k!z0sQ4o^6^Jeh*S}o z6pRE;3TC_w@o7?;8O=Pv`GOcF2<{qtK~JBj`z*m0pYse<`)UOUtcKN4oAHE{q!F>? z)u<`FHjROP5Q7Q9C<;4_i4^7!Mj}{36a_HFhz4+@S3CI2Wo)1A3jPu&hn|0;N08__ zaI9_8iIgTltZ*?RlA*~gIVC@FEtb~F|eBOz%q&xU3w#z{6raIhs#F(H^#^#lc zHTWvl@W@Wnd$?R5h0klW@L6dq#Q z+DMm*-z}?zBKOcyD;v&d_sf{>@7VCyNq7tOE&Mw6XXArz$^*Y-%XlkU=E6&s(a1Sp zURJoxluwCM*37+Iru_zAzpar}6m@+pIP4DT$tS7X;0U5b2T5!cM60m9cZ6;EiM!R3 z-+vAPERgaenEx_h_@A)(-|Gp|28Jfq|0@lGm1UHW-7tP>)>Hoo%fz9o=7lTTK+u&p zm!K{Yp;?hjZmO62X9QCdVl*&o*rZ#~fWzzZSjugNtx&kM!#wEqD7 zfRxNV%>`A0OiBOdxvl;Ew`?$5EBB9376BsHL`9L$vBAP=r^|Ba(HIw9nq^oMhZ{F1 zYT20E6dPyq<$*ivMv@* znwTXK6XPsX$4(^7qnYR`9RzP*ThIAnjGHXJfV|DUYPGR^*{+oFa+cz?m$JLIp`C5w z#}m4k!enMP63G#2Nk$gRz8L=N;{DB^hP_Fuzfx0J)q)^m1iA z?no5rN^yF0C1^ZDEdteooZeC;SY)1j^`%0EtkHl2DU*p#mESB2KbT%6LRuJeZalBO zHqqiM1)I24AW@we8L3K0+;4^!d9o1I-6kAj@nL#K+&%O-wUA1ZTXh^2ZXljhNJmDP zHmMFuc1oSiDCM+#f2?h=LVDR1bT{dc@ZOco@<=i2T(w_oRwc3nI^4@y7o_uid(78U zUYuY=BOgEMOjGMcB&p`-g{0ZCrlS+NhI4IoACX8cpQvl7=;Ru&F%$%riy?|R^L7X5^tTFo$RdOx zL=J=3WA#=Pl=R;qrmQft$>BEz@eaR5mb}?K=z;D zFiGL$HDKdgXg0{tAjeYibHtOCH7HujRa>J?VjSMxryt-cUXtZvFaJ%;vFJ8oM5y^C zPvKnJT|ud;eB#B%z(@Ey6S+Z3s6!K+D3>L3>xCW+;1$0I(%QY!J* z=D^CTDnmxm+?m(%WpaLrGA6h&|Ql0i1aUaO$kX7er zFX`4xOVa)2?tGIi0pj`F72lzJU7bWGa3S^1l)LjD1m7P(8Nt%eK=1{&*_3)C9cxkr z*|9&mtADn!pM0GjsUbU3yWx~RnzCfw*`}&hoKzrIpqc}$20OkUWO#163|_@u7f_gH z^M@zym^uTYd#%~MbWYi6MhDf#!4VQ1uF+s}cyXeNGLf++L!I_eXf&dj3_`^-@5-aT<*6e6=_4ez9>511HkuRtU|46n${? z{FbcHkx|f^#JUo}R;lQ_@C~7++7eiP*uW3b zRI0N~TuWhGx=~?oWq5!XJ-a~vWDzp@bOuEZ5q&gKrPt^;R>>^apOA;G4wS~E3Bl43 zQ9w~A(oI!UK+?@R!VIZ!sgrgIwEcoA@fBQ~Bd1{b!kG?aLAlVhX9kKd_pR=FY3f>O z|Jf|{i@JHr4g}W3Gw}b&w(_(?eXI{vR~NBGP2EoYMgPw+Rnvgku z;&EEDb^k9a9+dl*oUW`?P*)t&c8S&vmT}=J7y<4pHta)54pWRV0XMP%-W0S z87+-U&01cfn>>t~Djsu{D>Rd?#a0_DDIWSAElP`V3+OG(MbBXHnBDualgy-7b`vS{ z)izW-UCn}8t(jgA@~WK+|1bg%9?gHS7fYW<;*17eq^(BXwxk`iMg}siBrW_IT){ZA%Ss=faHw z`r~QJP~02Z6Z8v)(!XZ5i}L7#PL_XYJ4(LyApEADqo zAq4tfiGfy({Ue1u0^t*p+2fuoZ1t5Iy+Pzg9U4(Hd5_p9=8xD%?mLBS!nk4d=$A2V z{bRVajoRn#0}iIb=rJ&3;4ykn&l#(ms2jNp7jNgiVNIXI)}uYumh(SSX#bg7w8SEQ z0yK*BJGeJ|hp+kt`&m@44I5-S`HFFY$Hwx7<@jSgmM#*(%THgb{c!gOwO%|oP9=|e zfmxQmQa$}qzla!XTShz+G7;+){;`fDP(an$ZCt~rPz0xAE{;j8kvjVH+r7BhyCd%Y zPKUK%A)0KM+S46tv?xZrqCs56wv_0f5;qy8v4j&|6%o3fCgOwH5HU6fE)7;yEVwb) znjWUk5x*7_zBE_S#y8|peu%1eXG9I&4FP&yn&vE0J@V?n?a3T|p8EBaJ9@s@C}o-N zXfpm+T8!B$snn^Ql zbs9_U#Y43~>LKcXrus8E0y5OUB4Xj+C)EF6s{h9#cyW@B(jq@fh+L68e~&Pwioji> za^Du?OGUxV5abw4w(c4>+qfp$f;HK;{KsnB9r#-zj@ztl2+SW@F|Ws~oY$;Iubu0o z)!WNlfIB!GXxFQd(Zrm=ZzrrU#AjT_E3WE)C?trHLpW^4{=^bcCD%eDfnitF5*u_6 z0uA|F#9Yy7+wua*S7VD+F0$02aPcjt9z)$m@{$Gobz50>RLDp#@-8|g((tkaQ-%9h z37Yk$$xyXzE7x^uH+T`QLLh?z@pT$WP&KVr{6V`-k#IrRdnEyfndpKfY_Fcw$zKAL zo?C%;M4i{$-`V6%IkWzi?Jr`=8FzE-di{6BYTK&>J0Gft_#Xm`KbbTZgiKR`956T! z@-=1--xP3-U9(Z5`PlF#qaL{8;(DaC2O}m9c_Q1wwdhkD)-D&RO?+do{Q-^Ibj&tS zICzog4jZrKS=K6I?)(LC5*YWy9-h-6?;@P+xD1F{$94|FH6a>Q*NLjDF2WssnxoE3 zl1PjzlDNsp1*XW%1_Vzz@& z4;))!wrL$;(!_fGl#bwNad!KF4*C3y5^S^!)MQHo8?R5S8t}rTiXLL z^IO=d^mM0x*hr_7sj2k$M4?>XWf9>*pTA$XjyGf%=l6;5B*1xbl|Ue1z5s)CDTN&| z0)%Y$db^8@$OO+!ftVogV%fSh=67X_rMfDO6(>=}EU=NYY0F#6yLIkWd5aj^YfW!a zBf)CRG?uzLt#?rwsFO2kYjbmJ+Kbw|YxJeQB0f$=$WEeaEUISH>|xkD$Y% z**$yYRr3moe3cVL$!fY9p|(*9%cXK?&PZk+#?qRL+H9eh(RfsDSQsig(TFj^zE!LV z>DcL6lLPGkkcZ437Sj=^PMH^(8s*$a7bhJiM)Tg%KPQ$|-&%k&Qtjt~I6_l#-bRo6 zeZ0oX&t_x@K@;9Vhy8i?Yu?eP__cCLQ5Sx9mSG+v3%MMi9PewVPk+tCB2W9(P6br_ zM8nJiE_gXT-+sQC_`G_BC?`jAX6a08HFVj~8oxAr&$r(pxoax8gZw0i(??16a*^7f z^ibAonVzNMNZXF|u4rp>FA0@T;yt!54Ts9Sqo%1%_9sp_&lky#jmFn2`WEA2$=u97 z(9wSaxrH)g;YRTr2Yq$a>`H#WR6PxprWu(}pR>4CAK%4V*XPR>2Nz?OhXW;+FWB4n z+Sp@x!t1>qm-0SI%-rUXKgi_bfhVjQji@tzAU$To7{1-=32KFmmuuN27YkXxw0lAp zFEUb@S4_1Xki1PF7%*e^Q6E*<`x?VF)PgkvWd-)v?t_Zg)P?O)u!TNnAT)R{0O+ui zX93oy|1=K7p6j2qeT00RPzo3pt9TM_!~9u0x4xkDU|AqB|Yzhf!qpj9FCV4U|8_x-6>EYN@X>cbe`i zrl@7n)i^uGTVZ9SF0riAVL_jah_FbVE-^0`)~C=Hu_d%3%dj82OAi^0DY$9r3Xf(C zBY$dLq^>M4t>7jT7Y@~Nqw5*O+D|iVcnJG<^Yq z&^7K=eGJ30OjBjLw_IyXvqaY9s5WZP0o0b^5~ke~+KyE2wCW=Pe4dn#Hb<#%dV7CV zp|f;FSfFx{TyJBHaCuCf1$3|!!yBs zRPbn0nd@GOmf9JQ={b6Q zfpR(@60o#=$`Y$OYKrJa z`4n<;#cKcLO`F1GmPc$z#7u&4AzE+n22{;G=&b9pwXks+gi66sgfO`UY*5tMtrJH~ zMo@vfY^b4Jp`c2onN2Q)t#&V6v1G8sS^payOA$QIlkz6LI5twLMw{E*(c>|npiNV< ztlc?)Tzn#|5K0N7mG67-)Umv95Wy&|_;3{+2qu-V_2uZLXgO`G$;~IM>FtO)iv<-2 zu?XwznPwYwZX49Ww&3nh2cQi>55Fh*ubDbObea}9oIPM4xBoDJ8erX<-9jDxHb_q< ze|LBfOkYrDKqqFK-FzAScHja{-cDe8JL|BU*g_GH?p4l4x?9z%Et)=_Xd`SYU1e+ceh& z5rd83g+zdBdL1kvP67`$elpZx3wTMnfH@fzgAa-dJ|R0kv2*mNXM%336VUVCAr1jg zxh!yc25~>+Q}FZNV1PSdbpQkZ0Dx0K`rX~(b$~>`ioZ|r3}E_M(#5Kn;*O*c?C|P#&f}$-mcW1-Js>jk;$Apa-swT|itwDr^`2f$*Ko3pu}ONZD6~ z(Eay<>);U}8K6?=Dc8_CY^N9x%n+mR6ktM#yLk{m7Ca1C8?cUE_*P)T>xlxG0Y{&k zpSaJ_-wGf@kb98~C<}xhY0ubS2|yOK4PnpHznJiYE9gfENCC(mtFH{98-6Pk2?9M2 zB@bo~nh?(pg#gSRs1L#)87s3zqDR6au;xl5_ z{Jh_MMxrZP7~(Yw_E!VBy)KMOy%V;}tkjM#L;K2^UYh$LP@2b1=b1{iiG5INC*48D z-7+WL4n{xi(@JA5e6;GR#SWd&k=vDbyllSWbH3&0-18sbn##picTI$m*O-{6)}#pzM9h$(F6owCQ{4BzM}Cupl8o zCxIwi0COTLiz%c_ftb9JYg)?i^~r2rzau^e7Ze>LMesu^Ji#)!N|*>Nnhk6!279$R^fvwI%)fzwfQcbxV z0%LR)^{Fnv(ZsVxXB)yXYL$DVk{*p}R**_JO5qc;t1Vqj`+@4Z9DR&7*8FP2u-$}w z;Pvbj>T0zWjWDIWA-=Q_#?ImS# zh+^#+hIQ|Vny8E{GD}V`e%HuM{J67{t(NV=cVSku^HCjk`wXODNYsGC&)Z)gwpZV* z9gvn&eTXP473w-qyYgjd%j+F*r2eNN zx~Cf@-@d$SQLpUr^TA!(A^lC|_&KVP|Jwz`TcGI54H45x0`oP{S?M=J6HAZ`QA{A7-7Hy~)x@-W^ zNy(cOSEyv(=_j8(&Rzcl+%@4h_1y6tzFN($;zFgpY}1fyOLt<6Z&9q|KU$*mNBm|( zJDAj>9HT@`8=XuJYNgMp_`sN+6A zZCUhG;IE9cDYIg~EjlJ%H2Xi5G?Af+JSxhhsm8F0WCBw*vOXu%0zzKoiHP`dElA5Y z<>knME6ZkkEHs_B#1XE@uQ1-T1Z&-xT^;Q_`}6vI!WEqglO*T5!K%Jd8ta}JZ(v8& zgqT>vfIXx^p8f`d9#OwjxvENM3tXgo=5>C&;}O2iYDeh2w&9Tx=krz-ED0zy8EBA^ zw}O>yoeiJayW>mx8se)Fs1&u-RaQaPhTM`q1>o<~;? z^&j@NIICAlGo&>w%#1Ab`c5yo#Hu9{7Bz)&&BX)ORPwJ6W`JzGl|6xyfrI&wrH%f3 zcIFZ1iEYTZf=0llCGMnlrZLsJ<>$D7s(n!sW)4m0Xx%nsRcYhHn3`_~IH%!W++k>B z$&tVS+I&#E7lL%dWH-TwKP+fsnsCc8F;f zcmBWwz&KRCvC!}r#Y$RDF&k&1l^?X{dxA93qXxs-=+$1&ILn0Dxr ztGZs^Y$_(KTFCjRb}dzh@JKuHMGbb&VRGu{`1V!5{{12Jt`(S@B^_nrnR7~+Xw_VYKOmbZgd2%d^Pc`8e_j^&+@XH@mG#pea8GuZWssZpbQI~G zH7QWS?8eRi+1Gy7% z^A?|cTb1x5;fGc3epW3iLN&TmZHv}w-HdcQPV1qoTiFyaJcg{3|NT|OttI%KlR4$3 zr?MNe&`tDLYAN5rF`Qc##W7A4E~)t-Ve9bueX6`iwsNQOW%Fj&)0rQD7}o zkV&U?tsv^TdXGLFg)#84b(-0qPt@Brrst+CQcO&ZPh}g_%LS588;sv7B*j~=5?wAS zNk-UI6t^OF_fDg=#cw|$HnU~VE!^S@HsF;!@~o*>e$(4LzT#%)G^Z9crRT+a!??wg zI&6hEKkBR}_@?XpE}7UvMLRQ?*flgXH~KyLnoao~?F-`1IEMYNvU1N=ru|&&N>ue1_x$}a zB)J0Y*YUL|p`1hD4p+E@J4Ssv7VWBR#oCn%uGOyf!Iv%Kku)_l#{`2G%{fpyT9llE zlob=mNekBpGqm)!k_Xq546O;rAXL(M8Le~ebYlZw2M`(5K1a_AQ_^LtK zcb-^4TWC3it$odT0)UqTIBv=ziafJLo+nZ+Hmf%!&UDwJb*=&|xOmk_wv4Sugu=x=fD zJi-FU8XFH~$702j-Fws`4|>O5p}48YNv@P;~mnYH%wOQ@nY?Y z{`z_-UZJp$;@=|hEUb0W+=Jp;sk*l1j1*J}@74(ZfJeX#RTFE$>}L!x^l+qsQAb9p zBRfWog&kY<pG@#qoQ7BJt#brc{@EBBys%$Q%D)lgvD()m#mXqp;X8G;=|}7D zX~19nD}TV&28f2?F9%LwLR=$EZk@0hV$>&d4Fz1r>WactC=GGr0G@&`ia!;@V)!UO z>msvfO9fZ?sQ@S?l8vihsHnr!#i#{fYwh?di5JVe+^D`Isy86RF~OnB#Mrsg_|5aO zFa6Bgkoek)#VmF zGKJ#gjbVKc$!a4pB~DuTb%<$UblVzPt;(oHO^DwCSFu7Wh@$<}#?oovyQ6lvweRM> zoO-q@UukSqGRr%;R&REMyl`+U@r*O`;?Z*R_@-IvsXG!AmpzO8we8sGSqx1V0D49L)^G;Ds%`qIz?O}Z z8k-61gwN*oIk5i9`EHnj#y5b{a}aKIKlDChn!8W&G)`t@^u)gYes;fhy)j%p+|wNI z*aFTOFX@=~mclJ~Sb`~Y^MXju5FAGO?gt~T?c!@3RdXQT1r!UT?c?#+nLNc`Y_-1v zg7w$@{Q_%~|FM9i8AAHlYH}$jCr3{FCme3rX@O&*h7)xj991;wmR#YvAzY5m6wyby zKXR3}AT~Z1fyRP_Z3Ml#f9ffiwSgG<&+4bUj3F!s5(5=A-&bQ%v}~{`_q%*_ql_{E zcz*x}>87ao6-KNilOv2MkiNz~rv?I_s&eaw7TAM}!b90{4LAPE*tdS{`>`iwF?*QBo z`k#CKriwo+q&I)RB}E5Yh7D;-oPetj9QA2(`$Zl4HP>u;jrZUy-$sXbRqtorEui7D zca{ubKX+xkg)Gruo$RYdkW;x^PVUdJQ5^VVOho#1JwsCm=_qB$5W;o9c{G7|usJ{& zh@m-$=uS&Kcakqqz_rSg;*|oNW#nj4RCRv2jEId)kUjlldj^^>SngcAV?#N70v1tZ zQ!TuAll~;&N2u-NjUH4aw^?X+$)l1v+GVOOMqulRY8D#p#(g&Cg1Y-7>nL@?^>58z#NN zO;3pqd_EimuONQ0#_brebB<8HY|mclT$U365%Xnk_1}SC9yiYRh4IMZi(#L~GR}D> z)4@0u#v4YBYCI0Ur7YA1AT7yj@{ZRh0Q+?DlCE4mq%g?3s< z->kH1^d?Sx)3@aO{pKqrm;b_FZwY0x!M`k7yz~D~d(p$GTo-yFK`r>zZMfMaug%FG z?wt>;6S`R}+*Cp#gj127nm?p|wkd6Vleue!P`8(>&uvHfSk-u9+J0y+Y~t@?j9#-j!J-d4?5fK5|>31;cIj zH2>_3(tIB;HDZbms(u-rfFIN0s-i?-tr;FIy|=@dzn1Xk5i@k73*Yu3aXpp1x}mz~ zXXDu81gIaleH_OOzZqk<3GRXSt>_8DzTGFZi|rWZEpF)kpd9bPktvh-Q0;6(#9(&~ zeVg3MUNA`F%cOZ=tfy02c)Wbd(TgQFQ&DrLbvb{RJ`a{YAC|W8D_P2>xEBZSqXp+2 zvKqe+PkXh5&i2+K+V6p`l&r24mzc4vP^^?VY%#OvVr;|3+}ek^u?Gu9RdBpQRY)GA z_E>2EkyGgFDw^_v$RKlODzV`BfjOZ|=um;TzZA`wS{L#TW_D*Fv#05h>Xo;@zp=j0 zvA+K_j~eK1PAo4&9wea>KWHtLC;k*P+?n3==|wuWlPAR0d*FtKmF zIH;g=vC=zh(alr(Ow1v^?&;O?93y?Xd(yNMzxXkaQ)JyuyqOWo%D0O*w$C#cGjE0c z1cEyg|KkX!D9M+VJafX?te46jWFhAq##aW)BmjHBR)O6tHo;qT=kvhT?)|wv+Ul8? zLxp*r?ZG3~Aa$LzBQ>pHxI6U)G#=lco?L3tdn0og?A}21C2?5*c5z+pIpdL>Q@rMz zY?OYQyz6OV5qH`Mwhww;A?i0J=@}4xr`0^dau2U@5ScMH*&~d&JBIXXL?`VWv0J{) z&(xJ;ayDbICu1moV+*n9l|LY}gWBH_^Ev==3hUWZ@{tQCbI7bCx3wr*Y(O+{u$hfn z1~JBVBdnHbCp^F~dvfPk4O8nDu7z`HjmjNv=CU^BXu-OQfA~~1Ve&1J{c>i0@5aIX zh8xAkUaROhgzL_MuEwQ`*xi(TFs5fSc+BIdO0x^hj;|eQCb}{r?)m}thboXF!uSGI zn~ugwnr!X7ky22$%pBL|Sx)+*LG zNxVH{xYgqHFZej(W@1|qSKPsfIP@9jK%1sL4_msUVC1-!uX^P8yjDGqraIiTF}H81 zjiW_syf>$^hJ49`efciUU8<`~gxchn?V4Ulf|mToaT?Q>y$1Sj)^?zUt$T;jBgfcG z!p9NI3p$Qh0A3G~cLV;a+O=Hga4sdyxiHrJ2_MU$#6q-nTl{Y7p%4VK-@v&`^5n-Q zXZPrHZC!5E#Qy%DlRcz@qc=Qf8u0il?YD$miP4oFV=KLeX1et|l23OZ3E2rxO&Er9 zRZ8dTsnNB_fXxzz53MT>c|l(<+_SZvQ8m%>+S;1po^I2irXb#ZFv2Su3aleo{(N`j zBMoFR#thI8^OeZYG3}`u_YDRrF!54Mf^0Az8#V2RL!_Me#@v)FKuC8&kVdt-D?p8P z#S$Vl7-Pypuz#*}epk!rP^A?{IAyavQHGN=LoF~z`qxSB3f_<33Q8)WSjq1uSNre7 zg=_tph6aZGt|~Ao2}I<~9&H1rXyM(`1bE?VrQk z!>w&`t%Ha2TRd-CUragPP{5_bSYOZ~AugwDWxdAZ)*zs8g2eUgK^%d)lK_~)8M2p(`}2Q;b}(J zM7eLslU5G)L(&Row-RUg)VSS9@E5%|DyZxMe(Y*jD7LZM`Av5ff&+tYXm<7fRZ!lf zqts;}Yjo%MtP;RG_ud@B5%zpp{7=5As?-`WSHb24;$q>>cGyYz?s}Z{6ymW}gnjbs8JB-^=H)~XS%*PSjXv`$l@&+uG511>plgO( z-bcqopz`cK`_3bLh11%|ZpInar^JWHYPeXjlgO3Tp~AKKrK|Z1_PO9RuVN$o_^5B| zXfG|XZ`BFk;30m>ajbBS4tgwDLJmPqnh&S07`l}J16q(-r#LrOO;$J4 zphosPcV$ne?7yuLCPD?t5N<6CE7Z3jqihTF$0S?s@=gD=B@HoYR|(I95l7nO*A+N8 zy?1|bjE+$HAf*3M*;zof(Y0$EZPB8^DN>x`t|{(r#UZ#;G`L%l;$E~kMGM6#A;616 zDa8wc0xeR4r-jm!Z=G`%Z#jLx|NAG&S~FQ|uFT#$^UTcN`?>EY_2E8EGl#wY@(Mc5 z=I0hi=NF%PdM_=``;PMRCf^2q-x6E*zL>~64e{Pl4+Tmi5P#`t%nk3o9g-gCrvN3- zB!tQ*#ghQ!nROJH;+@NYeBsp$_lTq72cU!?HohbZnIxtZ=9EXy2|CcHWhoR&NvwMb z*id;8F<)M;tl1MYWixs8N0N*h6HNT_+3*CKG***%V|h-#f?T-?<{hHb1hnRG$46wu zhfv0{sE)!fObzs1@k7uoC^3kAR^yCtJboLB17e<4t7kMMafz>sZ-dT5g`jOvU+6g$ zA1V%#YL4hgTU2&s6ecl^e+?A|Ni;_-s;tVds;|nfsva=m9WOhg zIx;#EI|@4DI&wN*bQFWb!KvVQa4t9+oC!_>7lI?f>EP$!d~hr{8=NAlEU87qXhCnm zWWo4=gomV&P$}LhVIh7Yp&UvLEr6OrSD+HmZfFqnDtyYQoQ{Z<7+Ei*eE45R-m+G{ ze34c@^4XV5df7fBce(FXU3cB3u6bP{6=p09tf;zBi}z?hh*EFCImx!gO3?OaQrelX zTdMBDdGO#{DWioSt>p|hRaBGkh0MIET$Mo)KCMXF$^w^#gq-@0o z)f@IcTq?A)THF@N+cVi#o}FB-+>b+c9Z)_(s-d`~Uec_NV3U36H16Nnq4}&!lwH5< zIZ5^?gU`gcFX`(pKlez>2;Z7wf5JI_orx3TsXA_CZ1pDo&^pzD5BK=&=$E&)XQsX_ zqv}&7n_?_MWWF1vm3v$YrbL|2tCC0?YSk5Ts>;SWbw_u6Y!*Sbi~w8y1|FK}eLcUT zsL1iHnw`S@c_C`Cy131Pv!tbo(Q^sc4n;>=ZPdt459TxA`ZfwFLb6X5B9MH9{P~@|w)oOLFzq*-f6OF#3U3AB0%q_mFrue$&%)fb3@ywF2;n zcqrwIzkGjPwpDkvaSZJ|6S$;3u;iy3lTC-pTwHJMS*at41E3*0?SDi-*lcgk<3+EjDks5f-znn5B+Nyf1Z zYF`Ec{4~!;4vl-ng{9QQos~q9?_ilt%_j0fM;_4u3(vA%LVs;~Nz*D1HPIn1B5&Q* zP))d|=q#zs*TM~RPf2o(=egnc7&uKW{JVmFd1TjCm1{I;(2U7)dY}dEN5{P=d)XOvynGcI0WrtQFUvE(>cpgzLqa}5hG-9ayM)Uc zU1pcRb$wX=)?Q(L*k!oVTGra2gl{s}+|=N<{a)O|SVCHcljO$_j-Rm{A?8_qrHVl& zK`n|`%Ejj8KWS(7v0gk?_91aOTblo2AHvz3yr_9V??)^`ByzbRvS$icWe(~xx@h;k z+*!%4->d#`JjZfwE_g3`{9lGC4 zEf=fq*Z(v|&?79P31Y+45QK=gF$6JT4QIVGjik~v(&h+0xOdEpa0!SKsIMOzNOofm z8yNsH_mC|Ra7&2jR_w-JbienOyE6IOSt_L$=4g)~0YgaR%K7yiy`I;u_S1;TfW=S6U@Y)!*I|$?qetdlj+2{QQf^BUa zLPiG3u^UIufke`%H@GkoSU;&W_KhAa0|q3K#=P-{k#B^mMO$LgFh-who^4}OF#!q;cmfmzJZL$vja zqX+wj7A8EbMI=pIL?n&A^^18m;@1u*oSsX%M;9eO$zIUXT&r{7Sjg{UCYB&B?Y|#d3lD;oN3X~A3z97BEt5F*#}|q1^>YhO1{tg`Qc2Vw0bd>2Q5eCv zV*wmJS=JRe9@bAQAZvIe9IJ!KndqQ(8KIhsJ99y0`1pZZH7a8SA|e#N z1uKPf$*5zlan!!`-l)uWyb``Z-~MZC4qlOqpuJe}3)6kE%e7Z8gtxcoE`vf>y{Dxv zSG|uyj=uV9C7~mgVyn|oBA(O7J<*^ibi{gt!5ES9M9WG$V%bo?DzdYk@hJP<$0sVH zgkRZ@qtTDSoj5z@Wp0{K*|dlHyXE3k`|JsRuGoGo?U)j(Xvcl&*|a|gymlJ1U@QQv zcE)%}PC3=}`G6#Mu*z~fWo9Fu8zv{k=*$7WR9 z^m*Plx%wkRJy=tGsd!+U z=!SQOxeY6Fv$LObj*Zb``msf48C3ffXUEz?avSmUR2?=8Kq97}RYJ@rHK?>toAFH+%ge{a{(*0I z*nC{qcQ`n(-*U|)pl zJ-P!6o9LeWA_qj6s6DYsE_y}2V=aE2g?KV! ztYe8p&SHrS02Ccr%~>aeWXbc+!echj6|n};9<8EvDq@iYXDSBMOeij5vphP86bnS4 z(R>_S!?0xP$k|ZCuw+5t41`9ad!}y4L^hHHM{N)eU=7G&tTQ3V2K=!eGJrGb?ZSgL zLwDRXn3N*ao!lJ?WCDH$o}< zJl-Wdq^Dq{U`7ZJ3}V<|tTT(sc&2XzVZ0!bj1WQNTzSGYONB*%0gI|$iz?2+Wgu`a zrO}6Thh#ENM%4kl9*kAs7$={2#XK%K(D{ohlasWCY}*CU65pc6u&;g7B>S=4tSl9u zts8LiIJ5bE>U8;utq*e*r|9dQH|cZpg$*ztKsigTreZTA<@vMDgjv}_d;-iVv)FV> zqinhL&wh!jTuB2fN?%-x@;*PysBry`^8JEO)Z;Bpl+nSIjpwkt)IEnodl*Gw#>kf% zuz)-J_Ge+tFhjbyFqTdgdYers&HIVOzo0?H58jAymd0t1e~UiuKeern}K=x>vtZRpnuk5O$K*Wt}A=inllh}0LvTPE_P z-=&Sk^orA$jvh-$jB=jGni%E=jxniA+J)dfs3)_ftI(Y#B;Ca}R6?zM-HFn<{Q@GE z*TYB|EAt^~qu(GXh?)9Yy@;1`)j+btg;x~yD>2@;$OXQX8)}*@*_`n}U~ZvdobUH% zh_KU=K#=Wbq<~ZpXRA;Qn8wjX-PP?uw|-_M5bN-{+X19D)oqudVsfVRu;7c3TQgDp z>ZZ(@;=lobBU)8rn-R0$-rd@g1(4VO1><{WzVwnE$O&gA`_ruR>MQdBlSIt0G zL5*2;{w23+t)6;CMMK_6g416?y!X4}m!5Go+E@_MUsx z6n`UO?7$KDr1PsBc-c|!!OTINvB(Nm=Q0Wp&}yLom)bmPe(|Gq-N?sqH}rPoyEJi!odryuGkOb0H5OTTg=!;%Lqdr6h;2GHrn)T7wJAzM}t zin89)up_8VzPXJ<6P3L2LRqtvhu9H%;(G-GIy{hSr-;)QJXO;xfsZi<)(~%{fusS; z9={Qa>nM$}g-%M>)%NF7x+t8TZc%zI6&r2I&N=gZp@duQ-2R(ZeoAJZ@3BMO%3lgj zC3VyMsE2(kl6MgFRZaU8RQ1ZAtNmOuOT@}$Vd5u%9HPbWG7?%n~HrL05#^k!`V59MRjcd zjgT;%Jh(}z?A70;iU`l>O$n?4#E`KD(Vf3%A^j+}gjt=QB9H$AYR!>4Q9sw8l1^3+Yq)AQgr(eXuza~vu=ss*L zPcLS5*GF3IOc_t~W02|2t8Nmyi|}=w&877{6SqR8dlq?w7$mEqIFe5MOdXs2JpYnE zD0r&LJo$CzoXhw5mTXI|eXgzxoy1qnghYy5RPw0QHQMEHKI++V2*csr^k7eG1l|VF^O2x3EP$=^Q_lr;HrGt{Q#07^^&}3sT-y1mey61U6ln zbzRltRy5LsmYW@jiQNbDFb0XZwjB9&H08@v*cen+dn$d5fE4)%)4qcuD-NU61;I93T3vRjNKkmS`)PtpiW*29Ou4N zGaJrG>VO(dB?paPNhUh4U7WC*d-Z*D%@wkD&rj*J7V12;aj&&n$rgA6tDa8(oMPN^ zVJ8g}*`yU-bn94WPIPxA5Ey^0G0uKWi8gE&+bW=0(Pq6gY2Dx`Zs6T(uOiAVljSK3 zQK96Il&h_~lZNieRRA0(h->0nR)s_t6AR`&eGfn~cX3J}h-aL;ZnX_QSuUmbKXG8{ftr z04kZxDQ3P=uHo zbc$L}zcx`BlC|?Gy8BY=cyYQV>F_TN;iIl^<#UFx;k@d5`G9lIjpp(_XK2^lRo0l- z;ioFv=%}ABv%u5~H4`t0SAMo!-nZ+2X5%6c2vG&F_RCjJf1<$(yX5e|AHQD9zF!8s z5}?|j#$qM(*`?T`#LQso*-j|ChF;6uC`TowhSj?eU|wc-Ha=~Y6IN?iZ5OhYkPF?l zy#7V$@{m@0{RNPZr5kB=vNA7Jp1A*Q$j_I#{Md*T-yAs($9kPA&7k3Eq=s}oqUw0F zj#zjzO=l}}xla706qRz_VN}%_;axa8pURT$)cBRi;0Ip$a7`L_Hrf~Z9qx5}E8WpI z?0X=clGvUM=$j7%*2^Uw#~4asL8Vvs(Ow8dvIvekVS+eb&al&*}44xX>j;0O*boD z1!+J>5mUVKp1B96`j5yJD#FiS-$%g(Fl(`yAVBY8rBT={Xy>{>33KYq~ zAi4SZ+Fwcg7iSNjH}->@Rt%YQh4p3Gnagii@kA4pTZJr-=Y-1F;#o!m3QtC!B|K}% zRIvezx2Kw~-*aUe%yl@9<>Rs8dzI$rUQ;5+l1J6=C~H(GkmmBVtwA-Q4E-X<9=}^z z_~5N+=(dmij%2~O$}R!TLIAd*%wbL~Kus>JG?4E>kh!G4x94|b)GAbDu-E(l3HE=_l+DuH*Cf#)EONu;@?}@+ zd}AVyns$iB#U|3pPN<=*EGSFw2$JMdGk^b0c!g`M{2iU83<-Avi*z`FU7=V|*BU-~ zh05;4RPee;PT}d*^b1Rr)F^Udq*h%ry5Cw!Z#G68rR)w;z(}@5hXM7!UcR zU9-y}I`)Q}suK3N{2;%rN{#-tT56w#VqjcYtf1lRy`6`lq;N|p@P}%~MgH_7nWK5t z#T&QEY^$^W4T*MGDtMxK)tQ*-feL7-eQEZi4&c7)ZiIp1+}hEDn_ffvw&hxbsx;!s zc-(~JcWPtI=9g+ZjpDI(UEc)>`dSWfIQ2f`w;C(#zVtc%(B-t(uEonxhPC9N(2Gri zIvZ~~p?7+DWjGR`5oX(JF@MN7pIVZk#MTYU*#oTkTsOPfQ`c*MES~|yd}BM4FExr4 z#u`ucOnxkPU;Zz7J8ibgC*622ZPPuKVo8U7 z|4^AB;EO1fi6Jb?_rnojP5r>=z#Db*rUm=}SK@PW(IBILW&nK(=G*Ai7|B_>lk>$MTKG>%Fq-{MjUQ;GZw_60M&jn>0>7xVUBtLdo;R_lc zN}~lVp`70cJqp1p`6gTU z9-k>Zj5>}LvkTJCcnA9?)j+4BgUuZ#G>7hu2W|v6NJV>8G*T2&WGuu&VMRJduEw2< zXCSv`ke`2j`}?AypfAIvqN&KEA)~3HsGz6Mt)Y0ApitN(+lSn(6&Yudwv&HbhLGzX zUJg7SAZI%pr2ig>$J*PCN52F$f zcTsmmnQl=6=6^!{L89p{@~-&HE%KrDKO_I`32|2f" + array[localView1].value); + x += array[localView1].value; + } + System.out.println("x = " + x); + } + + private static void testLocalView(MappedFloat mo1, MappedFloat mo2) { + final MappedFloat[] array1 = mo1.asArray(); + for ( int v1 = 0; v1 < 5; v1++ ) { + array1[v1].value = (float)Math.random(); + array1[v1].value *= 2.0f; + } + final MappedFloat[] array2 = mo2.asArray(); + for ( int v2 = 0; v2 < 5; v2++ ) { + array2[v2].value = (float)Math.random(); + array2[v2].value *= 2.0f; + } + + System.out.println(); + + for ( int v1 = 0; v1 < 5; v1++ ) { + System.out.println("[" + v1 + "] =>" + array1[v1].value); + } + for ( int v2 = 0; v2 < 5; v2++ ) { + System.out.println("[" + v2 + "] =>" + array2[v2].value); + } + } + + private static void testLocalView(MappedSomething some) { + final MappedSomething[] array = some.asArray(); + + assert (array.length == 5); + + final long baseAddress = MemoryUtil.getAddress(some.backingByteBuffer()); + for ( int i = 0; i < array.length; i++ ) { + ByteBuffer data = array[i].data; + + assert (data.capacity() == (64 - 4)); + assert (MemoryUtil.getAddress(data) == baseAddress + i * MappedSomething.SIZEOF + 4); + } + } + +} \ No newline at end of file diff --git a/src/java/org/lwjgl/test/mapped/TestMappedObject.java b/src/java/org/lwjgl/test/mapped/TestMappedObject.java index e0110bd5..d8635812 100644 --- a/src/java/org/lwjgl/test/mapped/TestMappedObject.java +++ b/src/java/org/lwjgl/test/mapped/TestMappedObject.java @@ -71,6 +71,11 @@ public class TestMappedObject { MappedObjectTests3.testConstructor(); MappedObjectTests3.testMappedSet(); + MappedObjectTests4.testLocalView(); + + //MappedObjectTests4.testLWJGL(); + + System.out.println("done"); } diff --git a/src/java/org/lwjgl/test/opengl/sprites/SpriteShootoutMapped.java b/src/java/org/lwjgl/test/opengl/sprites/SpriteShootoutMapped.java new file mode 100644 index 00000000..5992cf6c --- /dev/null +++ b/src/java/org/lwjgl/test/opengl/sprites/SpriteShootoutMapped.java @@ -0,0 +1,831 @@ +/* + * Copyright (c) 2002-2011 LWJGL Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'LWJGL' nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.lwjgl.test.opengl.sprites; + +import org.lwjgl.BufferUtils; +import org.lwjgl.LWJGLException; +import org.lwjgl.Sys; +import org.lwjgl.input.Keyboard; +import org.lwjgl.input.Mouse; +import org.lwjgl.opengl.*; +import org.lwjgl.util.mapped.MappedObject; +import org.lwjgl.util.mapped.MappedObjectClassLoader; +import org.lwjgl.util.mapped.MappedObjectTransformer; +import org.lwjgl.util.mapped.MappedType; + +import java.awt.image.BufferedImage; +import java.awt.image.Raster; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.Random; +import javax.imageio.ImageIO; + +import static org.lwjgl.opengl.EXTTransformFeedback.*; +import static org.lwjgl.opengl.GL11.*; +import static org.lwjgl.opengl.GL12.*; +import static org.lwjgl.opengl.GL15.*; +import static org.lwjgl.opengl.GL20.*; +import static org.lwjgl.opengl.GL30.*; + +/** + * Sprite rendering demo. Three implementations are supported: + * a) CPU animation + BufferData VBO update. + * b) CPU animation + MapBufferRange VBO update. + * c) GPU animation using transform feedback with a vertex shader. + * + * @author Spasi + * @since 18/3/2011 + */ +public final class SpriteShootoutMapped { + + static final int SCREEN_WIDTH = 800; + static final int SCREEN_HEIGHT = 600; + + private static final int ANIMATION_TICKS = 60; + + private boolean run = true; + private boolean render = true; + private boolean colorMask = true; + private boolean animate = true; + private boolean smooth; + private boolean vsync; + + int ballSize = 42; + int ballCount = 100 * 1000; + + private SpriteRenderer renderer; + + // OpenGL stuff + private int texID; + private int texBigID; + private int texSmallID; + + private SpriteShootoutMapped() { + } + + public static void main(String[] args) { + MappedObjectTransformer.register(Pixel4b.class); + MappedObjectTransformer.register(Pixel3b.class); + MappedObjectTransformer.register(Sprite.class); + MappedObjectTransformer.register(SpriteRender.class); + + if ( MappedObjectClassLoader.fork(SpriteShootoutMapped.class, args) ) + return; + + try { + new SpriteShootoutMapped().start(); + } catch (LWJGLException e) { + e.printStackTrace(); + } + } + + private void start() throws LWJGLException { + try { + initGL(); + + final ContextCapabilities caps = GLContext.getCapabilities(); + if ( !true && (caps.OpenGL30 || caps.GL_EXT_transform_feedback) ) + renderer = new SpriteRendererTF(); + else if ( true && caps.GL_ARB_map_buffer_range ) + renderer = new SpriteRendererMapped(); + else + renderer = new SpriteRendererPlain(); + + updateBalls(ballCount); + run(); + } catch (Throwable t) { + t.printStackTrace(); + } finally { + destroy(); + } + } + + private void initGL() throws LWJGLException { + Display.setLocation((Display.getDisplayMode().getWidth() - SCREEN_WIDTH) / 2, + (Display.getDisplayMode().getHeight() - SCREEN_HEIGHT) / 2); + Display.setDisplayMode(new DisplayMode(SCREEN_WIDTH, SCREEN_HEIGHT)); + Display.setTitle("Sprite Shootout"); + Display.create(); + //Display.create(new PixelFormat(), new ContextAttribs(4, 1).withProfileCompatibility(true).withDebug(true)); + //AMDDebugOutput.glDebugMessageCallbackAMD(new AMDDebugOutputCallback()); + + if ( !GLContext.getCapabilities().OpenGL20 ) + throw new RuntimeException("OpenGL 2.0 is required for this demo."); + + // Setup viewport + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(0, SCREEN_WIDTH, 0, SCREEN_HEIGHT, -1.0, 1.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glViewport(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); + + glClearColor(1.0f, 1.0f, 1.0f, 0.0f); + + // Create textures + + try { + texSmallID = createTexture("res/ball_sm.png"); + texBigID = createTexture("res/ball.png"); + } catch (IOException e) { + e.printStackTrace(); + System.exit(-1); + } + texID = texBigID; + + // Setup rendering state + + glEnable(GL_BLEND); + glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); + + glEnable(GL_ALPHA_TEST); + glAlphaFunc(GL_GREATER, 0.0f); + + glColorMask(colorMask, colorMask, colorMask, false); + glDepthMask(false); + glDisable(GL_DEPTH_TEST); + + // Setup geometry + + glEnableClientState(GL_VERTEX_ARRAY); + glEnableClientState(GL_TEXTURE_COORD_ARRAY); + + Util.checkGLError(); + } + + private static int createTexture(final String path) throws IOException { + final BufferedImage img = ImageIO.read(SpriteShootoutMapped.class.getClassLoader().getResource(path)); + + final int w = img.getWidth(); + final int h = img.getHeight(); + + final ByteBuffer buffer = readImage(img); + + final int texID = glGenTextures(); + + glBindTexture(GL_TEXTURE_2D, texID); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_BGRA, GL_UNSIGNED_BYTE, buffer); + + return texID; + } + + @MappedType(sizeof = 4) + public static class Pixel4b extends MappedObject { + + public byte r, g, b, a; + + } + + @MappedType(sizeof = 3, align = 3) + public static class Pixel3b extends MappedObject { + + public byte r, g, b; + + } + + private static ByteBuffer readImage(final BufferedImage img) throws IOException { + final Raster raster = img.getRaster(); + + final int bands = raster.getNumBands(); + + final int w = img.getWidth(); + final int h = img.getHeight(); + + final int count = w * h; + + final byte[] pixels = new byte[count * bands]; + raster.getDataElements(0, 0, w, h, pixels); + + if ( bands == 4 ) { + Pixel4b p = Pixel4b.malloc(count); + + int b = 0; + for ( int i = 0; i < count; i++, b += 4 ) { + // Pre-multiply alpha + final float a = unpackUByte01(pixels[b + 3]); + + p.view = i; + p.r = packUByte01(unpackUByte01(pixels[b + 2]) * a); + p.g = packUByte01(unpackUByte01(pixels[b + 1]) * a); + p.b = packUByte01(unpackUByte01(pixels[b + 0]) * a); + p.a = pixels[b + 3]; + } + + return p.backingByteBuffer(); + } else if ( bands == 3 ) { + Pixel3b p = Pixel3b.malloc(count); + + int b = 0; + for ( int i = 0; i < count; i++, b += 3 ) { + p.view = i; + p.r = pixels[b + 2]; + p.g = pixels[b + 1]; + p.b = pixels[b + 0]; + } + + return p.backingByteBuffer(); + } else { + ByteBuffer p = BufferUtils.createByteBuffer(count * bands); + p.put(pixels, 0, p.capacity()); + p.flip(); + return p; + } + + } + + private static float unpackUByte01(final byte x) { + return (x & 0xFF) / 255.0f; + } + + private static byte packUByte01(final float x) { + return (byte)(x * 255.0f); + } + + private void updateBalls(final int count) { + System.out.println("NUMBER OF BALLS: " + count); + renderer.updateBalls(ballCount); + } + + private void run() { + long startTime = System.currentTimeMillis() + 5000; + long fps = 0; + + long time = Sys.getTime(); + final int ticksPerUpdate = (int)(Sys.getTimerResolution() / ANIMATION_TICKS); + + renderer.render(false, true, 0); + + while ( run ) { + Display.processMessages(); + handleInput(); + + glClear(GL_COLOR_BUFFER_BIT); + + final long currTime = Sys.getTime(); + final int delta = (int)(currTime - time); + if ( smooth || delta >= ticksPerUpdate ) { + renderer.render(render, animate, delta); + time = currTime; + } else + renderer.render(render, false, 0); + + Display.update(false); + //Display.sync(60); + + if ( startTime > System.currentTimeMillis() ) { + fps++; + } else { + long timeUsed = 5000 + (startTime - System.currentTimeMillis()); + startTime = System.currentTimeMillis() + 5000; + System.out.println("FPS: " + (Math.round(fps / (timeUsed / 1000.0) * 10) / 10.0) + ", Balls: " + ballCount); + fps = 0; + } + } + } + + private void handleInput() { + if ( Display.isCloseRequested() ) + run = false; + + while ( Keyboard.next() ) { + if ( Keyboard.getEventKeyState() ) + continue; + + switch ( Keyboard.getEventKey() ) { + case Keyboard.KEY_1: + case Keyboard.KEY_2: + case Keyboard.KEY_3: + case Keyboard.KEY_4: + case Keyboard.KEY_5: + case Keyboard.KEY_6: + case Keyboard.KEY_7: + case Keyboard.KEY_8: + case Keyboard.KEY_9: + case Keyboard.KEY_0: + ballCount = 1 << (Keyboard.getEventKey() - Keyboard.KEY_1); + updateBalls(ballCount); + break; + case Keyboard.KEY_ADD: + case Keyboard.KEY_SUBTRACT: + int mult; + if ( Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT) ) + mult = 1000; + else if ( Keyboard.isKeyDown(Keyboard.KEY_LMENU) || Keyboard.isKeyDown(Keyboard.KEY_RMENU) ) + mult = 100; + else if ( Keyboard.isKeyDown(Keyboard.KEY_LCONTROL) || Keyboard.isKeyDown(Keyboard.KEY_RCONTROL) ) + mult = 10; + else + mult = 1; + if ( Keyboard.getEventKey() == Keyboard.KEY_SUBTRACT ) + mult = -mult; + ballCount += mult * 100; + if ( ballCount <= 0 ) + ballCount = 1; + updateBalls(ballCount); + break; + case Keyboard.KEY_ESCAPE: + run = false; + break; + case Keyboard.KEY_A: + animate = !animate; + System.out.println("Animation is now " + (animate ? "on" : "off") + "."); + break; + case Keyboard.KEY_C: + colorMask = !colorMask; + glColorMask(colorMask, colorMask, colorMask, false); + System.out.println("Color mask is now " + (colorMask ? "on" : "off") + "."); + // Disable alpha test when color mask is off, else we get no benefit. + if ( colorMask ) { + glEnable(GL_BLEND); + glEnable(GL_ALPHA_TEST); + } else { + glDisable(GL_BLEND); + glDisable(GL_ALPHA_TEST); + } + break; + case Keyboard.KEY_R: + render = !render; + System.out.println("Rendering is now " + (render ? "on" : "off") + "."); + break; + case Keyboard.KEY_S: + smooth = !smooth; + System.out.println("Smooth animation is now " + (smooth ? "on" : "off") + "."); + break; + case Keyboard.KEY_T: + if ( texID == texBigID ) { + texID = texSmallID; + ballSize = 16; + } else { + texID = texBigID; + ballSize = 42; + } + renderer.updateBallSize(); + glBindTexture(GL_TEXTURE_2D, texID); + System.out.println("Now using the " + (texID == texBigID ? "big" : "small") + " texture."); + break; + case Keyboard.KEY_V: + vsync = !vsync; + Display.setVSyncEnabled(vsync); + System.out.println("VSYNC is now " + (vsync ? "enabled" : "disabled") + "."); + break; + } + } + + while ( Mouse.next() ) ; + } + + private void destroy() { + Display.destroy(); + } + + @MappedType(sizeof = 4 * 4) + public static class Sprite extends MappedObject { + + public float x, y; + public float dx, dy; + + } + + @MappedType(sizeof = 2 * 4) + public static class SpriteRender extends MappedObject { + + public float x, y; + + } + + private abstract class SpriteRenderer { + + protected Sprite sprites; + + protected int spriteCount; + + protected int vshID; + protected int progID; + + protected void createProgram() { + final int fshID = glCreateShader(GL_FRAGMENT_SHADER); + glShaderSource(fshID, "uniform sampler2D COLOR_MAP;\n" + + "void main(void) {\n" + + " gl_FragColor = texture2D(COLOR_MAP, gl_PointCoord);\n" + + "}"); + glCompileShader(fshID); + if ( glGetShader(fshID, GL_COMPILE_STATUS) == GL_FALSE ) { + System.out.println(glGetShaderInfoLog(fshID, glGetShader(fshID, GL_INFO_LOG_LENGTH))); + throw new RuntimeException("Failed to compile fragment shader."); + } + + progID = glCreateProgram(); + glAttachShader(progID, vshID); + glAttachShader(progID, fshID); + glLinkProgram(progID); + if ( glGetProgram(progID, GL_LINK_STATUS) == GL_FALSE ) { + System.out.println(glGetProgramInfoLog(progID, glGetProgram(progID, GL_INFO_LOG_LENGTH))); + throw new RuntimeException("Failed to link shader program."); + } + + glUseProgram(progID); + glUniform1i(glGetUniformLocation(progID, "COLOR_MAP"), 0); + + updateBallSize(); + + glEnableClientState(GL_VERTEX_ARRAY); + } + + public void updateBallSize() { + glPointSize(ballSize); + } + + public abstract void updateBalls(int count); + + protected abstract void render(boolean render, boolean animate, int delta); + + } + + private abstract class SpriteRendererBatched extends SpriteRenderer { + + protected static final int BALLS_PER_BATCH = 10 * 1000; + + SpriteRendererBatched() { + vshID = glCreateShader(GL_VERTEX_SHADER); + glShaderSource(vshID, "void main(void) {\n" + + " gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;\n" + + "}"); + glCompileShader(vshID); + if ( glGetShader(vshID, GL_COMPILE_STATUS) == GL_FALSE ) { + System.out.println(glGetShaderInfoLog(vshID, glGetShader(vshID, GL_INFO_LOG_LENGTH))); + throw new RuntimeException("Failed to compile vertex shader."); + } + + createProgram(); + } + + public void updateBalls(final int count) { + final Random random = new Random(); + + final Sprite newSprites = Sprite.malloc(count); + if ( sprites != null ) { + sprites.view = 0; + sprites.copyRange(newSprites, Math.min(count, spriteCount)); + } + + if ( count > spriteCount ) { + for ( int i = spriteCount; i < count; i++ ) { + newSprites.view = i; + + newSprites.x = (int)(random.nextFloat() * (SCREEN_WIDTH - ballSize) + ballSize * 0.5f); + newSprites.y = (int)(random.nextFloat() * (SCREEN_HEIGHT - ballSize) + ballSize * 0.5f); + newSprites.dx = random.nextFloat() * 0.4f - 0.2f; + newSprites.dy = random.nextFloat() * 0.4f - 0.2f; + } + } + + sprites = newSprites; + spriteCount = count; + } + + protected void animate( + final Sprite sprite, + final SpriteRender spriteRender, + final int ballSize, final int ballIndex, final int batchSize, final int delta + ) { + final float ballRadius = ballSize * 0.5f; + final float boundW = SCREEN_WIDTH - ballRadius; + final float boundH = SCREEN_HEIGHT - ballRadius; + + final Sprite[] sprites = sprite.asArray(); + final SpriteRender[] spritesRender = spriteRender.asArray(); + for ( int b = ballIndex, r = 0, len = (ballIndex + batchSize); b < len; b++, r++ ) { + float x = sprites[b].x; + float dx = sprites[b].dx; + + x += dx * delta; + if ( x < ballRadius ) { + x = ballRadius; + sprites[b].dx = -dx; + } else if ( x > boundW ) { + x = boundW; + sprites[b].dx = -dx; + } + sprites[b].x = x; + + float y = sprites[b].y; + float dy = sprites[b].dy; + + y += dy * delta; + if ( y < ballRadius ) { + y = ballRadius; + sprites[b].dy = -dy; + } else if ( y > boundH ) { + y = boundH; + sprites[b].dy = -dy; + } + sprites[b].y = y; + + spritesRender[r].x = x; + spritesRender[r].y = y; + } + } + + } + + private class SpriteRendererPlain extends SpriteRendererBatched { + + private final int DATA_PER_BATCH = BALLS_PER_BATCH * 2 * 4; // balls * 2 floats * 4 bytes + + protected int[] animVBO; + + private SpriteRender spritesRender; + + SpriteRendererPlain() { + System.out.println("Shootout Implementation: CPU animation & BufferData"); + spritesRender = SpriteRender.malloc(BALLS_PER_BATCH); + } + + public void updateBalls(final int count) { + super.updateBalls(count); + + final int batchCount = count / BALLS_PER_BATCH + (count % BALLS_PER_BATCH == 0 ? 0 : 1); + if ( animVBO != null && batchCount == animVBO.length ) + return; + + final int[] newAnimVBO = new int[batchCount]; + if ( animVBO != null ) { + System.arraycopy(animVBO, 0, newAnimVBO, 0, Math.min(animVBO.length, newAnimVBO.length)); + for ( int i = newAnimVBO.length; i < animVBO.length; i++ ) + glDeleteBuffers(animVBO[i]); + } + for ( int i = animVBO == null ? 0 : animVBO.length; i < newAnimVBO.length; i++ ) { + newAnimVBO[i] = glGenBuffers(); + glBindBuffer(GL_ARRAY_BUFFER, newAnimVBO[i]); + } + + animVBO = newAnimVBO; + } + + public void render(final boolean render, final boolean animate, final int delta) { + int batchSize = Math.min(ballCount, BALLS_PER_BATCH); + int ballIndex = 0; + int batchIndex = 0; + while ( ballIndex < ballCount ) { + glBindBuffer(GL_ARRAY_BUFFER, animVBO[batchIndex]); + + if ( animate ) + animate(ballIndex, batchSize, delta); + + if ( render ) { + glVertexPointer(2, GL_FLOAT, 0, 0); + glDrawArrays(GL_POINTS, 0, batchSize); + } + + ballIndex += batchSize; + batchSize = Math.min(ballCount - ballIndex, BALLS_PER_BATCH); + batchIndex++; + } + } + + private void animate(final int ballIndex, final int batchSize, final int delta) { + animate( + sprites, spritesRender, + ballSize, ballIndex, batchSize, delta + ); + + glBufferData(GL_ARRAY_BUFFER, DATA_PER_BATCH, GL_STREAM_DRAW); + glBufferSubData(GL_ARRAY_BUFFER, 0, spritesRender.backingByteBuffer()); + } + + } + + private class SpriteRendererMapped extends SpriteRendererBatched { + + private StreamVBO animVBO; + + SpriteRendererMapped() { + System.out.println("Shootout Implementation: CPU animation & MapBufferRange"); + } + + public void updateBalls(final int count) { + super.updateBalls(count); + + if ( animVBO != null ) + animVBO.destroy(); + + animVBO = new StreamVBO(GL_ARRAY_BUFFER, ballCount * (2 * 4)); + } + + public void render(final boolean render, final boolean animate, final int delta) { + int batchSize = Math.min(ballCount, BALLS_PER_BATCH); + int ballIndex = 0; + while ( ballIndex < ballCount ) { + if ( animate ) { + final ByteBuffer buffer = animVBO.map(batchSize * (2 * 4)); + + animate(sprites, SpriteRender.map(buffer), ballSize, ballIndex, batchSize, delta); + + animVBO.unmap(); + } + + if ( render ) { + glVertexPointer(2, GL_FLOAT, 0, ballIndex * (2 * 4)); + glDrawArrays(GL_POINTS, 0, batchSize); + } + + ballIndex += batchSize; + batchSize = Math.min(ballCount - ballIndex, BALLS_PER_BATCH); + } + } + + } + + private class SpriteRendererTF extends SpriteRenderer { + + private int progIDTF; + private int ballSizeLoc; + private int deltaLoc; + + private int[] tfVBO = new int[2]; + private int currVBO; + + SpriteRendererTF() { + System.out.println("Shootout Implementation: TF GPU animation"); + + // Transform-feedback program + + final int vshID = glCreateShader(GL_VERTEX_SHADER); + glShaderSource(vshID, "#version 130\n" + + "const float WIDTH = " + SCREEN_WIDTH + ";\n" + + "const float HEIGHT = " + SCREEN_HEIGHT + ";\n" + + "uniform float ballSize;\n" + // ballSize / 2 + "uniform float delta;\n" + + "void main(void) {\n" + + " vec4 anim = gl_Vertex;\n" + + " anim.xy = anim.xy + anim.zw * delta;\n" + + " vec2 animC = clamp(anim.xy, vec2(ballSize), vec2(WIDTH - ballSize, HEIGHT - ballSize));\n" + + " if ( anim.x != animC.x ) anim.z = -anim.z;\n" + + " if ( anim.y != animC.y ) anim.w = -anim.w;\n" + + " gl_Position = vec4(animC, anim.zw);\n" + + "}"); + glCompileShader(vshID); + if ( glGetShader(vshID, GL_COMPILE_STATUS) == GL_FALSE ) { + System.out.println(glGetShaderInfoLog(vshID, glGetShader(vshID, GL_INFO_LOG_LENGTH))); + throw new RuntimeException("Failed to compile vertex shader."); + } + + progIDTF = glCreateProgram(); + glAttachShader(progIDTF, vshID); + glTransformFeedbackVaryings(progIDTF, new CharSequence[] { "gl_Position" }, GL_SEPARATE_ATTRIBS); + glLinkProgram(progIDTF); + if ( glGetProgram(progIDTF, GL_LINK_STATUS) == GL_FALSE ) { + System.out.println(glGetProgramInfoLog(progIDTF, glGetProgram(progIDTF, GL_INFO_LOG_LENGTH))); + throw new RuntimeException("Failed to link shader program."); + } + + glUseProgram(progIDTF); + + ballSizeLoc = glGetUniformLocation(progIDTF, "ballSize"); + deltaLoc = glGetUniformLocation(progIDTF, "delta"); + + glUniform1f(ballSizeLoc, ballSize * 0.5f); + + // ----------------- + + this.vshID = glCreateShader(GL_VERTEX_SHADER); + glShaderSource(this.vshID, "void main(void) {\n" + + " gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;\n" + + "}"); + glCompileShader(this.vshID); + if ( glGetShader(this.vshID, GL_COMPILE_STATUS) == GL_FALSE ) { + System.out.println(glGetShaderInfoLog(this.vshID, glGetShader(this.vshID, GL_INFO_LOG_LENGTH))); + throw new RuntimeException("Failed to compile vertex shader."); + } + + createProgram(); + } + + public void updateBallSize() { + glUseProgram(progIDTF); + glUniform1f(ballSizeLoc, ballSize * 0.5f); + + glUseProgram(progID); + super.updateBallSize(); + } + + private void doUpdateBalls(final int count) { + final Random random = new Random(); + + final Sprite newSprites = Sprite.malloc(count); + if ( sprites != null ) { + sprites.view = 0; + sprites.copyRange(newSprites, Math.min(count, spriteCount)); + } + + if ( count > spriteCount ) { + for ( int i = spriteCount; i < count; i++ ) { + newSprites.view = i; + + newSprites.x = (int)(random.nextFloat() * (SCREEN_WIDTH - ballSize) + ballSize * 0.5f); + newSprites.y = (int)(random.nextFloat() * (SCREEN_HEIGHT - ballSize) + ballSize * 0.5f); + newSprites.dx = random.nextFloat() * 0.4f - 0.2f; + newSprites.dy = random.nextFloat() * 0.4f - 0.2f; + } + } + + sprites = newSprites; + spriteCount = count; + } + + public void updateBalls(final int count) { + if ( tfVBO[0] != 0 ) { + // Fetch current animation state + glGetBufferSubData(GL_TRANSFORM_FEEDBACK_BUFFER, 0, sprites.backingByteBuffer()); + } + + doUpdateBalls(count); + + if ( tfVBO[0] != 0 ) { + for ( int i = 0; i < tfVBO.length; i++ ) + glDeleteBuffers(tfVBO[i]); + } + + for ( int i = 0; i < tfVBO.length; i++ ) { + tfVBO[i] = glGenBuffers(); + glBindBuffer(GL_TRANSFORM_FEEDBACK_BUFFER, tfVBO[i]); + glBufferData(GL_TRANSFORM_FEEDBACK_BUFFER, sprites.backingByteBuffer(), GL_STATIC_DRAW); + } + + glBindBuffer(GL_ARRAY_BUFFER, tfVBO[0]); + glVertexPointer(2, GL_FLOAT, (4 * 4), 0); + } + + public void render(final boolean render, final boolean animate, final int delta) { + if ( animate ) { + glUseProgram(progIDTF); + glUniform1f(deltaLoc, delta); + + final int vbo = currVBO; + currVBO = 1 - currVBO; + + glBindBuffer(GL_ARRAY_BUFFER, tfVBO[vbo]); + glVertexPointer(4, GL_FLOAT, 0, 0); + + glEnable(GL_RASTERIZER_DISCARD); + if ( GLContext.getCapabilities().OpenGL30 ) { + glBindBufferBase(GL_TRANSFORM_FEEDBACK_BUFFER, 0, tfVBO[1 - vbo]); + + glBeginTransformFeedback(GL_POINTS); + glDrawArrays(GL_POINTS, 0, ballCount); + glEndTransformFeedback(); + } else { + glBindBufferBaseEXT(GL_TRANSFORM_FEEDBACK_BUFFER_EXT, 0, tfVBO[1 - vbo]); + + glBeginTransformFeedbackEXT(GL_POINTS); + glDrawArrays(GL_POINTS, 0, ballCount); + glEndTransformFeedbackEXT(); + } + glDisable(GL_RASTERIZER_DISCARD); + + glUseProgram(progID); + glVertexPointer(2, GL_FLOAT, (4 * 4), 0); + } + + if ( render ) + glDrawArrays(GL_POINTS, 0, ballCount); + } + + } + +} \ No newline at end of file diff --git a/src/java/org/lwjgl/util/mapped/MappedHelper.java b/src/java/org/lwjgl/util/mapped/MappedHelper.java index 2b9b5ada..bc3b4152 100644 --- a/src/java/org/lwjgl/util/mapped/MappedHelper.java +++ b/src/java/org/lwjgl/util/mapped/MappedHelper.java @@ -31,6 +31,9 @@ */ package org.lwjgl.util.mapped; +import org.lwjgl.LWJGLUtil; +import org.lwjgl.MemoryUtil; + import java.nio.ByteBuffer; /** @@ -43,30 +46,32 @@ import java.nio.ByteBuffer; public class MappedHelper { public static void setup(MappedObject mo, ByteBuffer buffer, int align, int sizeof) { - if ( mo.baseAddress != 0L ) + if ( LWJGLUtil.CHECKS && mo.baseAddress != 0L ) throw new IllegalStateException("this method should not be called by user-code"); - if ( buffer == null ) - throw new NullPointerException("buffer"); - if ( !buffer.isDirect() ) + if ( LWJGLUtil.CHECKS && !buffer.isDirect() ) throw new IllegalArgumentException("bytebuffer must be direct"); mo.preventGC = buffer; - if ( align <= 0 ) + if ( LWJGLUtil.CHECKS && align <= 0 ) throw new IllegalArgumentException("invalid alignment"); mo.align = align; - if ( sizeof % align != 0 ) + if ( LWJGLUtil.CHECKS && (sizeof <= 0 || sizeof % align != 0) ) throw new IllegalStateException("sizeof not a multiple of alignment"); mo.sizeof = sizeof; - long addr = MappedObjectUnsafe.getBufferBaseAddress(buffer) + buffer.position(); - if ( addr % align != 0 ) + long addr = MemoryUtil.getAddress(buffer); + if ( LWJGLUtil.CHECKS && addr % align != 0 ) throw new IllegalStateException("buffer address not aligned on " + align + " bytes"); mo.baseAddress = mo.viewAddress = addr; } + public static void checkAddress(MappedObject mapped, long viewAddress) { + mapped.checkAddress(viewAddress); + } + public static void put_views(MappedSet2 set, int view) { set.view(view); } @@ -87,6 +92,14 @@ public class MappedHelper { return (int)(mapped.viewAddress - mapped.baseAddress) / sizeof; } + public static void put_view_shift(MappedObject mapped, int view, int sizeof_shift) { + mapped.setViewAddress(mapped.baseAddress + (view << sizeof_shift)); + } + + public static int get_view_shift(MappedObject mapped, int sizeof_shift) { + return ((int)(mapped.viewAddress - mapped.baseAddress)) >> sizeof_shift; + } + public static void put_view_next(MappedObject mapped, int sizeof) { mapped.setViewAddress(mapped.viewAddress + sizeof); } @@ -130,38 +143,70 @@ public class MappedHelper { MappedObjectUnsafe.INSTANCE.putByte(addr, value); } + public static void bput(MappedObject mapped, byte value, int fieldOffset) { + MappedObjectUnsafe.INSTANCE.putByte(mapped.viewAddress + fieldOffset, value); + } + public static byte bget(long addr) { return MappedObjectUnsafe.INSTANCE.getByte(addr); } + public static byte bget(MappedObject mapped, int fieldOffset) { + return MappedObjectUnsafe.INSTANCE.getByte(mapped.viewAddress + fieldOffset); + } + // short public static void sput(short value, long addr) { MappedObjectUnsafe.INSTANCE.putShort(addr, value); } + public static void sput(MappedObject mapped, short value, int fieldOffset) { + MappedObjectUnsafe.INSTANCE.putShort(mapped.viewAddress + fieldOffset, value); + } + public static short sget(long addr) { return MappedObjectUnsafe.INSTANCE.getShort(addr); } + public static short sget(MappedObject mapped, int fieldOffset) { + return MappedObjectUnsafe.INSTANCE.getShort(mapped.viewAddress + fieldOffset); + } + // char public static void cput(char value, long addr) { MappedObjectUnsafe.INSTANCE.putChar(addr, value); } + public static void cput(MappedObject mapped, char value, int fieldOffset) { + MappedObjectUnsafe.INSTANCE.putChar(mapped.viewAddress + fieldOffset, value); + } + public static char cget(long addr) { return MappedObjectUnsafe.INSTANCE.getChar(addr); } + public static char cget(MappedObject mapped, int fieldOffset) { + return MappedObjectUnsafe.INSTANCE.getChar(mapped.viewAddress + fieldOffset); + } + // int public static void iput(int value, long addr) { MappedObjectUnsafe.INSTANCE.putInt(addr, value); } - public static int iget(long addr) { - return MappedObjectUnsafe.INSTANCE.getInt(addr); + public static void iput(MappedObject mapped, int value, int fieldOffset) { + MappedObjectUnsafe.INSTANCE.putInt(mapped.viewAddress + fieldOffset, value); + } + + public static int iget(long address) { + return MappedObjectUnsafe.INSTANCE.getInt(address); + } + + public static int iget(MappedObject mapped, int fieldOffset) { + return MappedObjectUnsafe.INSTANCE.getInt(mapped.viewAddress + fieldOffset); } // float @@ -170,28 +215,52 @@ public class MappedHelper { MappedObjectUnsafe.INSTANCE.putFloat(addr, value); } + public static void fput(MappedObject mapped, float value, int fieldOffset) { + MappedObjectUnsafe.INSTANCE.putFloat(mapped.viewAddress + fieldOffset, value); + } + public static float fget(long addr) { return MappedObjectUnsafe.INSTANCE.getFloat(addr); } + public static float fget(MappedObject mapped, int fieldOffset) { + return MappedObjectUnsafe.INSTANCE.getFloat(mapped.viewAddress + fieldOffset); + } + // long public static void jput(long value, long addr) { MappedObjectUnsafe.INSTANCE.putLong(addr, value); } + public static void jput(MappedObject mapped, long value, int fieldOffset) { + MappedObjectUnsafe.INSTANCE.putLong(mapped.viewAddress + fieldOffset, value); + } + public static long jget(long addr) { return MappedObjectUnsafe.INSTANCE.getLong(addr); } + public static long lget(MappedObject mapped, int fieldOffset) { + return MappedObjectUnsafe.INSTANCE.getLong(mapped.viewAddress + fieldOffset); + } + // double public static void dput(double value, long addr) { MappedObjectUnsafe.INSTANCE.putDouble(addr, value); } + public static void dput(MappedObject mapped, double value, int fieldOffset) { + MappedObjectUnsafe.INSTANCE.putDouble(mapped.viewAddress + fieldOffset, value); + } + public static double dget(long addr) { return MappedObjectUnsafe.INSTANCE.getDouble(addr); } + public static double dget(MappedObject mapped, int fieldOffset) { + return MappedObjectUnsafe.INSTANCE.getDouble(mapped.viewAddress + fieldOffset); + } + } \ No newline at end of file diff --git a/src/java/org/lwjgl/util/mapped/MappedObject.java b/src/java/org/lwjgl/util/mapped/MappedObject.java index 9d3a93b0..6760b12d 100644 --- a/src/java/org/lwjgl/util/mapped/MappedObject.java +++ b/src/java/org/lwjgl/util/mapped/MappedObject.java @@ -32,6 +32,7 @@ package org.lwjgl.util.mapped; import org.lwjgl.LWJGLUtil; +import org.lwjgl.MemoryUtil; import java.nio.BufferOverflowException; import java.nio.ByteBuffer; @@ -93,7 +94,7 @@ public class MappedObject { } final void checkAddress(final long address) { - final long base = MappedObjectUnsafe.getBufferBaseAddress(preventGC); + final long base = MemoryUtil.getAddress0(preventGC); final int offset = (int)(address - base); if ( address < base || preventGC.capacity() < (offset + this.sizeof) ) throw new IndexOutOfBoundsException(Integer.toString(offset / sizeof)); @@ -103,7 +104,7 @@ public class MappedObject { if ( bytes < 0 ) throw new IllegalArgumentException(); - if ( preventGC.capacity() < (viewAddress - MappedObjectUnsafe.getBufferBaseAddress(preventGC) + bytes) ) + if ( preventGC.capacity() < (viewAddress - MemoryUtil.getAddress0(preventGC) + bytes) ) throw new BufferOverflowException(); } @@ -155,7 +156,7 @@ public class MappedObject { /** * Creates an identical new MappedObject instance, comparable to the - * contract of {@link ByteBuffer#duplicate}. This is useful when more than one + * contract of {@link java.nio.ByteBuffer#duplicate}. This is useful when more than one * views of the mapped object are required at the same time, e.g. in * multithreaded access. */ @@ -166,7 +167,7 @@ public class MappedObject { /** * Creates a new MappedObject instance, with a base offset equal to - * the offset of the current view, comparable to the contract of {@link ByteBuffer#slice}. + * the offset of the current view, comparable to the contract of {@link java.nio.ByteBuffer#slice}. */ public final T slice() { // any method that calls this method will have its call-site modified @@ -188,6 +189,11 @@ public class MappedObject { throw new InternalError("type not registered"); } + /** Moves the current view to the next element. Non-transformed implementation for MappedSets. */ + final void nextSet() { + setViewAddress(viewAddress + sizeof); + } + /** * Copies and amount of SIZEOF bytes, from the current * mapped object, to the specified mapped object. @@ -220,10 +226,16 @@ public class MappedObject { return new MappedForeach(mapped, elementCount); } + @SuppressWarnings("unused") + public final T[] asArray() { + // any method that calls this method will have its call-site modified + throw new InternalError("type not registered"); + } + ByteBuffer preventGC; /** - * Returns the {@link ByteBuffer} that backs this mapped object. + * Returns the {@link java.nio.ByteBuffer} that backs this mapped object. * * @return the backing buffer */ diff --git a/src/java/org/lwjgl/util/mapped/MappedObjectClassLoader.java b/src/java/org/lwjgl/util/mapped/MappedObjectClassLoader.java index 0452937f..feec2e7d 100644 --- a/src/java/org/lwjgl/util/mapped/MappedObjectClassLoader.java +++ b/src/java/org/lwjgl/util/mapped/MappedObjectClassLoader.java @@ -117,7 +117,7 @@ public class MappedObjectClassLoader extends URLClassLoader { byte[] bytecode = readStream(this.getResourceAsStream(className.concat(".class"))); long t0 = System.nanoTime(); - bytecode = MappedObjectTransformer.transformFieldAccess(className, bytecode); + bytecode = MappedObjectTransformer.transformMappedAPI(className, bytecode); long t1 = System.nanoTime(); total_time_transforming += (t1 - t0); diff --git a/src/java/org/lwjgl/util/mapped/MappedObjectTransformer.java b/src/java/org/lwjgl/util/mapped/MappedObjectTransformer.java index c257720c..305b2ef8 100644 --- a/src/java/org/lwjgl/util/mapped/MappedObjectTransformer.java +++ b/src/java/org/lwjgl/util/mapped/MappedObjectTransformer.java @@ -1,21 +1,51 @@ /* - * Created on Jun 23, 2011 + * Copyright (c) 2002-2011 LWJGL Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'LWJGL' nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - package org.lwjgl.util.mapped; import org.lwjgl.LWJGLUtil; import org.objectweb.asm.*; +import org.objectweb.asm.tree.*; +import org.objectweb.asm.tree.analysis.*; import org.objectweb.asm.util.TraceClassVisitor; -import java.io.*; +import java.io.PrintWriter; +import java.io.StringWriter; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.nio.ByteBuffer; import java.util.HashMap; import java.util.Map; -import java.util.StringTokenizer; +import static org.objectweb.asm.ClassWriter.*; import static org.objectweb.asm.Opcodes.*; /** @@ -25,7 +55,7 @@ import static org.objectweb.asm.Opcodes.*; * The transformer supports some debugging tools, enabled through JVM system properties:
* org.lwjgl.util.mapped.PrintTiming=true, prints timing information for the transformation step.
* org.lwjgl.util.mapped.PrintActivity=true, prints activity information.
- * org.lwjgl.util.mapped.PrintBytecode=true, prints the transformed bytecode. [not working atm]
+ * org.lwjgl.util.mapped.PrintBytecode=true, prints the transformed bytecode.
* org.lwjgl.util.Debug must also be set to true for the above to work. * * @author Riven @@ -41,7 +71,24 @@ public class MappedObjectTransformer { static final String MAPPED_OBJECT_JVM = jvmClassName(MappedObject.class); static final String MAPPED_HELPER_JVM = jvmClassName(MappedHelper.class); + static final String MAPPEDSET_PREFIX = jvmClassName(MappedSet.class); + static final String MAPPED_SET2_JVM = jvmClassName(MappedSet2.class); + static final String MAPPED_SET3_JVM = jvmClassName(MappedSet3.class); + static final String MAPPED_SET4_JVM = jvmClassName(MappedSet4.class); + + static final String LENGTH_METHOD_NAME = "length$LWJGL"; + static final String VIEWADDRESS_METHOD_NAME = "getViewAddress$LWJGL"; + static final String VIEW_CONSTRUCTOR_NAME = "constructView$LWJGL"; + + static final Map OPCODE_TO_NAME = new HashMap(); + static final Map INSNTYPE_TO_NAME = new HashMap(); + + static boolean is_currently_computing_frames; + static { + getClassEnums(Opcodes.class, OPCODE_TO_NAME, "V1_", "ACC_", "T_", "F_", "MH_"); + getClassEnums(AbstractInsnNode.class, INSNTYPE_TO_NAME); + className_to_subtype = new HashMap(); { @@ -59,11 +106,10 @@ public class MappedObjectTransformer { // => IADD // => PUTFIELD MyMappedType.view // - MappedSubtypeInfo info = new MappedSubtypeInfo(MAPPED_OBJECT_JVM, -1, -1); - className_to_subtype.put(info.className, info); + className_to_subtype.put(MAPPED_OBJECT_JVM, new MappedSubtypeInfo(MAPPED_OBJECT_JVM, -1, -1)); } - String vmName = System.getProperty("java.vm.name"); + final String vmName = System.getProperty("java.vm.name"); if ( vmName != null && !vmName.contains("Server") ) { System.err.println("Warning: " + MappedObject.class.getSimpleName() + "s have inferiour performance on Client VMs, please consider switching to a Server VM."); } @@ -71,7 +117,7 @@ public class MappedObjectTransformer { /** * Registers a class as a mapped object. - * The class must extend {@link MappedObject} and be annotated with {@link MappedField}. + * The class must extend {@link org.lwjgl.util.mapped.MappedObject} and be annotated with {@link org.lwjgl.util.mapped.MappedField}. * * @param type the mapped object class. */ @@ -79,131 +125,87 @@ public class MappedObjectTransformer { if ( MappedObjectClassLoader.FORKED ) return; - MappedType mapped = type.getAnnotation(MappedType.class); + final MappedType mapped = type.getAnnotation(MappedType.class); if ( mapped == null ) throw new InternalError("missing " + MappedType.class.getName() + " annotation"); if ( type.getEnclosingClass() != null && !Modifier.isStatic(type.getModifiers()) ) throw new InternalError("only top-level or static inner classes are allowed"); - String className = jvmClassName(type); - - MappedSubtypeInfo mappedType = new MappedSubtypeInfo(className, mapped.sizeof(), mapped.align()); + final MappedSubtypeInfo mappedType = new MappedSubtypeInfo(jvmClassName(type), mapped.sizeof(), mapped.align()); int advancingOffset = 0; + for ( Field field : type.getDeclaredFields() ) + advancingOffset += registerField(mapped, mappedType.className, mappedType, advancingOffset, field); - for ( Field field : type.getDeclaredFields() ) { - // static fields are never mapped - if ( Modifier.isStatic(field.getModifiers()) ) - continue; - - // we only support primitives and ByteBuffers - if ( !field.getType().isPrimitive() && field.getType() != ByteBuffer.class ) - throw new InternalError("field '" + className + "." + field.getName() + "' not supported: " + field.getType()); - - MappedField meta = field.getAnnotation(MappedField.class); - if ( meta == null && !mapped.autoGenerateOffsets() ) - throw new InternalError("field '" + className + "." + field.getName() + "' missing annotation " + MappedField.class.getName() + ": " + className); - - // quick hack - long byteOffset = meta == null ? advancingOffset : meta.byteOffset(); - long byteLength; - if ( field.getType() == long.class || field.getType() == double.class ) - byteLength = 8; - else if ( field.getType() == int.class || field.getType() == float.class ) - byteLength = 4; - else if ( field.getType() == char.class || field.getType() == short.class ) - byteLength = 2; - else if ( field.getType() == byte.class ) - byteLength = 1; - else if ( field.getType() == ByteBuffer.class ) { - byteLength = meta.byteLength(); - if ( byteLength < 0 ) - throw new IllegalStateException("invalid byte length for mapped ByteBuffer field: " + className + "." + field.getName() + " [length=" + byteLength + "]"); - } else - throw new IllegalStateException(field.getType().getName()); - - if ( field.getType() != ByteBuffer.class ) - if ( (advancingOffset % byteLength) != 0 ) - throw new IllegalStateException("misaligned mapped type: " + className + "." + field.getName()); - - if ( PRINT_ACTIVITY ) - LWJGLUtil.log(MappedObjectTransformer.class.getSimpleName() + ": " + className + "." + field.getName() + " [type=" + field.getType().getSimpleName() + ", offset=" + byteOffset + "]"); - - mappedType.fieldToOffset.put(field.getName(), byteOffset); - mappedType.fieldToLength.put(field.getName(), byteLength); - - advancingOffset += byteLength; - } - - if ( className_to_subtype.put(className, mappedType) != null ) { - throw new InternalError("duplicate mapped type: " + className); - } + if ( className_to_subtype.put(mappedType.className, mappedType) != null ) + throw new InternalError("duplicate mapped type: " + mappedType.className); } - static boolean is_currently_computing_frames = false; - static final String view_constructor_method = "_construct_view_"; + private static int registerField(final MappedType mapped, final String className, final MappedSubtypeInfo mappedType, int advancingOffset, final Field field) { + if ( Modifier.isStatic(field.getModifiers()) ) // static fields are never mapped + return 0; - static byte[] transformFieldAccess(final String className, byte[] bytecode) { - int flags = ClassWriter.COMPUTE_FRAMES; + // we only support primitives and ByteBuffers + if ( !field.getType().isPrimitive() && field.getType() != ByteBuffer.class ) + throw new InternalError("field '" + className + "." + field.getName() + "' not supported: " + field.getType()); - ClassWriter writer = new ClassWriter(flags) { - // HACK: prevent user-code static-initialization-blocks to be executed + MappedField meta = field.getAnnotation(MappedField.class); + if ( meta == null && !mapped.autoGenerateOffsets() ) + throw new InternalError("field '" + className + "." + field.getName() + "' missing annotation " + MappedField.class.getName() + ": " + className); + + // quick hack + long byteOffset = meta == null ? advancingOffset : meta.byteOffset(); + long byteLength; + if ( field.getType() == long.class || field.getType() == double.class ) + byteLength = 8; + else if ( field.getType() == int.class || field.getType() == float.class ) + byteLength = 4; + else if ( field.getType() == char.class || field.getType() == short.class ) + byteLength = 2; + else if ( field.getType() == byte.class ) + byteLength = 1; + else if ( field.getType() == ByteBuffer.class ) { + byteLength = meta.byteLength(); + if ( byteLength < 0 ) + throw new IllegalStateException("invalid byte length for mapped ByteBuffer field: " + className + "." + field.getName() + " [length=" + byteLength + "]"); + } else + throw new InternalError(field.getType().getName()); + + if ( field.getType() != ByteBuffer.class && (advancingOffset % byteLength) != 0 ) + throw new IllegalStateException("misaligned mapped type: " + className + "." + field.getName()); + + if ( PRINT_ACTIVITY ) + LWJGLUtil.log(MappedObjectTransformer.class.getSimpleName() + ": " + className + "." + field.getName() + " [type=" + field.getType().getSimpleName() + ", offset=" + byteOffset + "]"); + + mappedType.fieldToOffset.put(field.getName(), byteOffset); + mappedType.fieldToLength.put(field.getName(), byteLength); + mappedType.fieldToType.put(field.getName(), Type.getType(field.getType())); + + return (int)byteLength; + } + + static byte[] transformMappedAPI(final String className, byte[] bytecode) { + final ClassWriter cw = new ClassWriter(COMPUTE_FRAMES) { @Override protected String getCommonSuperClass(String a, String b) { - if ( is_currently_computing_frames ) - if ( !a.startsWith("java/") || !b.startsWith("java/") ) - return "java/lang/Object"; + // HACK: prevent user-code static-initialization-blocks to be executed + if ( is_currently_computing_frames && !a.startsWith("java/") || !b.startsWith("java/") ) + return "java/lang/Object"; + return super.getCommonSuperClass(a, b); } + }; - ClassAdapter adapter = new ClassAdapter(writer) { - @Override - public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { - { - MappedSubtypeInfo mappedSubtype = className_to_subtype.get(className); + ClassVisitor cv = getTransformationAdapter(className, cw); + if ( className_to_subtype.containsKey(className) ) // Do a first pass to generate address getters + cv = getMethodGenAdapter(className, cv); - if ( mappedSubtype != null && !mappedSubtype.className.equals(MAPPED_OBJECT_JVM) ) { - if ( "".equals(name) ) { - if ( !"()V".equals(desc) ) - throw new IllegalStateException(className + " can only have a default constructor, found: " + desc); - - MethodVisitor mv = super.visitMethod(access, name, desc, signature, exceptions); - mv.visitCode(); - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn(INVOKESPECIAL, MAPPED_OBJECT_JVM, "", "()V"); - mv.visitInsn(RETURN); - mv.visitMaxs(1, 1); - mv.visitEnd(); - - // put the method body in another method - name = view_constructor_method; - } - } - } - - return new MappedInstanceMethodAdapter(className, name, desc, super.visitMethod(access, name, desc, signature, exceptions)); - } - - @Override - public FieldVisitor visitField(int access, String fieldName, String typeName, String dunno, Object value) { - // remove redirected fields - MappedSubtypeInfo mappedSubtype = className_to_subtype.get(className); - - if ( mappedSubtype != null && mappedSubtype.fieldToOffset.containsKey(fieldName) ) { - if ( PRINT_ACTIVITY ) - LWJGLUtil.log(MappedObjectTransformer.class.getSimpleName() + ": discarding field: " + className + "." + fieldName + ":" + typeName); - return null; - } - - return super.visitField(access, fieldName, typeName, dunno, value); - } - }; - - new ClassReader(bytecode).accept(adapter, 0); - bytecode = writer.toByteArray(); + //cr.accept(cv, ClassReader.SKIP_DEBUG | ClassReader.SKIP_FRAMES); + new ClassReader(bytecode).accept(cv, ClassReader.SKIP_DEBUG | ClassReader.SKIP_FRAMES); + bytecode = cw.toByteArray(); if ( PRINT_BYTECODE ) printBytecode(bytecode); @@ -211,6 +213,897 @@ public class MappedObjectTransformer { return bytecode; } + private static ClassAdapter getMethodGenAdapter(final String className, final ClassVisitor cv) { + return new ClassAdapter(cv) { + + @Override + public void visitEnd() { + generateViewAddressGetter(); + generateLengthGetter(); + + final MappedSubtypeInfo mappedSubtype = className_to_subtype.get(className); + + for ( String fieldName : mappedSubtype.fieldToOffset.keySet() ) { + final Type type = mappedSubtype.fieldToType.get(fieldName); + + if ( type.getDescriptor().length() > 1 ) { // ByteBuffer, getter only + generateByteBufferGetter(mappedSubtype, fieldName, type); + } else { + generateFieldGetter(mappedSubtype, fieldName, type); + generateFieldSetter(mappedSubtype, fieldName, type); + } + } + + super.visitEnd(); + } + + private void generateViewAddressGetter() { + MethodVisitor mv = super.visitMethod(ACC_PUBLIC | ACC_STATIC, VIEWADDRESS_METHOD_NAME, "(L" + className + ";I)J", null, null); + mv.visitCode(); + mv.visitVarInsn(ALOAD, 0); + mv.visitFieldInsn(GETFIELD, MAPPED_OBJECT_JVM, "baseAddress", "J"); + mv.visitVarInsn(ILOAD, 1); + mv.visitFieldInsn(GETSTATIC, className, "SIZEOF", "I"); + mv.visitInsn(IMUL); + mv.visitInsn(I2L); + mv.visitInsn(LADD); + if ( MappedObject.CHECKS ) { + mv.visitVarInsn(LSTORE, 2); + mv.visitVarInsn(ALOAD, 0); + mv.visitVarInsn(LLOAD, 2); + mv.visitMethodInsn(INVOKESTATIC, MAPPED_HELPER_JVM, "checkAddress", "(L" + MAPPED_OBJECT_JVM + ";J)V"); + mv.visitVarInsn(LLOAD, 2); + } + mv.visitInsn(LRETURN); + if ( MappedObject.CHECKS ) + mv.visitMaxs(3, 4); + else + mv.visitMaxs(3, 2); + mv.visitEnd(); + } + + private void generateLengthGetter() { + MethodVisitor mv = super.visitMethod(ACC_PUBLIC | ACC_STATIC, LENGTH_METHOD_NAME, "(L" + className + ";)I", null, null); + mv.visitCode(); + mv.visitVarInsn(ALOAD, 0); + mv.visitMethodInsn(INVOKEVIRTUAL, className, "backingByteBuffer", "()L" + jvmClassName(ByteBuffer.class) + ";"); + mv.visitMethodInsn(INVOKEVIRTUAL, jvmClassName(ByteBuffer.class), "capacity", "()I"); + mv.visitFieldInsn(GETSTATIC, className, "SIZEOF", "I"); + mv.visitInsn(IDIV); + mv.visitInsn(IRETURN); + mv.visitMaxs(2, 1); + mv.visitEnd(); + } + + private void generateByteBufferGetter(final MappedSubtypeInfo mappedSubtype, final String fieldName, final Type type) { + MethodVisitor mv = super.visitMethod(ACC_PUBLIC | ACC_STATIC, getterName(fieldName), "(L" + className + ";I)" + type.getDescriptor(), null, null); + mv.visitCode(); + mv.visitVarInsn(ALOAD, 0); + mv.visitVarInsn(ILOAD, 1); + mv.visitMethodInsn(INVOKESTATIC, className, VIEWADDRESS_METHOD_NAME, "(L" + className + ";I)J"); + visitIntNode(mv, mappedSubtype.fieldToOffset.get(fieldName).intValue()); + mv.visitInsn(I2L); + mv.visitInsn(LADD); + visitIntNode(mv, mappedSubtype.fieldToLength.get(fieldName).intValue()); + mv.visitMethodInsn(INVOKESTATIC, MAPPED_HELPER_JVM, "newBuffer", "(JI)L" + jvmClassName(ByteBuffer.class) + ";"); + mv.visitInsn(ARETURN); + mv.visitMaxs(4, 2); + mv.visitEnd(); + } + + private void generateFieldGetter(final MappedSubtypeInfo mappedSubtype, final String fieldName, final Type type) { + MethodVisitor mv = super.visitMethod(ACC_PUBLIC | ACC_STATIC, getterName(fieldName), "(L" + className + ";I)" + type.getDescriptor(), null, null); + mv.visitCode(); + mv.visitVarInsn(ALOAD, 0); + mv.visitVarInsn(ILOAD, 1); + mv.visitMethodInsn(INVOKESTATIC, className, VIEWADDRESS_METHOD_NAME, "(L" + className + ";I)J"); + visitIntNode(mv, mappedSubtype.fieldToOffset.get(fieldName).intValue()); + mv.visitInsn(I2L); + mv.visitInsn(LADD); + mv.visitMethodInsn(INVOKESTATIC, MAPPED_HELPER_JVM, type.getDescriptor().toLowerCase() + "get", "(J)" + type.getDescriptor()); + mv.visitInsn(type.getOpcode(IRETURN)); + mv.visitMaxs(2, 2); + mv.visitEnd(); + } + + private void generateFieldSetter(final MappedSubtypeInfo mappedSubtype, final String fieldName, final Type type) { + MethodVisitor mv = super.visitMethod(ACC_PUBLIC | ACC_STATIC, setterName(fieldName), "(L" + className + ";I" + type.getDescriptor() + ")V", null, null); + mv.visitCode(); + int load = 0; + switch ( type.getSort() ) { + case Type.BOOLEAN: + case Type.CHAR: + case Type.BYTE: + case Type.SHORT: + case Type.INT: + load = ILOAD; + break; + case Type.FLOAT: + load = FLOAD; + break; + case Type.LONG: + load = LLOAD; + break; + case Type.DOUBLE: + load = DLOAD; + break; + } + mv.visitVarInsn(load, 2); + mv.visitVarInsn(ALOAD, 0); + mv.visitVarInsn(ILOAD, 1); + mv.visitMethodInsn(INVOKESTATIC, className, VIEWADDRESS_METHOD_NAME, "(L" + className + ";I)J"); + visitIntNode(mv, mappedSubtype.fieldToOffset.get(fieldName).intValue()); + mv.visitInsn(I2L); + mv.visitInsn(LADD); + mv.visitMethodInsn(INVOKESTATIC, MAPPED_HELPER_JVM, type.getDescriptor().toLowerCase() + "put", "(" + type.getDescriptor() + "J)V"); + mv.visitInsn(RETURN); + mv.visitMaxs(3, 3); + mv.visitEnd(); + } + + }; + } + + private static ClassAdapter getTransformationAdapter(final String className, final ClassWriter cw) { + return new ClassAdapter(cw) { + + @Override + public FieldVisitor visitField(final int access, final String name, final String desc, final String signature, final Object value) { + // remove redirected fields + final MappedSubtypeInfo mappedSubtype = className_to_subtype.get(className); + if ( mappedSubtype != null && mappedSubtype.fieldToOffset.containsKey(name) ) { + if ( PRINT_ACTIVITY ) + LWJGLUtil.log(MappedObjectTransformer.class.getSimpleName() + ": discarding field: " + className + "." + name + ":" + desc); + return null; + } + + return super.visitField(access, name, desc, signature, value); + } + + @Override + public MethodVisitor visitMethod(final int access, String name, final String desc, final String signature, final String[] exceptions) { + // Move MappedSubtype constructors to another method + if ( "".equals(name) ) { + final MappedSubtypeInfo mappedSubtype = className_to_subtype.get(className); + if ( mappedSubtype != null ) { + if ( !"()V".equals(desc) ) + throw new ClassFormatError(className + " can only have a default constructor, found: " + desc); + + final MethodVisitor mv = super.visitMethod(access, name, desc, signature, exceptions); + mv.visitVarInsn(ALOAD, 0); + mv.visitMethodInsn(INVOKESPECIAL, MAPPED_OBJECT_JVM, "", "()V"); + mv.visitInsn(RETURN); + mv.visitMaxs(0, 0); + + // put the method body in another method + name = VIEW_CONSTRUCTOR_NAME; + } + } + + final MethodVisitor mv = super.visitMethod(access, name, desc, signature, exceptions); + return new MethodNode(access, name, desc, signature, exceptions) { + + /** When true, the method has touched a mapped object and needs to be transformed. We track this + * so we can skip the expensive frame analysis and tree API usage. */ + boolean needsTransformation; + + @Override + public void visitMaxs(int a, int b) { + try { + is_currently_computing_frames = true; + super.visitMaxs(a, b); + } finally { + is_currently_computing_frames = false; + } + } + + @Override + public void visitFieldInsn(final int opcode, final String owner, final String name, final String desc) { + if ( className_to_subtype.containsKey(owner) || owner.startsWith(MAPPEDSET_PREFIX) ) + needsTransformation = true; + + super.visitFieldInsn(opcode, owner, name, desc); + } + + @Override + public void visitMethodInsn(final int opcode, final String owner, final String name, final String desc) { + if ( className_to_subtype.containsKey(owner) ) + needsTransformation = true; + + super.visitMethodInsn(opcode, owner, name, desc); + } + + @Override + public void visitEnd() { + if ( needsTransformation ) // Early-out for methods that do not touch a mapped object. + try { + transformMethod(analyse()); + } catch (Exception e) { + throw new RuntimeException(e); + } + + // Pass the instruction stream to the adapter's MethodVisitor + accept(mv); + } + + private Frame[] analyse() throws AnalyzerException { + final Analyzer a = new Analyzer(new SimpleVerifier()); + a.analyze(className, this); + return a.getFrames(); + } + + private void transformMethod(final Frame[] frames) { + //System.err.println("\nTRANSFORMING: " + className + " - " + name + desc); + + final InsnList instructions = this.instructions; + + final Map arrayVars = new HashMap(); + + /* + We need this map because we insert/remove instructions from the stream and we need a way + to match each original instruction with the corresponding frame. + TODO: Can we keep track of everything more efficiently without a map? + */ + final Map> frameMap = new HashMap>(); + for ( int i = 0; i < frames.length; i++ ) + frameMap.put(instructions.get(i), frames[i]); + + for ( int i = 0; i < instructions.size(); i++ ) { // f is a separate cursor for frames + final AbstractInsnNode instruction = instructions.get(i); + + //System.out.println("MAIN LOOP #" + i + " - " + getOpcodeName(instruction)); + + switch ( instruction.getType() ) { + case AbstractInsnNode.VAR_INSN: + if ( instruction.getOpcode() == ALOAD ) { + VarInsnNode varInsn = (VarInsnNode)instruction; + final MappedSubtypeInfo mappedSubtype = arrayVars.get(varInsn.var); + if ( mappedSubtype != null ) + i = transformArrayAccess(instructions, i, frameMap, varInsn, mappedSubtype, varInsn.var); + } + break; + case AbstractInsnNode.FIELD_INSN: + FieldInsnNode fieldInsn = (FieldInsnNode)instruction; + + final InsnList list = transformFieldAccess(fieldInsn); + if ( list != null ) + i = replace(instructions, i, instruction, list); + + break; + case AbstractInsnNode.METHOD_INSN: + MethodInsnNode methodInsn = (MethodInsnNode)instruction; + final MappedSubtypeInfo mappedType = className_to_subtype.get(methodInsn.owner); + if ( mappedType != null ) + i = transformMethodCall(instructions, i, frameMap, methodInsn, mappedType, arrayVars); + break; + } + } + } + }; + } + }; + } + + static int transformMethodCall(final InsnList instructions, int i, final Map> frameMap, final MethodInsnNode methodInsn, final MappedSubtypeInfo mappedType, final Map arrayVars) { + switch ( methodInsn.getOpcode() ) { + case INVOKEVIRTUAL: + if ( "asArray".equals(methodInsn.name) && methodInsn.desc.equals("()[L" + MAPPED_OBJECT_JVM + ";") ) { + // Go forward and store the local variable index. + // We only allow this pattern: INVOKEVIRTUAL -> CHECKCAST -> ASTORE. + // We remove the first two and store the target MappedSubtype in the ASTORE variable + AbstractInsnNode nextInstruction; + checkInsnAfterIsArray(nextInstruction = methodInsn.getNext(), CHECKCAST); + checkInsnAfterIsArray(nextInstruction = nextInstruction.getNext(), ASTORE); + + final Frame frame = frameMap.get(nextInstruction); + final String targetType = frame.getStack(frame.getStackSize() - 1).getType().getElementType().getInternalName(); + if ( !methodInsn.owner.equals(targetType) ) { + /* + This may happen with the current API, like so: + MappedA foo = MappedA.malloc(...); + MappedB[] cursor = foo.asArray(); + We have to parameterize MappedObject to avoid this. + */ + throw new ClassCastException("Source: " + methodInsn.owner + " - Target: " + targetType); + } + + final VarInsnNode varInstruction = (VarInsnNode)nextInstruction; + + arrayVars.put(varInstruction.var, mappedType); + + instructions.remove(methodInsn.getNext()); // Remove CHECKCAST + instructions.remove(methodInsn); // Remove INVOKEVIRTUAL + } + + if ( "dup".equals(methodInsn.name) && methodInsn.desc.equals("()L" + MAPPED_OBJECT_JVM + ";") ) { + i = replace(instructions, i, methodInsn, generateDupInstructions(methodInsn)); + break; + } + + if ( "slice".equals(methodInsn.name) && methodInsn.desc.equals("()L" + MAPPED_OBJECT_JVM + ";") ) { + i = replace(instructions, i, methodInsn, generateSliceInstructions(methodInsn)); + break; + } + + if ( "runViewConstructor".equals(methodInsn.name) && "()V".equals(methodInsn.desc) ) { + i = replace(instructions, i, methodInsn, generateRunViewConstructorInstructions(methodInsn)); + break; + } + + if ( "copyTo".equals(methodInsn.name) && methodInsn.desc.equals("(L" + MAPPED_OBJECT_JVM + ";)V") ) { + i = replace(instructions, i, methodInsn, generateCopyToInstructions(mappedType)); + break; + } + + if ( "copyRange".equals(methodInsn.name) && methodInsn.desc.equals("(L" + MAPPED_OBJECT_JVM + ";I)V") ) { + i = replace(instructions, i, methodInsn, generateCopyRangeInstructions(mappedType)); + break; + } + + if ( "next".equals(methodInsn.name) && "()V".equals(methodInsn.desc) ) { + i = replace(instructions, i, methodInsn, generateNextInstructions(mappedType)); + break; + } + break; + case INVOKESPECIAL: + // super() in VIEW_CONSTRUCTOR_NAME, remove + if ( methodInsn.owner.equals(MAPPED_OBJECT_JVM) && "".equals(methodInsn.name) && "()V".equals(methodInsn.desc) ) { + instructions.remove(methodInsn.getPrevious()); // ALOAD + instructions.remove(methodInsn); // INVOKESPECIAL + + i -= 2; + } + break; + case INVOKESTATIC: + boolean isMapDirectMethod = "map".equals(methodInsn.name) && methodInsn.desc.equals("(JI)L" + MAPPED_OBJECT_JVM + ";"); + boolean isMapBufferMethod = "map".equals(methodInsn.name) && methodInsn.desc.equals("(Ljava/nio/ByteBuffer;)L" + MAPPED_OBJECT_JVM + ";"); + boolean isMallocMethod = "malloc".equals(methodInsn.name) && methodInsn.desc.equals("(I)L" + MAPPED_OBJECT_JVM + ";"); + + if ( (isMapDirectMethod || isMapBufferMethod) || isMallocMethod ) + i = replace(instructions, i, methodInsn, generateMapInstructions(mappedType, methodInsn.owner, isMapDirectMethod, isMallocMethod)); + break; + } + + return i; + } + + private static InsnList generateNextInstructions(final MappedSubtypeInfo mappedType) { + final InsnList list = new InsnList(); + + // stack: this + list.add(getIntNode(mappedType.sizeof)); + // stack: sizeof, this + list.add(new MethodInsnNode(INVOKESTATIC, MAPPED_HELPER_JVM, "put_view_next", "(L" + MAPPED_OBJECT_JVM + ";I)V")); + // stack: - + + return list; + } + + private static InsnList generateCopyRangeInstructions(final MappedSubtypeInfo mappedType) { + final InsnList list = new InsnList(); + + // stack: instances, target, this + list.add(getIntNode(mappedType.sizeof)); + // stack: sizeof, instances, target, this + list.add(new InsnNode(IMUL)); + // stack: bytes, target, this + list.add(new MethodInsnNode(INVOKESTATIC, MAPPED_HELPER_JVM, "copy", "(L" + MAPPED_OBJECT_JVM + ";L" + MAPPED_OBJECT_JVM + ";I)V")); + // stack: - + + return list; + } + + private static InsnList generateCopyToInstructions(final MappedSubtypeInfo mappedType) { + final InsnList list = new InsnList(); + + // stack: target, this + list.add(getIntNode(mappedType.sizeof)); + // stack: sizeof, target, this + list.add(new MethodInsnNode(INVOKESTATIC, MAPPED_HELPER_JVM, "copy", "(L" + MAPPED_OBJECT_JVM + ";L" + MAPPED_OBJECT_JVM + ";I)V")); + // stack: - + + return list; + } + + private static InsnList generateRunViewConstructorInstructions(final MethodInsnNode methodInsn) { + final InsnList list = new InsnList(); + + // stack: this + list.add(new InsnNode(DUP)); + // stack: this, this + list.add(new MethodInsnNode(INVOKEVIRTUAL, methodInsn.owner, VIEW_CONSTRUCTOR_NAME, "()V")); + // stack: this + + return list; + } + + private static InsnList generateSliceInstructions(final MethodInsnNode methodInsn) { + final InsnList list = new InsnList(); + + // stack: this + list.add(new TypeInsnNode(NEW, methodInsn.owner)); + // stack: new, this + list.add(new InsnNode(DUP)); + // stack: new, new, this + list.add(new MethodInsnNode(INVOKESPECIAL, methodInsn.owner, "", "()V")); + // stack: new, this + list.add(new MethodInsnNode(INVOKESTATIC, MAPPED_HELPER_JVM, "slice", "(L" + MAPPED_OBJECT_JVM + ";L" + MAPPED_OBJECT_JVM + ";)L" + MAPPED_OBJECT_JVM + ";")); + // stack: new + + return list; + } + + private static InsnList generateDupInstructions(final MethodInsnNode methodInsn) { + final InsnList list = new InsnList(); + + // stack: this + list.add(new TypeInsnNode(NEW, methodInsn.owner)); + // stack: new, this + list.add(new InsnNode(DUP)); + // stack: new, new, this + list.add(new MethodInsnNode(INVOKESPECIAL, methodInsn.owner, "", "()V")); + // stack: new, this + list.add(new MethodInsnNode(INVOKESTATIC, MAPPED_HELPER_JVM, "dup", "(L" + MAPPED_OBJECT_JVM + ";L" + MAPPED_OBJECT_JVM + ";)L" + MAPPED_OBJECT_JVM + ";")); + // stack: new + + return list; + } + + private static InsnList generateMapInstructions(final MappedSubtypeInfo mappedType, final String className, final boolean mapDirectMethod, final boolean mallocMethod) { + final InsnList trg = new InsnList(); + + if ( mallocMethod ) { + // stack: count + trg.add(getIntNode(mappedType.sizeof)); + // stack: sizeof, count + trg.add(new InsnNode(IMUL)); + // stack: bytes + trg.add(new MethodInsnNode(INVOKESTATIC, jvmClassName(ByteBuffer.class), "allocateDirect", "(I)L" + jvmClassName(ByteBuffer.class) + ";")); + // stack: buffer + } else if ( mapDirectMethod ) { + // stack: capacity, address + trg.add(new MethodInsnNode(INVOKESTATIC, MAPPED_HELPER_JVM, "newBuffer", "(JI)L" + jvmClassName(ByteBuffer.class) + ";")); + // stack: buffer + } + + // stack: buffer + trg.add(new TypeInsnNode(NEW, className)); + // stack: new, buffer + trg.add(new InsnNode(DUP)); + // stack: new, new, buffer + trg.add(new MethodInsnNode(INVOKESPECIAL, className, "", "()V")); + // stack: new, buffer + trg.add(new InsnNode(DUP_X1)); + // stack: new, buffer, new + trg.add(new InsnNode(SWAP)); + // stack: buffer, new, new + trg.add(getIntNode(mappedType.align)); + // stack: int, buffer, new, new + trg.add(getIntNode(mappedType.sizeof)); + // stack: int, int, buffer, new, new + trg.add(new MethodInsnNode(INVOKESTATIC, MAPPED_HELPER_JVM, "setup", "(L" + MAPPED_OBJECT_JVM + ";Ljava/nio/ByteBuffer;II)V")); + // stack: new + + return trg; + } + + static InsnList transformFieldAccess(final FieldInsnNode fieldInsn) { + final MappedSubtypeInfo mappedSubtype; + mappedSubtype = className_to_subtype.get(fieldInsn.owner); + if ( mappedSubtype == null ) { // early out + // MappedSet.view + outer: + if ( "view".equals(fieldInsn.name) && fieldInsn.owner.startsWith(MAPPEDSET_PREFIX) ) + return generateSetViewInstructions(fieldInsn); + + return null; // early out + } + + if ( "SIZEOF".equals(fieldInsn.name) ) + return generateSIZEOFInstructions(fieldInsn, mappedSubtype); + + if ( "view".equals(fieldInsn.name) ) + return generateViewInstructions(fieldInsn, mappedSubtype); + + if ( "align".equals(fieldInsn.name) || "sizeof".equals(fieldInsn.name) ) + return generateAlignSizeofInstructions(fieldInsn, mappedSubtype); + + if ( "baseAddress".equals(fieldInsn.name) || "viewAddress".equals(fieldInsn.name) ) { + return generateAddressInstructions(fieldInsn); + } + + final Long fieldOffset = mappedSubtype.fieldToOffset.get(fieldInsn.name); + if ( fieldOffset == null ) // early out + return null; + + // now we're going to transform ByteBuffer-typed field access + if ( fieldInsn.desc.equals("L" + jvmClassName(ByteBuffer.class) + ";") ) + return generateByteBufferInstructions(fieldInsn, mappedSubtype, fieldOffset); + + // we're now going to transform the field access + return generateFieldInstructions(fieldInsn, fieldOffset); + } + + private static InsnList generateSetViewInstructions(final FieldInsnNode fieldInsn) { + if ( fieldInsn.getOpcode() == GETFIELD ) + throwAccessErrorOnReadOnlyField(fieldInsn.owner, fieldInsn.name); + if ( fieldInsn.getOpcode() != PUTFIELD ) + throw new InternalError(); + + final InsnList list = new InsnList(); + + // stack: index, this + if ( MAPPED_SET2_JVM.equals(fieldInsn.owner) ) + list.add(new MethodInsnNode(INVOKESTATIC, MAPPED_HELPER_JVM, "put_views", "(L" + MAPPED_SET2_JVM + ";I)V")); + else if ( MAPPED_SET3_JVM.equals(fieldInsn.owner) ) + list.add(new MethodInsnNode(INVOKESTATIC, MAPPED_HELPER_JVM, "put_views", "(L" + MAPPED_SET3_JVM + ";I)V")); + else if ( MAPPED_SET4_JVM.equals(fieldInsn.owner) ) + list.add(new MethodInsnNode(INVOKESTATIC, MAPPED_HELPER_JVM, "put_views", "(L" + MAPPED_SET4_JVM + ";I)V")); + else + throw new InternalError(); + // stack: - + + return list; + } + + private static InsnList generateSIZEOFInstructions(final FieldInsnNode fieldInsn, final MappedSubtypeInfo mappedSubtype) { + if ( !"I".equals(fieldInsn.desc) ) + throw new InternalError(); + + final InsnList list = new InsnList(); + + if ( fieldInsn.getOpcode() == GETSTATIC ) { + list.add(getIntNode(mappedSubtype.sizeof)); + return list; + } + + if ( fieldInsn.getOpcode() == PUTSTATIC ) + throwAccessErrorOnReadOnlyField(fieldInsn.owner, fieldInsn.name); + + throw new InternalError(); + } + + private static InsnList generateViewInstructions(final FieldInsnNode fieldInsn, final MappedSubtypeInfo mappedSubtype) { + if ( !"I".equals(fieldInsn.desc) ) + throw new InternalError(); + + final InsnList list = new InsnList(); + + if ( fieldInsn.getOpcode() == GETFIELD ) { + if ( mappedSubtype.sizeof_shift != 0 ) { + // stack: instance + list.add(getIntNode(mappedSubtype.sizeof_shift)); + // stack: sizeof, instance + list.add(new MethodInsnNode(INVOKESTATIC, MAPPED_HELPER_JVM, "get_view_shift", "(L" + MAPPED_OBJECT_JVM + ";I)I")); + // stack: view + } else { + // stack: instance + list.add(getIntNode(mappedSubtype.sizeof)); + // stack: sizeof, instance + list.add(new MethodInsnNode(INVOKESTATIC, MAPPED_HELPER_JVM, "get_view", "(L" + MAPPED_OBJECT_JVM + ";I)I")); + // stack: view + } + return list; + } + + if ( fieldInsn.getOpcode() == PUTFIELD ) { + if ( mappedSubtype.sizeof_shift != 0 ) { + // stack: view, instance + list.add(getIntNode(mappedSubtype.sizeof_shift)); + // stack: sizeof, view, instance + list.add(new MethodInsnNode(INVOKESTATIC, MAPPED_HELPER_JVM, "put_view_shift", "(L" + MAPPED_OBJECT_JVM + ";II)V")); + // stack: - + } else { + // stack: view, instance + list.add(getIntNode(mappedSubtype.sizeof)); + // stack: sizeof, view, instance + list.add(new MethodInsnNode(INVOKESTATIC, MAPPED_HELPER_JVM, "put_view", "(L" + MAPPED_OBJECT_JVM + ";II)V")); + // stack: - + } + return list; + } + + throw new InternalError(); + } + + private static InsnList generateAlignSizeofInstructions(final FieldInsnNode fieldInsn, final MappedSubtypeInfo mappedSubtype) { + if ( !"I".equals(fieldInsn.desc) ) + throw new InternalError(); + + if ( fieldInsn.getOpcode() == GETFIELD ) { + final InsnList list = new InsnList(); + + // stack: instance + list.add(new InsnNode(POP)); + // stack: - + if ( "sizeof".equals(fieldInsn.name) ) + list.add(getIntNode(mappedSubtype.sizeof)); + else if ( "align".equals(fieldInsn.name) ) + list.add(getIntNode(mappedSubtype.align)); + // stack: int + return list; + } + + if ( fieldInsn.getOpcode() == PUTFIELD ) + throwAccessErrorOnReadOnlyField(fieldInsn.owner, fieldInsn.name); + throw new InternalError(); + } + + private static InsnList generateAddressInstructions(final FieldInsnNode fieldInsn) { + if ( !"J".equals(fieldInsn.desc) ) + throw new IllegalStateException(); + + if ( fieldInsn.getOpcode() == GETFIELD ) // do not change a thing + return null; + + if ( fieldInsn.getOpcode() == PUTFIELD ) + throwAccessErrorOnReadOnlyField(fieldInsn.owner, fieldInsn.name); + + throw new InternalError(); + } + + private static InsnList generateByteBufferInstructions(final FieldInsnNode fieldInsn, final MappedSubtypeInfo mappedSubtype, final Long fieldOffset) { + if ( fieldInsn.getOpcode() == PUTFIELD ) + throwAccessErrorOnReadOnlyField(fieldInsn.owner, fieldInsn.name); + + if ( fieldInsn.getOpcode() == GETFIELD ) { + final Long fieldLength = mappedSubtype.fieldToLength.get(fieldInsn.name); + + final InsnList list = new InsnList(); + + // stack: ref + list.add(new FieldInsnNode(GETFIELD, mappedSubtype.className, "viewAddress", "J")); + // stack: long + list.add(new LdcInsnNode(fieldOffset)); + // stack: long, long + list.add(new InsnNode(LADD)); + // stack: long + list.add(new LdcInsnNode(fieldLength)); + // stack: long, long + list.add(new InsnNode(L2I)); + // stack: int, long + list.add(new MethodInsnNode(INVOKESTATIC, MAPPED_HELPER_JVM, "newBuffer", "(JI)L" + jvmClassName(ByteBuffer.class) + ";")); + // stack: buffer + + return list; + } + + throw new InternalError(); + } + + private static InsnList generateFieldInstructions(final FieldInsnNode fieldInsn, final Long fieldOffset) { + final InsnList list = new InsnList(); + + if ( fieldInsn.getOpcode() == PUTFIELD ) { + // stack: value, ref + list.add(getIntNode(fieldOffset.intValue())); + // stack: fieldOffset, value, ref + list.add(new MethodInsnNode(INVOKESTATIC, MAPPED_HELPER_JVM, fieldInsn.desc.toLowerCase() + "put", "(L" + MAPPED_OBJECT_JVM + ";" + fieldInsn.desc + "I)V")); + // stack - + return list; + } + + if ( fieldInsn.getOpcode() == GETFIELD ) { + // stack: ref + list.add(getIntNode(fieldOffset.intValue())); + // stack: fieldOffset, ref + list.add(new MethodInsnNode(INVOKESTATIC, MAPPED_HELPER_JVM, fieldInsn.desc.toLowerCase() + "get", "(L" + MAPPED_OBJECT_JVM + ";I)" + fieldInsn.desc)); + // stack: - + return list; + } + + throw new InternalError(); + } + + static int transformArrayAccess(final InsnList instructions, int i, final Map> frameMap, final VarInsnNode loadInsn, final MappedSubtypeInfo mappedSubtype, final int var) { + // We need to go forward in time to find how we use the array var + final int loadStackSize = frameMap.get(loadInsn).getStackSize() + 1; + + AbstractInsnNode nextInsn = loadInsn; + + while ( true ) { + nextInsn = nextInsn.getNext(); + if ( nextInsn == null ) + throw new InternalError(); + + Frame frame = frameMap.get(nextInsn); + if ( frame == null ) + continue; + + int stackSize = frame.getStackSize(); + + if ( stackSize == loadStackSize + 1 && nextInsn.getOpcode() == AALOAD ) { + final AbstractInsnNode aaLoadInsn = nextInsn; + + while ( true ) { + nextInsn = nextInsn.getNext(); + if ( nextInsn == null ) + break; + + frame = frameMap.get(nextInsn); + if ( frame == null ) + continue; + stackSize = frame.getStackSize(); + + if ( stackSize == loadStackSize + 1 && nextInsn.getOpcode() == PUTFIELD ) { + final FieldInsnNode fieldInsn = (FieldInsnNode)nextInsn; + + // stack: value, view, ref + instructions.insert(nextInsn, new MethodInsnNode(INVOKESTATIC, mappedSubtype.className, setterName(fieldInsn.name), "(L" + mappedSubtype.className + ";I" + fieldInsn.desc + ")V")); + // stack: - + instructions.remove(nextInsn); + + break; + } else if ( stackSize == loadStackSize && nextInsn.getOpcode() == GETFIELD ) { + final FieldInsnNode fieldInsn = (FieldInsnNode)nextInsn; + + // stack: view, ref + instructions.insert(nextInsn, new MethodInsnNode(INVOKESTATIC, mappedSubtype.className, getterName(fieldInsn.name), "(L" + mappedSubtype.className + ";I)" + fieldInsn.desc)); + // stack: value + instructions.remove(nextInsn); + + break; + } else if ( stackSize == loadStackSize && nextInsn.getOpcode() == DUP && nextInsn.getNext().getOpcode() == GETFIELD ) { + // May happen with operator+assignment (e.g. cursor[i].value += 10) + final FieldInsnNode fieldInsn = (FieldInsnNode)nextInsn.getNext(); + + final MethodInsnNode getter = new MethodInsnNode(INVOKESTATIC, mappedSubtype.className, getterName(fieldInsn.name), "(L" + mappedSubtype.className + ";I)" + fieldInsn.desc); + + // stack: view, ref + instructions.insert(nextInsn, new InsnNode(DUP2)); + // stack: view, ref, view, ref + instructions.insert(nextInsn.getNext(), getter); + // stack: value, view, ref + + instructions.remove(nextInsn); + instructions.remove(fieldInsn); + + nextInsn = getter; + continue; + } else if ( stackSize < loadStackSize ) + throw new ClassFormatError("Invalid .asArray() usage detected: " + getOpcodeName(nextInsn)); + } + + instructions.remove(aaLoadInsn); + + return i; + } else if ( stackSize == loadStackSize && nextInsn.getOpcode() == ARRAYLENGTH ) { + if ( LWJGLUtil.DEBUG && loadInsn.getNext() != nextInsn ) + throw new InternalError(); + + instructions.remove(nextInsn); + loadInsn.var = var; + instructions.insert(loadInsn, new MethodInsnNode(INVOKESTATIC, mappedSubtype.className, LENGTH_METHOD_NAME, "(L" + mappedSubtype.className + ";)I")); + + return i + 1; + } else if ( stackSize < loadStackSize ) // Consumed by something other than AALOAD or ARRAYLENGTH + throw new ClassFormatError("Invalid " + mappedSubtype.className + " view array usage detected: " + getOpcodeName(nextInsn)); + } + } + + private static class MappedSubtypeInfo { + + public final String className; + + public int sizeof; + public int sizeof_shift; + public int align; + + public Map fieldToOffset; + public Map fieldToLength; + public Map fieldToType; + + MappedSubtypeInfo(String className, int sizeof, int align) { + this.className = className; + + this.sizeof = sizeof; + if ( ((sizeof - 1) & sizeof) == 0 ) + this.sizeof_shift = getPoT(sizeof); + this.align = align; + + this.fieldToOffset = new HashMap(); + this.fieldToLength = new HashMap(); + this.fieldToType = new HashMap(); + } + + private static int getPoT(int value) { + int pot = -1; + while ( value > 0 ) { + pot++; + value >>= 1; + } + return pot; + } + + } + + // ------------------------------------------------------- + // -------------------[ MACROS & UTILS ]------------------ + // ------------------------------------------------------- + + private static void getClassEnums(final Class clazz, final Map map, final String... prefixFilters) { + try { + OUTER: + for ( Field field : clazz.getFields() ) { + if ( !Modifier.isStatic(field.getModifiers()) || field.getType() != int.class ) + continue; + + for ( String filter : prefixFilters ) { + if ( field.getName().startsWith(filter) ) + continue OUTER; + } + + if ( map.put((Integer)field.get(null), field.getName()) != null ) + throw new IllegalStateException(); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + static String getOpcodeName(final AbstractInsnNode insn) { + final String op = OPCODE_TO_NAME.get(insn.getOpcode()); + return INSNTYPE_TO_NAME.get(insn.getType()) + ": " + insn.getOpcode() + (op == null ? "" : " [" + OPCODE_TO_NAME.get(insn.getOpcode()) + "]"); + } + + static String jvmClassName(Class type) { + return type.getName().replace('.', '/'); + } + + static String getterName(final String fieldName) { + return "get$" + Character.toUpperCase(fieldName.charAt(0)) + fieldName.substring(1) + "$LWJGL"; + } + + static String setterName(final String fieldName) { + return "set$" + Character.toUpperCase(fieldName.charAt(0)) + fieldName.substring(1) + "$LWJGL"; + } + + private static void checkInsnAfterIsArray(final AbstractInsnNode instruction, final int opcode) { + if ( instruction == null ) + throw new ClassFormatError("Unexpected end of instructions after .asArray() method."); + + if ( instruction.getOpcode() != opcode ) + throw new ClassFormatError("The result of .asArray() must be stored to a local variable. Found: " + getOpcodeName(instruction)); + } + + static AbstractInsnNode getIntNode(final int value) { + if ( value <= 5 && -1 <= value ) + return new InsnNode(ICONST_M1 + value + 1); + + if ( value >= Byte.MIN_VALUE && value <= Byte.MAX_VALUE ) + return new IntInsnNode(BIPUSH, value); + + if ( value >= Short.MIN_VALUE && value <= Short.MAX_VALUE ) + return new IntInsnNode(SIPUSH, value); + + return new LdcInsnNode(value); + } + + static void visitIntNode(final MethodVisitor mv, final int value) { + if ( value <= 5 && -1 <= value ) + mv.visitInsn(ICONST_M1 + value + 1); + else if ( value >= Byte.MIN_VALUE && value <= Byte.MAX_VALUE ) + mv.visitIntInsn(BIPUSH, value); + else if ( value >= Short.MIN_VALUE && value <= Short.MAX_VALUE ) + mv.visitIntInsn(SIPUSH, value); + else + mv.visitLdcInsn(value); + } + + /** Replace an instruction with a list of instructions. */ + static int replace(final InsnList instructions, final int i, final AbstractInsnNode location, final InsnList list) { + final int size = list.size(); + + instructions.insert(location, list); + instructions.remove(location); + + return i + (size - 1); + } + + private static void throwAccessErrorOnReadOnlyField(String className, String fieldName) { + throw new IllegalAccessError("The " + className + "." + fieldName + " field is final."); + } + private static void printBytecode(byte[] bytecode) { StringWriter sw = new StringWriter(); ClassVisitor tracer = new TraceClassVisitor(new ClassWriter(0), new PrintWriter(sw)); @@ -220,444 +1113,4 @@ public class MappedObjectTransformer { LWJGLUtil.log(dump); } - private static class MappedInstanceMethodAdapter extends MethodAdapter { - - private final String className; - private final String methodName; - private final String descr; - - MappedInstanceMethodAdapter(String className, String methodName, String descr, MethodVisitor backing) { - super(backing); - this.className = className; - this.methodName = methodName; - this.descr = descr; - } - - @Override - public void visitTypeInsn(int opcode, String typeName) { - if ( opcode == NEW && className_to_subtype.containsKey(typeName) ) { - throw new IllegalAccessError("must not manually create instances of " + typeName + " in method " + this.className + "." + this.methodName + this.descr); - } - - super.visitTypeInsn(opcode, typeName); - } - - @Override - public void visitMaxs(int a, int b) { - try { - is_currently_computing_frames = true; - - super.visitMaxs(a, b); - } finally { - is_currently_computing_frames = false; - } - } - - @Override - public void visitMethodInsn(int opcode, String className, String methodName, String signature) { - if ( opcode == INVOKESPECIAL && className.equals(MAPPED_OBJECT_JVM) && "".equals(methodName) && "()V".equals(signature) ) { - // stack: instance - visitInsn(POP); - // stack: - - return; - } - - MappedSubtypeInfo mappedType = className_to_subtype.get(className); - if ( mappedType != null && visitMappedMethod(opcode, className, methodName, signature, mappedType) ) - return; - - super.visitMethodInsn(opcode, className, methodName, signature); - } - - private boolean visitMappedMethod(final int opcode, final String className, final String methodName, final String signature, final MappedSubtypeInfo mappedType) { - if ( opcode == INVOKESTATIC ) { - boolean isMapDirectMethod = "map".equals(methodName) && signature.equals("(JI)L" + MAPPED_OBJECT_JVM + ";"); - boolean isMapBufferMethod = "map".equals(methodName) && signature.equals("(Ljava/nio/ByteBuffer;)L" + MAPPED_OBJECT_JVM + ";"); - boolean isMallocMethod = "malloc".equals(methodName) && signature.equals("(I)L" + MAPPED_OBJECT_JVM + ";"); - - if ( (isMapDirectMethod || isMapBufferMethod) || isMallocMethod ) { - if ( isMallocMethod ) { - // stack: count - pushInt(super.mv, mappedType.sizeof); - // stack: sizeof, count - super.visitInsn(IMUL); - // stack: bytes - super.visitMethodInsn(INVOKESTATIC, jvmClassName(ByteBuffer.class), "allocateDirect", "(I)L" + jvmClassName(ByteBuffer.class) + ";"); - // stack: buffer - } else if ( isMapDirectMethod ) { - // stack: capacity, address - super.visitMethodInsn(INVOKESTATIC, MAPPED_HELPER_JVM, "newBuffer", "(JI)L" + jvmClassName(ByteBuffer.class) + ";"); - // stack: buffer - } - - // stack: buffer - super.visitTypeInsn(NEW, className); - // stack: new, buffer - super.visitInsn(DUP); - // stack: new, new, buffer - super.visitMethodInsn(INVOKESPECIAL, className, "", "()V"); - // stack: new, buffer - super.visitInsn(DUP_X1); - // stack: new, buffer, new - super.visitInsn(SWAP); - // stack: buffer, new, new - pushInt(super.mv, mappedType.align); - // stack: int, buffer, new, new - pushInt(super.mv, mappedType.sizeof); - // stack: int, int, buffer, new, new - super.visitMethodInsn(INVOKESTATIC, MAPPED_HELPER_JVM, "setup", "(L" + MAPPED_OBJECT_JVM + ";Ljava/nio/ByteBuffer;II)V"); - // stack: new - return true; - } - } else if ( opcode == INVOKEVIRTUAL ) { - if ( "dup".equals(methodName) && signature.equals("()L" + MAPPED_OBJECT_JVM + ";") ) { - // stack: this - super.visitTypeInsn(NEW, className); - // stack: new, this - super.visitInsn(DUP); - // stack: new, new, this - super.visitMethodInsn(INVOKESPECIAL, className, "", "()V"); - // stack: new, this - super.visitMethodInsn(INVOKESTATIC, MAPPED_HELPER_JVM, "dup", "(L" + MAPPED_OBJECT_JVM + ";L" + MAPPED_OBJECT_JVM + ";)L" + MAPPED_OBJECT_JVM + ";"); - // stack: new - return true; - } - - if ( "slice".equals(methodName) && signature.equals("()L" + MAPPED_OBJECT_JVM + ";") ) { - // stack: this - super.visitTypeInsn(NEW, className); - // stack: new, this - super.visitInsn(DUP); - // stack: new, new, this - super.visitMethodInsn(INVOKESPECIAL, className, "", "()V"); - // stack: new, this - super.visitMethodInsn(INVOKESTATIC, MAPPED_HELPER_JVM, "slice", "(L" + MAPPED_OBJECT_JVM + ";L" + MAPPED_OBJECT_JVM + ";)L" + MAPPED_OBJECT_JVM + ";"); - // stack: new - return true; - } - - // - - if ( "runViewConstructor".equals(methodName) && "()V".equals(signature) ) { - // stack: this - super.visitInsn(DUP); - // stack: this, this - super.visitMethodInsn(INVOKEVIRTUAL, className, view_constructor_method, "()V"); - // stack: this - return true; - } - - // - - if ( "copyTo".equals(methodName) && signature.equals("(L" + MAPPED_OBJECT_JVM + ";)V") ) { - // stack: target, this - pushInt(super.mv, mappedType.sizeof); - // stack: sizeof, target, this - super.visitMethodInsn(INVOKESTATIC, MAPPED_HELPER_JVM, "copy", "(L" + MAPPED_OBJECT_JVM + ";L" + MAPPED_OBJECT_JVM + ";I)V"); - // stack: - - return true; - } - - if ( "copyRange".equals(methodName) && signature.equals("(L" + MAPPED_OBJECT_JVM + ";I)V") ) { - // stack: instances, target, this - pushInt(super.mv, mappedType.sizeof); - // stack: sizeof, instances, target, this - super.visitInsn(IMUL); - // stack: bytes, target, this - super.visitMethodInsn(INVOKESTATIC, MAPPED_HELPER_JVM, "copy", "(L" + MAPPED_OBJECT_JVM + ";L" + MAPPED_OBJECT_JVM + ";I)V"); - // stack: - - return true; - } - - if ( "next".equals(methodName) && "()V".equals(signature) ) { - // stack: this - pushInt(super.mv, mappedType.sizeof); - // stack: sizeof, this - super.visitMethodInsn(INVOKESTATIC, MAPPED_HELPER_JVM, "put_view_next", "(L" + MAPPED_OBJECT_JVM + ";I)V"); - // stack: - - return true; - } - } - - return false; - } - - private static void throwAccessErrorOnReadOnlyField(String className, String fieldName) { - throw new IllegalAccessError("field '" + className + "." + fieldName + "' is final"); - } - - @Override - public void visitFieldInsn(int opcode, String className, String fieldName, String typeName) { - MappedSubtypeInfo mappedSubtype = className_to_subtype.get(className); - if ( mappedSubtype == null ) { - String mappedSetPrefix = jvmClassName(MappedSet.class); - - // MappedSet.view - outer: - if ( "view".equals(fieldName) && className.startsWith(mappedSetPrefix) ) { - if ( opcode == GETFIELD ) - throwAccessErrorOnReadOnlyField(className, fieldName); - if ( opcode != PUTFIELD ) - break outer; - - // stack: index, this - if ( false ) - break outer; - else if ( className.equals(jvmClassName(MappedSet2.class)) ) - super.visitMethodInsn(INVOKESTATIC, MAPPED_HELPER_JVM, "put_views", "(L" + jvmClassName(MappedSet2.class) + ";I)V"); - else if ( className.equals(jvmClassName(MappedSet3.class)) ) - super.visitMethodInsn(INVOKESTATIC, MAPPED_HELPER_JVM, "put_views", "(L" + jvmClassName(MappedSet3.class) + ";I)V"); - else if ( className.equals(jvmClassName(MappedSet4.class)) ) - super.visitMethodInsn(INVOKESTATIC, MAPPED_HELPER_JVM, "put_views", "(L" + jvmClassName(MappedSet4.class) + ";I)V"); - else - break outer; - // stack: - - return; - } - - // early out - super.visitFieldInsn(opcode, className, fieldName, typeName); - return; - } - - if ( "SIZEOF".equals(fieldName) ) { - if ( !"I".equals(typeName) ) - throw new IllegalStateException(); - - if ( opcode == GETSTATIC ) { - pushInt(super.mv, mappedSubtype.sizeof); - return; - } - if ( opcode == PUTSTATIC ) { - throwAccessErrorOnReadOnlyField(className, fieldName); - } - } - - if ( "view".equals(fieldName) ) { - if ( !"I".equals(typeName) ) - throw new IllegalStateException(); - - if ( opcode == GETFIELD ) { - // stack: instance - pushInt(super.mv, mappedSubtype.sizeof); - // stack: sizeof, instance - super.visitMethodInsn(INVOKESTATIC, MAPPED_HELPER_JVM, "get_view", "(L" + MAPPED_OBJECT_JVM + ";I)I"); - // stack: view - return; - } - if ( opcode == PUTFIELD ) { - // stack: view, instance - pushInt(super.mv, mappedSubtype.sizeof); - // stack: sizeof, view, instance - super.visitMethodInsn(INVOKESTATIC, MAPPED_HELPER_JVM, "put_view", "(L" + MAPPED_OBJECT_JVM + ";II)V"); - // stack: - - return; - } - } - - if ( "align".equals(fieldName) || "sizeof".equals(fieldName) ) { - if ( !"I".equals(typeName) ) - throw new IllegalStateException(); - - if ( opcode == GETFIELD ) { - // stack: instance - super.visitInsn(POP); - // stack: - - if ( "sizeof".equals(fieldName) ) - pushInt(super.mv, mappedSubtype.sizeof); - else if ( "align".equals(fieldName) ) - pushInt(super.mv, mappedSubtype.align); - // stack: int - return; - } - if ( opcode == PUTFIELD ) { - throwAccessErrorOnReadOnlyField(className, fieldName); - } - } - - if ( "baseAddress".equals(fieldName) || "viewAddress".equals(fieldName) ) { - if ( !"J".equals(typeName) ) - throw new IllegalStateException(); - - if ( opcode == GETFIELD ) { - // do not change a thing - } - if ( opcode == PUTFIELD ) { - throwAccessErrorOnReadOnlyField(className, fieldName); - } - } - - Long fieldOffset = mappedSubtype.fieldToOffset.get(fieldName); - if ( fieldOffset == null ) { - // early out - super.visitFieldInsn(opcode, className, fieldName, typeName); - return; - } - - // now we're going to transform ByteBuffer-typed field access - - if ( typeName.equals("L" + jvmClassName(ByteBuffer.class) + ";") ) { - if ( opcode == PUTFIELD ) { - throwAccessErrorOnReadOnlyField(className, fieldName); - } - if ( opcode == GETFIELD ) { - Long fieldLength = mappedSubtype.fieldToLength.get(fieldName); - - // stack: ref - super.visitFieldInsn(GETFIELD, mappedSubtype.className, "viewAddress", "J"); - // stack: long - super.visitLdcInsn(fieldOffset); - // stack: long, long - super.visitInsn(LADD); - // stack: long - super.visitLdcInsn(fieldLength); - // stack: long, long - super.visitInsn(L2I); - // stack: int, long - super.visitMethodInsn(INVOKESTATIC, MAPPED_HELPER_JVM, "newBuffer", "(JI)L" + jvmClassName(ByteBuffer.class) + ";"); - // stack: buffer - return; - } - } - - // we're now going to transform the field access - - if ( opcode == PUTFIELD ) { - // stack: value, ref - super.visitInsn(SWAP); - // stack: ref, value - super.visitFieldInsn(GETFIELD, mappedSubtype.className, "viewAddress", "J"); - // stack: viewAddr, value - super.visitLdcInsn(fieldOffset); - // stack: offset, viewAddr, value - super.visitInsn(LADD); - // stack: fieldAddr, value - super.visitMethodInsn(INVOKESTATIC, MAPPED_HELPER_JVM, typeName.toLowerCase() + "put", "(" + typeName + "J)V"); - // stack - - - return; - } - if ( opcode == GETFIELD ) { - // stack: ref - super.visitFieldInsn(GETFIELD, mappedSubtype.className, "viewAddress", "J"); - // stack: viewAddr - super.visitLdcInsn(fieldOffset); - // stack: fieldOffset, viewAddr - super.visitInsn(LADD); - // stack: fieldAddr - super.visitMethodInsn(INVOKESTATIC, MAPPED_HELPER_JVM, typeName.toLowerCase() + "get", "(J)" + typeName); - // stack: value - - return; - } - - // original field access - super.visitFieldInsn(opcode, className, fieldName, typeName); - return; - } - } - - static void pushInt(MethodVisitor mv, int value) { - if ( value == -1 ) - mv.visitInsn(ICONST_M1); - else if ( value == 0 ) - mv.visitInsn(ICONST_0); - else if ( value == 1 ) - mv.visitInsn(ICONST_1); - else if ( value == 2 ) - mv.visitInsn(ICONST_2); - else if ( value == 3 ) - mv.visitInsn(ICONST_3); - else if ( value == 4 ) - mv.visitInsn(ICONST_4); - else if ( value == 5 ) - mv.visitInsn(ICONST_5); - else if ( value >= Byte.MIN_VALUE && value <= Byte.MAX_VALUE ) - mv.visitIntInsn(BIPUSH, value); - else if ( value >= Short.MIN_VALUE && value <= Short.MAX_VALUE ) - mv.visitIntInsn(SIPUSH, value); - else - mv.visitLdcInsn(value); - } - - static String jvmClassName(Class type) { - return type.getName().replace('.', '/'); - } - - private static class MappedSubtypeInfo { - - public final String className; - - public int sizeof; - public int align; - - public Map fieldToOffset; - public Map fieldToLength; - - MappedSubtypeInfo(String className, int sizeof, int align) { - this.className = className; - - this.sizeof = sizeof; - this.align = align; - - this.fieldToOffset = new HashMap(); - this.fieldToLength = new HashMap(); - } - } - - public static String exportConfiguration() { - StringBuilder sb = new StringBuilder(); - - for ( MappedSubtypeInfo info : className_to_subtype.values() ) { - sb.append("class\t" + info.className + "\t" + info.sizeof + "\t" + info.align + "\r\n"); - - for ( String fieldName : info.fieldToOffset.keySet() ) { - sb.append("field\t" + info.className + "\t" + fieldName + "\t" + info.fieldToOffset.get(fieldName) + "\t" + info.fieldToLength.get(fieldName) + "\r\n"); - } - } - - className_to_subtype.clear(); - - return sb.toString(); - } - - public static void importConfigation(String input) { - className_to_subtype.clear(); - - try { - BufferedReader br = new BufferedReader(new StringReader(input)); - - while ( true ) { - String line = br.readLine(); - if ( line == null ) - break; - if ( (line = line.trim()).isEmpty() ) - continue; - - StringTokenizer st = new StringTokenizer(line, "\t"); - - String type = st.nextToken(); - if ( type.equals("class") ) { - String className = st.nextToken(); - int sizeof = Integer.parseInt(st.nextToken()); - int align = Integer.parseInt(st.nextToken()); - - className_to_subtype.put(className, new MappedSubtypeInfo(className, sizeof, align)); - } else if ( type.equals("field") ) { - MappedObjectTransformer.MappedSubtypeInfo info = className_to_subtype.get(st.nextToken()); - String methodName = st.nextToken(); - int off = Integer.parseInt(st.nextToken()); - int len = Integer.parseInt(st.nextToken()); - - info.fieldToOffset.put(methodName, Long.valueOf(off)); - info.fieldToLength.put(methodName, Long.valueOf(len)); - } else { - throw new IllegalStateException(type); - } - } - } catch (IOException exc) { - throw new IllegalStateException("never happens"); - } - } - } \ No newline at end of file diff --git a/src/java/org/lwjgl/util/mapped/MappedObjectUnsafe.java b/src/java/org/lwjgl/util/mapped/MappedObjectUnsafe.java index e4fb56b2..20fa3b50 100644 --- a/src/java/org/lwjgl/util/mapped/MappedObjectUnsafe.java +++ b/src/java/org/lwjgl/util/mapped/MappedObjectUnsafe.java @@ -32,7 +32,7 @@ package org.lwjgl.util.mapped; import java.lang.reflect.Field; -import java.nio.Buffer; +import java.lang.reflect.Modifier; import java.nio.ByteBuffer; import sun.misc.Unsafe; @@ -49,10 +49,6 @@ public class MappedObjectUnsafe { private static final long BUFFER_ADDRESS_OFFSET = getObjectFieldOffset(ByteBuffer.class, "address"); private static final long BUFFER_CAPACITY_OFFSET = getObjectFieldOffset(ByteBuffer.class, "capacity"); - public static long getBufferBaseAddress(Buffer buffer) { - return INSTANCE.getLong(buffer, BUFFER_ADDRESS_OFFSET); - } - private static final ByteBuffer global = ByteBuffer.allocateDirect(4 * 1024); static ByteBuffer newBuffer(long address, int capacity) { @@ -75,20 +71,39 @@ public class MappedObjectUnsafe { type = type.getSuperclass(); } } - throw new InternalError(); + + throw new UnsupportedOperationException(); } private static Unsafe getUnsafeInstance() { - try { - ByteBuffer buffer = ByteBuffer.allocateDirect(1); - Field unsafeField = buffer.getClass().getDeclaredField("unsafe"); - unsafeField.setAccessible(true); - Unsafe instance = (Unsafe)unsafeField.get(buffer); - buffer.flip(); // prevented 'buffer' from being gc'ed - return instance; - } catch (Exception exc) { - throw new InternalError(); + final Field[] fields = Unsafe.class.getDeclaredFields(); + + /* + Different runtimes use different names for the Unsafe singleton, + so we cannot use .getDeclaredField and we scan instead. For example: + + Oracle: theUnsafe + PERC : m_unsafe_instance + Android: THE_ONE + */ + for ( Field field : fields ) { + if ( !field.getType().equals(Unsafe.class) ) + continue; + + final int modifiers = field.getModifiers(); + if ( !(Modifier.isStatic(modifiers) && Modifier.isFinal(modifiers)) ) + continue; + + field.setAccessible(true); + try { + return (Unsafe)field.get(null); + } catch (IllegalAccessException e) { + // ignore + } + break; } + + throw new UnsupportedOperationException(); } } \ No newline at end of file diff --git a/src/java/org/lwjgl/util/mapped/MappedSet2.java b/src/java/org/lwjgl/util/mapped/MappedSet2.java index 4fdf514e..30287929 100644 --- a/src/java/org/lwjgl/util/mapped/MappedSet2.java +++ b/src/java/org/lwjgl/util/mapped/MappedSet2.java @@ -49,8 +49,8 @@ public class MappedSet2 { } public void next() { - this.a.next(); - this.b.next(); + this.a.nextSet(); + this.b.nextSet(); } } \ No newline at end of file diff --git a/src/java/org/lwjgl/util/mapped/MappedSet3.java b/src/java/org/lwjgl/util/mapped/MappedSet3.java index 308f70ad..bcef2cb9 100644 --- a/src/java/org/lwjgl/util/mapped/MappedSet3.java +++ b/src/java/org/lwjgl/util/mapped/MappedSet3.java @@ -51,9 +51,9 @@ public class MappedSet3 { } public void next() { - this.a.next(); - this.b.next(); - this.c.next(); + this.a.nextSet(); + this.b.nextSet(); + this.c.nextSet(); } } \ No newline at end of file diff --git a/src/java/org/lwjgl/util/mapped/MappedSet4.java b/src/java/org/lwjgl/util/mapped/MappedSet4.java index 0b05f97e..c986244d 100644 --- a/src/java/org/lwjgl/util/mapped/MappedSet4.java +++ b/src/java/org/lwjgl/util/mapped/MappedSet4.java @@ -53,9 +53,9 @@ public class MappedSet4 { } public void next() { - this.a.next(); - this.b.next(); - this.c.next(); - this.d.next(); + this.a.nextSet(); + this.b.nextSet(); + this.c.nextSet(); + this.d.nextSet(); } } \ No newline at end of file