From 06b42e270e8e3aecbbb4370f920dd37217091bac Mon Sep 17 00:00:00 2001 From: paladin-t Date: Wed, 3 Feb 2016 14:46:01 +0800 Subject: [PATCH] *fixed a wrong dereferencing bug with referenced type hashing and comparison; *fixed an invalid lambda bug with gc. --- HISTORY | 4 +++- core/my_basic.c | 17 ++++++++++++++--- output/my_basic.exe | Bin 358912 -> 358912 bytes 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/HISTORY b/HISTORY index 318e476..9c98acc 100755 --- a/HISTORY +++ b/HISTORY @@ -1,5 +1,7 @@ Feb. 3 2016 -Fixed a memory leak with sub routine when assigning it as upvalue +Fixed a wrong dereferencing bug with referenced type hashing and comparison +Fixed an invalid lambda bug with GC +Fixed a memory leak with sub routine when assigning it as an upvalue Feb. 2 2016 Optimized list sorting function by using merge sorting diff --git a/core/my_basic.c b/core/my_basic.c index f7a7127..b6562c9 100755 --- a/core/my_basic.c +++ b/core/my_basic.c @@ -2393,7 +2393,7 @@ unsigned int _ht_hash_intptr(void* ht, void* d) { unsigned int _ht_hash_ref(void* ht, void* d) { unsigned int result = 0; _ht_node_t* self = (_ht_node_t*)ht; - _ref_t* ref = *(_ref_t**)d; + _ref_t* ref = (_ref_t*)d; mb_assert(ht); @@ -2495,8 +2495,8 @@ int _ht_cmp_intptr(void* d1, void* d2) { } int _ht_cmp_ref(void* d1, void* d2) { - _ref_t* r1 = *(_ref_t**)d1; - _ref_t* r2 = *(_ref_t**)d2; + _ref_t* r1 = (_ref_t*)d1; + _ref_t* r2 = (_ref_t*)d2; intptr_t i = (intptr_t)r1 - (intptr_t)r2; int result = 0; @@ -5254,6 +5254,15 @@ int _gc_add_reachable(void* data, void* extra, void* ht) { break; #endif /* MB_ENABLE_CLASS */ +#ifdef MB_ENABLE_LAMBDA + case _DT_ROUTINE: + if(obj->data.routine->type == _IT_LAMBDA) { + if(!_ht_find(htable, &obj->data.routine->func.lambda.ref)) + _ht_set_or_insert(htable, &obj->data.routine->func.lambda.ref, obj->data.routine); + } + + break; +#endif /* MB_ENABLE_LAMBDA */ default: /* Do nothing */ break; } @@ -6946,6 +6955,8 @@ _routine_t* _clone_routine(_routine_t* sub, void* c, bool_t toupval) { #ifdef MB_ENABLE_LAMBDA if(toupval || sub->type == _IT_LAMBDA) result = sub; +#else /* MB_ENABLE_LAMBDA */ + mb_unrefvar(toupval); #endif /* MB_ENABLE_LAMBDA */ if(!result) { diff --git a/output/my_basic.exe b/output/my_basic.exe index d4f33aa35e8d7f442d206638ed48b75b63badbbf..d0b0a46abe6fd6c3753f51426889954b657f67e3 100755 GIT binary patch delta 22649 zcmb7sd3=q>_y03j5+NabM1%xE5Zry=LK3m&BE%Z8N2sPGwS}8VQsPo!w2#_~DyozU z5^9NBVi!y8OBD6k+O%kCk>7isdxLNL`RA9{>)bPQW}cZdXU?2+W}bPH^DHRmSM0HiB@9#ok}D}NJQ~5iBdwoEPmq_>PGU5 z8`il-$P4oyq64nfI`Ijvk(hbB;LgzdrJI z{K!|#CLwf=cNDo#zxQrH&d_7tY2*Zz*GnYb=&X8Xa)}k$dkLwc-vu;laW>q_U3S4OUB1O(BK0_BpX zmGtXC9m%G*0{hx$Mp(H57t8}@U}^deSQ(>9K&#^dUtk9B*JEXjcJjTy+?UdStej8& z0t_to3sC0FTRkxylWAMDEK958y$$FRN+;_sM;k z;R)O=_oc5Fa3|FF1vUT&0V{G}RyG7~iw2tjHwSJG+z6dU0SDy1%xMGcg?8Hk*HV-n zEM?L@c+&nJyGZ7~Ox4A_)Mk%zU>%;UUgZ>gw{?$Rsu+4@Mz_2c^QR`}ADnbvox9Eb!zw6Pp5`{Ct*Vv*43IRiui^2`tIx zz$bqMOWHcp@0+v-GnGxuA&mFT+9o!XEUhCp(%a$ZNSG>Us5-nA`H-fB-y?-IHX?&m z74L{RNF>jGrqi1J^!HbW+PGa+WS{dDT;#+1SWPdON%!L~g32DP>hmb7%x{;d^$-=p)qL!J)?OE@l_OBN2$<*jvOeeuQCXNX7DE-NSW zrr)+5C|^}(<#wl*Sh>+f1;;WQ^sAoiU9Ay@%>nDNk=^qSd5eVw=Q91ACAIBT6Rqg; z_OXKMtS^|X1ltYg{Oy*OqVb8>#9Xv9H`1At3T>U0qJ?J81e+A!LgMH-Oz@?9qeDp< zy&QcXzh&(L8}`49HeM7|X9msh`^<4h2+4O2C4)X`w~PEj*SBv;s_E(WJ%}F->oB-w zSuaeptl(N^q~nCJ{vsZ(D)=+ABYXI?FlH8exSz0}uIykZTWAyMEOfJ48bodvmq_6s zrC+lgvGCF+s76|5Y!8M-(c`Z>yVUC_E zM~LHm;b7?db-GX~tJ`%fN-m+#v-G4gt#;{nXm(%2dnBx8Whkms?SITeXSZu zKBN8Bul**E6DRADZ#qfm7_)S=rhTLS>0%F&h4Jkm1RqDw$oWZ;%De-C!gq9wrlEfh z1P!sYtH4Ol2JvlD^S+lljz3J2J4{w@z(zcf;6;<2+iPOY^jg8wa6)N!F*J zHXFqZfeoTI)IILHprcCNSu(lULr)1&(4~ef(u4XMr9NVJCxjg*(A^24Jxw&~CG|H@ zhw;9zt0?cdSoG=ywHZU`Qd108`*o8HE3LkHWk3}ZotL9RC^>>^rZB&b9A9>tgwiYK zSSV%_%SVK$XpwaUGS95bi09TMD_0#^kWKlHUy@I$rc*L`Ll<-!S!e2Sjw`HH&ef$P zA(+03^(GT&c*$6$*{LJ4)4TIJl1X279wFP^)5_IPv~mpq(SXT-vAwO_8sMdUteo6t z<-&SdxfG1E9Cbe`o}b`BB)%i)XI-SQH%Gb*M@y}{_LDr>O>?`BlSo$-|JpT|NE#>8 zkGgk+25s*iM=1TfyA+(X?NLfr72oaAQQ}q94+|jz?AOy%nXLg?OS{+<65l>_rmeXo zB9VS&Q?_6u&us1>c`rPD3IteSM~s`p>SoI6#w4;91QTk$vOQoA-0yYJOUhOkYxIhh zHOk1RdpE=k3%$FAF+=M(GBjn7ij?75k`OMf}w4wS0n%L(q89RJ<=~tUJjnjv8no5)~~TJ7^O@XcauJgcJy%*R&K4XW;R*Ih<)4~ zr+W+6Kyq|)V_ISLcVu`L{OObL&x(im?vF@ETvVM|zfbkY-qmWsM$e=))^~KZ@e>o2 zvkm+EZRAY}1dAmoRU9kq;i*gT_W9%+$d`zP*Ji z5M8Wr@0e-9s<@beVSdNXus5_KC9nrr5Qpb4^l~+N7cS*(qx1f6qfYLAM2&acZAVTV zt4}y>ni?Uw`I_2>HlPDj8`}4L$N0?Z;~MB|WF6hyb~C}if~Irn)oB?kVB?=fGpiM% zD8syC*88~SO;bv;!bHx5$<9XVyBaA)7UCY7q9{Y%(M2=R*opC0Za6SY7XZeOvvRl7 zt$thu60C3xU>$%~rUsJ;`d4aq{KgKml4x2m%;t8fGsn@Uw}R`w@lJ9u%^4A4ubg1z z?gO%2n5E~r@@rgpldFu;cLMT0v~qI+;V#V59bEZ17fy7QG5P>NO<3C3@wlHO%QM+w z%JA*TIcWIEC1fxy9cgo03zH@eJ7+|FDjnr5Z}AcA3*cIY6SMRaq*?yC3s<|!7`@I% zbi$|xL`pvy)f2xzjnV{Xd{tc?Zo@lknaUuXvBhoGgAhX&=ELO0$yuSX9a&`{%1BkN3o2IG>VUZ!k*Jte+(&DQ%h; zENLO7y1cc-PH*OoC8KCU{zP#9Lw-NWvPjw`zkPtCuO~uNAH;kS4lgk0E__3i3c5Q7 zolMsiv>@LXpDaiqUNAnTfvk_@G8#U+K_eCmP7G%T%(F1-72>BjXtSfUe_@<2J#aFN zj+;F=*>f>OJ=2rRs_lq(b8yw%P;v8^!knB>IQNuVxxZcT1h^(&gIO6%GpJeC3{&4Z zt^E$UN)UqV2(!23ADYyIP=OS?~P$}VdpnKezjez zwH(_GEC}{=vhc7m$0fr|R%gKT8lSX=WPGgcrf1A_LUjH*I z7vus@;F^35W@RkRAR3@>LCg2@@6%bD!TSS-E$h=SJ=*by;|d#|*BFA4dFPqAtXMj| zPz`gituUF;;<|H-2=S-O9F`7c%fuZ?S!R7leaBg$xT3ncl+m1a=Ds5_L>M{)Lz^4| zGthSi?RC2)?J&=)xu|G2@==l)=IG)nG%H}U>NFdfD%2%2Xzs06#rgBxYmoptcR|bk z_aM5OAmfUdb_N-zm`H2&OU`>yCv#-p3qPNNU5qlr*D=YBwcam^b?|1U)2XjOnN5uP z$Gf3cl@Ld37d5RNU}p=4$a;XL>t4hNe_=Lk{j@ z7F00NRQkL25ll9CuEvV;WzxAe4FidLh1q5tpM)ah&G6*{pGawbq;M*_28LE@HHXfhqNo+6tg#3Zen*OW$l z9?)p)BvulFsBs(b$>$c*f?obSIz&4G{o2F0 ztf{+-V3tLfQgCcv5e?&~kR|jpeqqq6wM>F_{h0()>N`2?O$|%7z^px5GM|j3Q@>~x znNBd}%%Gn4#)$hue7=sZZiv;zfLC0?RrJR%u*u4*uC9jG^bB-d61^UN(4g2 zk!--$NW&D*%mEHfp1Dp|0t*m(!jd`aj4q4FBpHTfFM%2>Mb zI(mF*5;h;<%QSE?$;+hpowG~_r}*Qt2|nF3neY*wzJj}e@3bs$-}E=opxov0P)!V| zTcB_Q6vPVM0znokGK)W5?&IdegeE#PrX!_AbknMAY%f}`ZZG-i13F;!q;PR@8$M*y z;VI-XJd+Jn4eLE>jPs0?2CS)&M69Rx*0gZzINB8*sJ{yGu(BhMJ;lAg(nvh+CP4fi zR5mcAc-_|$l9Gj$Qey$eifN|>7=pB;R$*;yHC_b!%w`)1pPf0Ic8J^3DL@ErtFye5 z9lhOzBFqFt|G=9))6GrP-th=fAH1No*0%{Ce5ks*urqcXfy|FQIKbk2Oor5PdVVj0 z5Ik{x^C1IIiFH^7R`zyh@-Zs^z`=>Y&G}YOc5_Bw-Z&>>>q-o~?mg(mT11pCE|NOJ z1Q^T*dMAw;kCpVy`ryDuAiUcG)I)B!mA+ixqRwe&W5~7I(Ad65oTayIjm62rgRdD4 zTzQHk^FV0qIO^!^R_MuyiEQgw7~}R}7HaK+W9Njxbmw4Dn&2xwb1n|gBxBoS6V|h% zFxPW|g)xEH3ZbBPn9$@o3UnAoC2Tz`-()v&yHU9ulQ-fn8*m8R8V*QaLVp@!yb!;m zSF|wZk*Ia_>4xY&Juxu}#fYW>6d(iq0I0PcTXDb=z$U;sfB|)r0OB9vB(>Z)caPeh zb?SO~bKc%>ofsYWjlPZ*F$|oiZwdYGn+9PG#^UT!bh{#(LMsT9Exj|s>oj`%o5-Na z+rZ)!EH`2EX{08w)K@fgV0@3@owc}*C=E*Pr&-$sA+d+C*oGXP{2lj zFQ6}A93Ts@7GMW#0o*CRv9W=K?4i#$wIIW3qs`4o2WsBjq;)0~emkH)U;>~fUxQg0 zqvz0q%_DF`@L=INw-~#|FV=xIY6<`Mx02}~DUkKo7;dhO@ zRO|s2rsk}0ax+G6)TMZ4X`F-~7@@5r-V=^65~RGT@B(#Ea}6u-2erPVpSYJqI5(62 z_FV{hMLoA<)rs2coPfRblPwSX*8RcC^>#rpa814jvoc0+1sDhT7*GJ%2F`e30YH!r z0JH$;0o#fXZ}lb;<^JOH-xCrayU)t?01O1A1EvAy0+s?c0^01iaw_26fa8FxfQNv; z0j#VpAap+sEj~=9(8^+UPz-#SctX` zw4h^Xznv{42YS;PI~zzg^roNh99UZ{D2F-U*+Sm?-+RGso2v%#5Ty^FryC5-&QbwLI7#=jP$z?tZdgavFQHla@*c?CS;Z z_wBxk9xg)j{he!)8T*f;%uv=v@*C==D*3AqoqdSMS!ej+;70dhKpZa$XIyZ^-7SneSr~U0zHS5z z%;{okJ3NX^raKQeuj%;K;mdA^KZCzZ$quGxk2IE?{+?DHY2I`!XpSC7(Zo<3v&UU` z^f*+Q;O02u=Kmp5K`(OSoJq_Ws_Y>}iM z^U=F1@KbQ^ha!6Y#A&j%_}h~v;$LwE`g>Y9r9*$Gg?NL@^)@>_!}m!i&@SUdA-Ouk zw~ugglucM;Sfs{TL; z)Quf23X4z(M`PkKcs8b7Y*v_E9DgB~gt3=rc_w!9$Yn+KN_XEK721*8#qxrl-uX#N z>J$fFd?X=*7G2SkB5JtO)RT#(plnwK9eKqHQux&lb=^vx#L^0S(?yiI>WL(yTRE{_ zrAw}!m$6fa(S=jr>}O{XK7OPe{sgIuDasp z%L)nyc>cgzC?`0lXn!@rzsvte{gms?#76$rx*BI5#Ye9%Ac2Ra2yRp?CPLt~TM9`) zd&k}68!@Zl$OyxPZ;gT|PYbQv05xVOR@8Q@tq0q1Rkg;3t7ScLB#w-!pzLLoPO2$5 zb8ysS19WuhB21IL%k>b(znAMJq#!3gzdMz_ycO-ow{qnj88K+jvo+iPg*)34V|z!J zIHA|ON^z+4BemUbMb}h@_#)=vgx4+6U42I#;ZPJkUfD}+y$a%T5XDolU!a8H7__TN z_Jjkk;<8ch8V5oa;Ylm>n^-^W{inX9-`$RC@=J^N8XDW-?Nh_>R9E&?OB(v~3Q|Bz ze^x{>Ar{6&xEf}{+#iXqPYYVcqf0$ON$=+Upu>G?^+8z90%}b zusgOGCxvyc0vwyn`UB&2K{jwrz6P^0mYzlL{lZIppV6838(F`~MYla(;jEc)y7iT_ zo1$Ny;;7RFmB2Om8qCUA`WJfT{tOaNlZD=rr{jvh6+#GUNDnYq=_5dY74=AD^JUK$9Qsu9)#G6k2RZq?qZ~xWbjVvxM|6{Hv8B*N)A76>&`7iv! z2-21=cwLw5D_;7#HX%EU*Sr}@2KT$`9JZoN+&LB;8|t&Ttgw@tq6{xyAe>Wz@@G^Mj}iy$}-lihWx{k*;!|<^Oun ztE7iJNhgw3H~3XvB#_MIPkWGuk}t0_p4v-3yzXQt!IN}k?0ABm*wI)2&CZwqYBknX z1I#GO3Xb{wyFBtL-_xCZ#viXsE|6XPmtK&`SC{z(LF54`)>@2|L*mRfAyOGwuV#i|1KZtD)(9OuLrx8;0hB2UwPUo_~ZPiK@j|{Q%=Ee zIpq|*X9EbnUP-qG5d5HZC;r9GP@m77&DQ8a{@WTNJO3#k=_(iXlX*aw{&X+#Zb)Vk z$+2U6B_V;5;$uz)y%Y)s{p09+3i{(wCu7eWK|vdr7{W-B8#&4sMGy@s;*Um<&m}K^ z+RxNpy|A$`N;!h`i>+nR25vyx{7GrT^PdWM3L>X=07-Pe^MF4U39?_;F^35W@RjWk{{I? zJg?(-v?fZ7;9+Z`BN=>T8`6$U=X{F7+1Npj~QzpNd} zB$d2xd&pG9C$uM~y5g;vy)I+k|-m6Ye{S|CF_*rBMBMBhiK4$ z1#i=ko|2oD{3;Detj%s)rTKQ^|J0B+Z!@j5L@)XC+maDl5=Ec|^K_(JD7%N1HN?@` z6PGHyanHva6O21cHenwByN>Lv&C1hkar}3B3|3Xr+yMO}txDDzNjM>6_#-CrA>^et zlXZ~S4KrBj#0ObO3c12(TF7*0SCs|b+4zQ5(mG63vU}Z`J_RB!t?fLvDQ9oXY`e z6;GZ+A=`E)YRRKPd}Ry?=BIWh@ni;H)|r?g^yqlpLHX$fcWw^)$_YYTA@3!y&M$?*hcbK zx?!1&*-Gm1y}FYy(wm>qoirH44%(A&Md}t~5ck~}ADl18;qF@$!)PH|n7Gu*Q(0E1 z;vCuy5mM8ttHq>M=!+zt48%|di}945cS^FPsymrV$Q?etCou+md`M(Ti3YWdr8B}} zepgSjrc=yNJdcePVq!EA=%{kN$WOHuwOrmBw&h$&;5EsB?u{=AW@ew&t3Jds^ ziDWV6MPY+m_>Es_Bge>LKCKrS86n=$40ObJ;u=&fVcR0M_3|k={sx_$N3VYT<6cnk zZhW)eMCQEum!AUT?oc@D=e@-B6Hk_jXUbT`f7F}o#}v!@kl<$G?VS9}P+Jq*|NG># zS28B?mQVhVELp^l?L(T7zWkg%Pz*I+-iN>@mHgRjzE6`soJ?NK2OXBcZs{$eZTC#63(Vqk>+~d;8Qs z>?wA`>kEElfAWyrA)PCD}q2c!DkId7}ukcY8%TF5DxF&L|qEaI09A*26SPhC>*==M+EK3cz~ zCmX*xg}f%S_-}{)?or7|9#TR?@h&%6Zs#8{qHBo4#$&=XT5#$L5*Cb{HfvO zGMUY<8$rhXFK!2nWPLjQE1QSsHBX|?k>oCM@M}hq-Vn?4QDhm}!!I07)R>5)qsb5u zTaF>&qg!P=^-R3ib4k$75O@5I#hXW$Y>-($P+ZeokDba7hK;`@_&Vz~W%Y1r&)50V zuFbo;x0&F?x@e;}|LquZ2ab3_8u^8k@E?zb)2f-Qbd2FH-f+1(d4ICfU6VBqagnQf zm+`2+eae5U+e$W%XVr)ECq8&red+{M&;R(p)gwx7OkmaJ{68PQtNu*}swX*LzA%Bl zWu~g6-bbh|k!11F6UnF=Zmvv3{m6;`ZN99;G>J8TjvtiyuK7AysQwJET>d@QqLL4? zSoJl$l=Gvr5v_<)?#2hrAbrWt{J0rJuS*`yR3b|~Kha%ywD=9qdhntl zHqtja-Pd_^f26Y;S6EvZinDyDweu3!=9m1<8D!Ld)wT`4U?y5m+A0Q?T%#+DYS}+%c}EdlBb?K21M`1iD9twLOSCn2SH<7uZQy(8Xc@<=4MtTmcDY#!s|K$37v6EtDy5C&y(n zPYV@;oeOXdn46yvA*AxA*`&E-Pc}b%Hi>NVc{byp2^$=L0SDw1aWhfGSNOHF$r5w{ z`?@qJ3oW@6E5F8U!E4Mx)^fy0 zK}d*@A4wEtwsgE|5~dG&J3e+FPqd{P{)mIL3K|M;?CSJ`nxcPr$vg=58Lyj1T6q2X z$(w3tGl%%G^GGz|`OoK(9|Eq4PcrXVPxOx7!ZCj2d~rCh=aZ#~-j{p|2W9MOZl0nnHJj??T{ILi-S zh%FHe>q4?Aa_ia{_A+Y~5ZhBExaH~mvLbq+I~+i<4#R|h_=$^1H*%(A-y-5qJi|iK z_EBL6f0;tH^7)2~u?tS(yDWywea=r=O!hTkQM^z7IoMj)J^gZ)tmJ!qM!LeMFZqnL zbzSR^6AQ%Z`ghekh*a@feSKF%3J@|~p7@rhC z0e4${t++kFoO)b^(2ei-IrcMteD>$0VZ&tSLsbwj9zrEdJ6^O@9xnOrbFzliCtt>J z->i(`B3H+7L2FA=mXHDxQfDfb3nF2wTe(#{D%r(hPJ}i5KVKlMPvs{pB@KDgQf%GC z^wa+?#+Ljy%Sb}AYnKrwv;9SF@Rpy$CYEz}BJjZtPOCEl4_J<1{T1J9IaX^0zj!%R z?G=AuIoke~|6@7Pcs;$r){-0C*8pC*g0$@L2ew6y%S?T*W%Yuhc(W<93E#f0=Z6Z= zfW4wRWb%b85L@T+n^utK^@gw)A&3I89)$z^^%dA}R`KeUWI_G)moVnbj*IY%VZv_y z{7URpMLD@`?zb=n1?Bt89!4Zy&!pc~u<@kk7A3O1X{rM_vjq7*jBUX`SUJv8N zMT_l>mG7~N*umbZRajT|__WpJxM#XIp1LIT;q_}s)84;#bS;{!o@`KHF4iV&g3O)r z@<%b`uwRrzR*aZw0amTzvakw^z>3o_IU`-8ki&0YLnb>-lZqes6+*xHc#g>$esvzS zQEaO*FYe}p2+v=b?Tu{y3yQQJXA$YWaYp^ILJ%MFHHq}Ly`$XY6TT+V-XZTOoB5otNwd(oKG-WbH&e0L zsq8d^OWe2-CdTj;8*pwmm_Pe9S=PGm_c7cf7t92%$=6_3#^~SipRFT9oiecTaqCIf zpuMKIGN@oW%*@OHe(id41d+(N4J52(9LDyZWIs2%B6TT_)aBW(i?Y5#9)N?{v6{X5YU)!RarhJLMj+nN!rF{|w~>GSvl zTQG(w{--VEa4*Rl(FL>bIFfLRbnv{WEssKxkHCuRF5G_ou7Z$%=1uiqmmQ}YmHl-Y zZb(Q{|6eA$3kZw0lGPZ}{O=(>EYWQw)02CJHZBPd__f=JI(VYo#aY%^aMj(()eydF z8woZ2hz@YRfXY+wh6N&AEY9jRy!k+et&$q&@j~%`yG{~*;X43h8We-rr;M=XVl6&(gm{CRX#0cj7Qi!v~j;SnowgSZA5O=%^Jx zx&&K;DjwfoEDatN?c&U*AgD&INL&7ODLK^X+B39-MJ~)bfn$|maP5mpR|*Gf=yh?T z02Z|(i(0_|uHR=-DYWKsDQ61$nz5TK?Wn@bHkVaW)%0~XiVfSRAQA*zb%o!N`m~OX zj6fm+gG(|oC+3rn!$Qu)x$!eLlcBW(AK{Cc2Xp!TKajTeVJ=-v5;pvS!-QC7C~M9y zK7RP7x|E#{JYphe8k;1{`cEyJSc@?PjRya?<#<|nB=Y+1Kp{!E!Y229ao38%Beh_( z`0;zhSpU=>tkZiqvTzNuam^re`Ru*qaJNBKqC6uN=k{}+FtOu)fLI&5IExjG?-j#n z3ww4Uno9;R#gNhaa*f4t$Gm-_T*ckKem_k9X1v04^*ghs-!A<2{p16`>A$+>(SJ7* zM+FBjFC#7L#?_Ed^25qVnZ&DQN%I5bDGnS<8XP2_c#uSX?4%o z!o;~2q-{$}W1S_wPpi&)kv4}>b?;Nt!digT5~Q?9q|&4;+u&_>Jj;5%%`RrymkLzg z&W_xEW2vKzcF)d|ms#=}OGUIq>g?N!Pw{Z4q4N# zv&Lg3GXQ>w~70FV8t&s|4DJe_&vQ&4L@?fbnmU<-@d30V-#Vu9bf6aaD$$Ok7ZM^oN z%%O_LS8#p!oD-x0-}@{HkR;3590!-oI7_@qz*Bg2*Bju=&MEw!Uw)1l$k+VkbBID8 z^W;1UuHTo%x0juAJ|-<`ah^<*kRJT1pU4==y>@(^i-@fbx8qx1giBw{7hc2;X9!<* zkyOCNF1$om1n)yXu=uqFl|QZ+)l2hk1LnWsV=t5AlACRK-z(T>&1%EO;wIjJcYWxU zW@Yup{*Qw3tiZ;vxI)4r*dWljpRm!lx_W4e*ns$*SlV4CBWUmy(gQZF)m5CD59GhP ziVduie|eSk1X0|9F1SYeWB(vrBh5(+?|mKnp1r*FI!@l>`TN(2rg2X{2;ha|H1?VT z3&@((F%mN}*=@cZ z`vZK9}Y>^{Wq zG}OhxwCxvEv(DK1B!&~|q+hy;v^O5!a6``YeOF)?N7y}TKyEB|Eq~4F=gkkT< znNIT72OxKSM>fuJ(kmZ=u6Rc;a+0NwK@NLIUhE|Mf)T;}G2i75N%H;eZ;W6mh9TN8 z#h-k{8JvNZ-@)*BPj%6`85>hzAQma^M4@=!;scqpU#=GROTa#-C-&CiQ zLJt8&5TJKTep%*-Yd;IWd2n3XY(D$}iRvQVW#xo{xP3W5sQUs}6WrO44Hbmxc-ki9 zibX#771BY#SO4j?g`V(oCxu?9g}m@3JLc|DQuKhVbR&g)hhIr=N!x$;ykGGa@CW|! zujH}hLO{vY-^fMxoqv*i(umCh`@8boiCJ2W^x5Yzd~O>_(~`2kh_{!WT^zdGpd+^x zSO8|9?LP))-|bfcbCMYD88G{D{{=AnbpI7FJErDBI&$nRo&B*dD&3H0pXhr6v+wu4 z84il!e1X{){DHvigZ>bP@eO}iNJl%zKFW^(fqljw3Cuozj{;`@03jN9Ylj$4%JO)r zsAT237*5NuIfkvD^Y}SqfSL}%4Dp+|b z7-96?FF2V%I#z_vqR0660a7yvFiiaEtCD(*zdpKcP5TJ|z<;>`+1 zVRC^h$6#`SebX_iz!Bpym%!2qm`j$=z#OvjiI_WJ>!cXY2wa(kIb`%HF3sCDR9*S z%qeiuBFrhUba4zf518XIx4;!&#Bhs&eOJbC%UQnUCr`<(ItKiMmVS^fCjnRi`RycJ zegMmHTum9ib>IR4hfsFtT^awIzocO;RN}n?Bv}pH{zJIlePa7OT>EGK;6FBZ+n3BO z^ZDq7PQrf?AnA;M^-}V4fMk}$J^NV|39!^n>M8Y>`bq<(W2Dohze(Rn`JPkUqiSuF?c=YFbZ_X@ zMlP4@}jzX6feWF4%Qm`bPSu`X&0W^xx@s=@048 z=&SX04Q4}};gI2i;i|#I7;FqPUNF`&)iK>R{cifp)ZDBv>&%>#<5DqZe`%g{hwP24 z7RJ?8Zj(nUG+_2~uv)Cxr5K<(tZAWbqwTDnt6iY|T3f8Gty`nJr3*1A4LuA?4E9%s z`o=h8va!qrAb|sKva+ywiNyd;`ZJoQ>lK z1FexdWP9c5%51wbN13mjqnxKKQZ805fk;;=*D5zCH!1y9F{)zKe)VZh8|`^*S6!K| zmVUl|xWU&LZ#-c9%jjbYHI-_v)J)HX1^VvyBuY zzihk?UA$`)jE{{~#%IPC##hE*(+JaAlf+!x+}Ip#mYS7jt=VX{nq$og=I&-2bhW>E zuz8BP%KY5yW@%)hmL--gmNLsB%TdcoK6j*h5Wi}SyE{J5$l$mO;P!o`4UvXPBczd1 zy>xXF2~~yavZ_+`Q1wFfMirqRs6MUs(%jR$(nz$4+M(J} z+5+t%?J@0T?Q`wlT5nyfuD>otSEO47nH<&qs;kzy>7(^B{Q!N6UH^mrl>WTFwjs#a z(YV>jh6VQhHK)R@zh+Ei=oKWYc9|%SvRIWPi%)%6;U~@*eWu@=Wol7*y|u~Ud$x9-cA565?v(DjZngd>Si7!&tp8ol8N5usrq-rDrv9ce zrl}@3bD%lYJkmVbJi~m+eBJ!We1utyB91!>)K{7<&6O5O<7M4s17&40KQPn^Ykrnu zj^csB6YJbp8K?|VhAAWL%1C7txRWYlmEFPLQsow!cf{OV=IMcQJfqm~41xu>Wb07%!O~!2r}U_q3!~Mq2XNNLJzhYyl~x z$EDY#x1|?l4`si}bn+oEamVDRg^5M6nXDD}o?qtJ0?Ir~Fv?v+}<3 zPi25AMAb?apsrFsQ@>EZQga$NSS@djuO?6vqETz&HQnu+37RZSz$J~J_EYT*-4oqY zT~|Ya(P3O+d}92=_>Yk@d7AvODm$2_n8L6edSD@Bnx~o_W`$*(CBtI3EMp9VTV|{a zWDB4tw`9M|TFSNZh0u=mFvD-;brmfY?G(2Z31BW*75P?z_V;yrm1?bOgX$;MZPgQ% zyV_grcVER~w=2rR}F3ucg{0+RZR4 zm$mn`Z?v^^A-W{p9+;Rz(E5|Q3f%?WW$0C4tfOqU z?0`%wH_EN@Sb2iHJ8XTDyuW;~JXO9`Zc~&f_P`vxfuZ(SDwJAfXS=eMDhukjNwrmV zNBvO!Qe9h9PxFb!q4`2{S;K61BYloOUq44bPhX^83>Q?4q183aFw8O>H=HrFGA=dx znyjWc6Bw%CxOqThq&m47E~d4@p!i1Vt?I2Bs2UDib5HY9Q?2QsRcZ}dt2R#CLpxY& zPuFH>PiSvy?`oTgE^n5O>b}tZqI;zKTj#3}(zk_J$LPoFr|T&?->f$qY=(Y@<;K;< zt;Uh2v8FFf8Rli?P3G^-DVA)=rU?4;t!1l)tK_&B(4bbZH?gu|vNYK=*&Nw=*)G|6 z*$wE^-?C77D|tIR)XF4Jk&l&6kS~&dA^%QZ4D)kGF34ZXeHB4avkr=0@bjbL;XhSS zILsZ2ql#0C8;U2Q7#k>?DlJ&-Ny;(GY?z~k%CD3=l|Lv?D6c6WD}PrKRiLV=DoSOB z3`VLZVv#R}thcH5s1CyIoKx8^!R)$0IsMhqYPH&=j#GD6C&3fVRDYtLr(UPtsxDFQ zS08~%zN!9G9Sr4_YWipfYtl8DP}|j-Z#6$?PC#{k);!ic)%*jKT^H6usWoalLcF83 zA850**$65YYroU()b7z<)K)^Bf7AX6m9DRAY1hT;hQowR)2-00*Ofr0Z^EM2(>KsJ zgGR^cd+P`5v-Gnt`>XZqpxS%&hxNDhf9PN6{R|BaDnm!Z5W{f8RKr}u0>c`^Uc--u zpA1!o=Y~4QKx4SE4Pv!;V;^IG<49wMafWfO@oVEo<38g-V}1$J&>9Fat=^vB7SqAGc!klK#MzFESyvAH&K5M>azHfeNt~PsH!mv`}E#2VJ z)3GLIS!P@2TUJ`uS+1~^Q6(-8E?xRu+Ca8Zrk78VhbbZyk%}mUZ&HO)p;Z_aRz<90 zwq0>u@z#33HQq`rjg6{0>I8KU^@r-?SQlQfa^V_Z?K*hEms(EeuJh9Q=^E%7>zeCY z>pJLEI)g4oH&*wdE=xCEw@}AJo@;d*benWrb=!5N@7aws{l}2!T>VP@ef>+ly;|Sb zFwYQ$5Y}iOYhGwRfe`2sf*`_$VIV=;?%ERV6K$yOfWCpDso8E>Z{d6i7m2dk(!b@i zlpB?`Rkt-`(dB*J0b>{QN9J-CLPZc3?{d3k9Tn+{a>ZG72ROuZ<0NyLxr9kbO2iN= z$u6ss{is~7a@tB}1-2t5*rO^_9a3FVby4T3=j*=KeXILWe^39bzJnpdaKdm8jz($J z8Ox2$P4i4EOy8Me%mwB>W_Osb0?Qu6goNvlKHQ~7shccIwn_F}7A?<`Z<2>9wkQ&@ zR&taD%IC^xtO@%gl?EoqTeAcDtJi-9>*xi=N;FO}t}*U4J~cKp?KJ&h;>^D@u5C`P z>q$q#B~$50*;v_R*>RZ$_HL+rt|CQQqP(sAOIcUdQoTd{SRJZ)s5@c^HJXf_jI)eN zQ>>}0X^-g~^efE#6(o^k;q8_+md%z@)_5x6lt8^lkC_k=nQ%+GG zR}u9?O;c^CzL&m@ahOpLL8Eep^O-i%VbZg*1~9piiY&znWvTL@GDpQ@X*X4e!kcu} z=jx{!zc+3)-!^kOgv0qccU9^qtE;fbDDW%p$P@+R`ua;4mY*gsXC4^MDSUPs}ph*xy8E5<7vimw&B6^9hlV83bt>#NF1 z>b>ee)U7o`G;=lIYlds@Xb0*G^lrxE#xPSGI3o14)j9fJvOV%LSk0sIlky5gotNd; z<&_BF{+7oouBwdcbTOx!=a@&MLuTC_mW5d5=PcJPcNhZ|gv*AF_m+lBl~S{`uXK=f zlr&R1SGrNU6<+b0^nvuX)K}J2)=Cy9>nj^1`$~3F<{=M)G;-y$KB;p0ChukxVnS7 zBTV+k>TLB|^4S0F|07G zHyp&iPcXbO_!%1+BVcGdU_qLV3C7;W!N$=rw$rdh{?xbx26u~b7Yyzx<0a#57~SW_ zYGWN!fT^*ml}TnY*i8drdOtBOH*J9FbvM^F2bi0fHHd{LAt+mF{sz0Uqvl)YU$9pR zv9v>2($6x%ve+b6V;c&c-NyZz-2gWZ=cTF!%LFPW@Wb+X7 zF!LC*-TbNfGxJ9C59TXo!TiMh%=`}y3hG*XEDbH;c1s&e2aDPg1833$!PXFjS|38$ zrdvLNvMsWFZ`oz3fU^B%;i?EX1x}8(KOKfyr|0igwBO$(v&zv{Las7Hfr~Qt`W@0rnaSrB2yR z*%x8QLFGf`A4)GME005lFm*e%T&+>}R}WFAt3O7x@TF#>Mu)hdt9GGwm3BS$5x>~A zPZ0>z)&=Xj>YnQY^-c60^d|jGM0_XpXJPRT1}i-L6hpp&8kQTrFOUCUuQ?_jcKIf@EZs0~gUsQUR+fR5vGD8LEu!7WX%sWf9i-!=3#99$-(hXv els=SJN&l3-g0=IMy)SyXOe^EKk_trEwf-Mg?)Ovx delta 22592 zcma)kd0fre|Nr}3l@K>nl8_Whxck19N+?41Eqh`{DBGY?A=eTI?_tI|m|-xHQDVqg zvdcEI%*Z-#gV7ia!|3-s?|Z{{=JUs|$K%}B+0W~|&g;CEbI!Yr=iV95z4P5kjUkQm zX&us(G@@5w|nk|X7GOC2RyOt07JM51Y+$1wVpM>|qTFL*Q}>*zy|Bx0vM z>vkt~=*GGh@-@9(*NZHpFYC4?qiJBhC=x)E>NO*T&a0Q+-0p6V@@VT`#NltcYu1UX z!AEjV789hT-G3Z>q##%tC?UZ#rhZ4Vi!Q9+&!zmYswz4mJEXv~!4HI#(Q^$0gLgHz zaYfE>2#|%j9|cx+h-^e)9Z_EjXaw{ERA#=; zXbjjE9X11O3D^>_2?h-TY?%2vAQZ3;`fUeTLs@d9h*A2;ne>m)MKtp@rw@ORF=t_M z2gVtQGmJSaAP~-A5D0TNK!$KQAP}x(5D2G405XIb1i~qifIzsCK_D#a1lTq+@O3_m z0OJw{fw8PJATTat5Ev)YKYe8BjCjhD(x`k!xzeaTiJ)6)R1qUvY19EmwbG~(MzqqX zql{*yQ70J5N~6xOB`A$5V}vS=y3FWS8dc87R2p@YQLQwpf)TYe>K>z6X_UZ7RvPt~ zQLHqok_%&?*7JO^w^u3j+eUum$AaUHE=Z&dsnm{Uk;W!-K*1KjIfUfVHvU;n5+7Do z*<*vkawCJhgkB#KDj}Md`WuKRl{CHBjG-vane0 z9c!?}o#V`G38dNCEXr0vnmt|26{DZBC|d(*_6QcO45t^GwI_MYnp=Ds>Zvu&Y$jsf4<;nq5EimPm$3v1(^8!H?2b zA>Zl$ayl1`nQRY)cb`dw(*fXSU{(>QP!WB$#Gdn z-5(B;a9lFiSIDFX+UQAX!OJ%1iCf-28z)Snr`rxt*h*|%F;{5gM(5?6Ol{PsYN|(- zR%kIFs7D6HW*zkq3v(`})_0VY&Zd3Cl)c_J%c)9R#b_m@{Onl1;xcq5EW075!W^k= zM@lAibyNxyA{-I6D4w~*-ffs5qd$lFfgG>GekF;tqMcXcY31nSRZdl^_oCj_;{g8LiuXAK6Pw+qWWz=3 zI6_cvbUP41YVQ`bC?QCdb=XVzl%Cf%ZV*sp<3N_UGR*Y6aQp(4gmq&OZKm@egK1mc zNUtZ`9Ng&Yg1Hm>CG0^ zj^;-;tG6=}i9Y^WM_rKBg5Hd5L59+Ik)b4kwuu@pE$PNu+{7M1@$-RnbyTyuL2*d= zVDBL71U(it*=^H6Y}e-065U(!a1dP)9U`ghM-N4}BPsMr^ypf(hC0xxC89H_(-sm* z8^?^0ukL2!enxgrc{owg&RzOQ>h7l-x{Q-lepyhjYbKFA=|h*sMqu>Iu~B3M^^21c8|@lbL~I2v z-6AA)WPPv^0)YM#J?#4aYQNE@1v5GA?Wjee1!t|uzIE5?gywKAu<$O?W*80$*Z z1u+AxMDk);LGHlq1QwKL@N3ypER4SC@{SP@?m1%ob1^=hEm)1LlGjWJVmfxuo4H#f%;ht;t++Rg!ECg#WHECeD0^4pEkX z%+luEVAR++-o`}$viLlNv~f1>F5p!_R+fzLu}QXU7-mWv4U5I^$YD0(K{pSJci}sM zGMTr0sC0N!`NdCc+%<&xPRQb`o#~BExZPRC^7qog!<#_xP9L7^vNc-l$d6WhTa&tv zXh<$o{}IV9ZjNjpx_(4Jdda6Spb!Q*A&ZZ9rsp`}LT4GvUx_ec0;Ymcg*byONS*0m zC+zT1z8>-FY4^52?qg4L?`t=wct&t`Y90AGG12mo@h&4F#>8o_A5o9SkMdBsPJ~QB z*q`EnEPfVomcHVIx141x|6vMUJgO0P>y}a7@cUwv)+g_)s;X$?RF6rIN;`RCtvP$t zt71~#$`(XECQ3Z5uAS7;J zOwm9nr}sx2AeI8ggfihY#vj@?X^fJzpkI#Z01VEIX^-DGW3;LTXc29k3_R>{?xh_a zsC4!fCb6F4-0k81_LKm&|DG@$p~8?)mz0Ij#YswZ@ne!4zt5AjWGM|B+pqDcNj9!c z8u-cyS$z3q8<#=XjBV1U!VgQ@u{ZV*mvgcxAE|>ZYhR)-<{DX9#9-f?lZO)N?Xgx# zSrH9P)&cW@$&>MWKH21EL$^X0tv@c5WKz?(?yx-;j_V*HYv~W;PJmVCj{lR?r!zk3 zCaK6MIQ2;wA6nrXw{vI86bWQ^@Z>+qmj#Ve4-!nGJT0L< zGsSudwU=S;LmEJQW>E8#JGhU~x_Jv3GMRjdsUmIB8*z zcR~OiJm-$&pAIxU%SUp*1MQ!+iCF2otg-Neld>lP`y1JPBm;x!*zEQV?Y-S$k4jt6L#GI=9n1Y5khcy;ll{L2T4lIM;`7Nsy)>Udd__XxM8+CmsZmr?PBMuID1V|7dlE+tTbIL?Ie~C z6+PY|gO6NKT5jWRJHutb>&|#JWMwSQ!YhO-XL$Be`r~{SX90q%SD)lC`!oABW@En@ zO?TzmNCthD+m}o(=&~S>5DC3uw|2<*LUc4rQtR34*)Ir}%Brf0Se{dP+PnJ->tPq?4N_Zh%aTcCU|qb7y+YP= zfC?+EB#nmfVZQS}#klGIT-x+~DUigX7RfnzFollir;!u%KEKpEeiI{U?FNjbL+Uv& zjG*?~x$z}$O_)a>E{i=3IYj;*|&daaJPbV-AS2`=j9 zWxpzzk-!X@donEmR_JIpU0aZGntSR%yEe;GE3FH&>bha)+iOX22uRnjj#96F&tZ9| zH`}<2&TtH{I$aG}8H=CZO#Qw{Ao+B{7h34GufM<=(ef|!(1Q)W{8TzKRonu0utc0Y z)a8;d+qY=Wa7%M9jrPa9ApyOFy2ycj(A5js0+&|s%a>9YDI=Pw!?I?%b44li?fRKe zThlkRm$-gPw{Do+T-@#BCa~pj7YZ1h&8Dh>=>C3;<0zDl*jOeh+d|b}1-mR8?KBAH ze&y{}Q3R#)xM0IqT8Z1`7?9tM_88z>@N%<+3>=TGQ!Nq_#kfNxBp`0Dky{fk#Va4_ zybvU%dovQg7v0YQ02sV|?LA!tDw_H(4@F0ztBc6ULp#B}e@6R!9U8dgXjN5iCpZmW zOejCx@3hoq_H&DRkkQPPqU*kHIe5WYv6?8ju~hH zy6>Ej{2I*D5H;;R!h~6mu*k7n!<2b1_Sm==yKS6XfsL~v+(vvHU;#oYLJZ0WA*3S+ z2ygb#ZCjhsvaRY`6??@c&EHGwZENJ;cPvgHYhoS_B!t$W6Wdqk1@l-MzAebRa5oT` zhP@;_IfvM%EOwX9*cOEIhIQM5eD)<_BGE3TtP2i>Ot=Y~=(TOyc3BwdA!8tfE{Nv? zzCfshxHm#1LUV-f2w4T@ZyQN)D&KoYFxf~y+Yt!cXYGz=ZM<+ymw@mJJY5g4I$aG} z8Osl#_jioIp+o1L1EU@zZ7#NPPXS*byg?vH*F>m`z{*%?h|n0JIYKZ(TLhLbN6^xT zJDYY+IbdUxf@Ji7qxZ<9AL5>-b!5ERfsD5HXm@D6AY^4thv=_`ns-=11LW4T_i@RZ zp_0HjTTHuu=S#k%N#CW_I)Of6z~mpG55D`Y_co06%o+9qR;Q~WD`WYk2zB<`I3I*y zgr4X{3pgKP14049F@);~Jqv<&c@W9vg9Xanghb!_!Nxs7_#2`2K^y0X5Q<w91KU{>HN{6ed~m&^I~j;=v_; zT>zNWA|#@MeR2RcSs%o3N*YAFFZ83*qB`_a;WZLKcNF=f_ftiFlFu*DokdMZ6Drv^ z**)QyxPGy8*1lkAa9aodqw@lgZ7A5aPeI&Gr^Ffo^ilB>I6K$&>&UkS4Gv@wy?B7s zF!Rk57)+^k?5BjSF+k$gBdz0(C#|kMS`Np;Eo&Osrj^jPpLp2dBV44Xe~5QD6N9>- zMYky7GHr9Pul{bSjaz&i)+gX>gf1s++!%xj2>5fuSy~M@_Q$!nxw*Q+a!6u#Gf5oX zcd!Re&*~hS>rI~>`BS1zpuZmFaZs6l%%@4~0ye|kS(oim_j04oYhd#$!Ru61FUhd+$5>jsVOdl#QZ7Qj^o5q*6Y_W9(I*B`hE{5Wy zJnE)B?r3g|i~YDg?yYFnsS1{tdJ`z;Z6}7~x9-WP`r?(9m-EWX16Njb#7RBLC|GlH znWQdLzx(p>lXG!@3N@WMM@kCnoHdgMDc8Wi=Y)0!jCW4hVsvWNIp=11wu?kwISvT= zR;76M5*|?Ld2d`q2A_{23+TA>f7P#T6<4c1vr~S;1iR45WqsuvEn;q9JWS}*!adk) zFrm+?0J^f%LE$3GA#q96Tb6MZR}yc^29Xs7{VqsJLsv6voa&S0Ss!@)gbpa3ad80o zoL;$@OHvAkUQ!V68w^?TBzq>4!K_=Mv|!8SOybY3zp~8i@Q_Oj>5=SO9O4(j?PFDE9HMzBM?&CG( zu?&O&^Pc{NZ^DFzJ;fjE?b!yDJSXIa0yJgkPc;8lTQ}xg#fQSTYE@U9hdpIFa+DfDX7K$-Obt+ES{!yxjuofw?eKAM-SA^C7tF<$2PYFkVNo|;?7vN|u zTJ84EQNpedm7-87P^?5Hw|za=L#YXaQ4BA#mJrm2hTiU>sQ~*5Z(BJf-vcn=P+2ub z#jJ%Lw`n&~?wkk=5+N=G19z`C^W#>xXuUfjO`|`~+S=iLt6^xhjppBOO=sL$L+(@G zyUGwo#N6-zXTOY?&4V%WIpK43QcaTS!U8(^Zm@Sy*ngIyei+?xHw@D9`rSMn1C6`4 z0KYHqjgWs@1)he7^`|r}>N)IFoUp^2Q=S!iI}7ZNZ06!A&khkRbiw^a5?3W{{Gdfc zQ6HECfkF3h;ro_VRYE+Cd*IhFr#Z6RKJqdSJfkxn^dm3mr3b-r=l^jG$!<$?-Ry^P zw-*cN;f%1?S%Bl*z-KsOa|VCF>U1?^Wh@>@qkiQj`G3-1er;mAn~7oL-s0??VOsLm zF-+dvKW*G1XUG7oPFF)##^Q6SUYJGZ(n6u9L^-~o&O={9`qQA_j(dsBu&60|uLEXC zV6&@3|Jd$F6Emd+tsku+Qjrn`O;FG+Txi>rUV7ZhJ>|8iry?nN@>QEnub}A>@)7nT z96}7VdBNv&g0(qKafm9a(SzScuOYV;XBkMa({)LzHa|c@NN=L*i;e8Deum6;*oaNFl z|JATb;SN`ljPuW*S9%aHvYKySll&(6?j}R2y(Imn1DkK$Nd&{j9oR%px&Ci#*8Qu~ z1ZNH4qAbZdDgAf3>N>yEm8{@H>yXRjBwtkrBq=E8pL&yr?={~C1p`x*|a|GPZZSuS1kuZ9B)Kk;HzuRJGG{W|}m#ftb^)@ z&N`@`)Cg2>TKH`vP<`Ou)BnO|sC0#+*J>VE{=SBY&40>Mo#i5LGTrCook4};866@x<22%gm!sCG?iIBy7hae&&Kl6z}MBk(!Lp-8@)wL+LN322h=h_~_*+3FjpXsYgGqPNlHVLmavDrRtK6tc)Mlq?@MCZDrdGs29`I9J zk!F(CeR;kWIVtfN$`5Z%#*kk8sn!^B691+(2_!@LW+9|MdBIN$A+6B=x)9Q`nMoba zW#Pq2T5Wd6%8qN}Dsyh6U56#^Dy-ovLdYJua=(N4<5l6@6lWL>Se>qhtc=CS^T*l% z=e@jlC{bYsT|$W-B*_jX?Z|$9cPJS_#_&FENgFb&(AE~)o_xl~wIkalEg$i3+L2U} z!KbtbQPcQu+7oka@lDf(WS=CCf7+hd2*=Ah0A%nJJCFeYXF8C^Zmbe2JnBGhqQVIo z8Hkb~IZ0|M+M6AW7o|Bc+N*G>%UGijoRCt!m4!?IxmH@p z7GmekR$$VLPqUIC?Tdwt1fBILF^~{KzAs)`dNRwr+I*vKxj|CULd{74d5xp8_&{c9R=Nv^(>SBEZg-dB@<7;woG$ zL?d}Kkhet;AO0HNOp-NxKn$^fP(x!#6Y?YfSqw3`i7yq7&~;jGeV6_iIw1&`_lqI| z;*(}J0Ztm`A;t#z+Ak~$55itd%4WF%$Ym$)H&XqRxg;51r!&#Jl!Np5iCu_y;o#21 zD3NqnCFq>%%j(^dW$Q#ZreOI+8Hpm9viR@u7gRz#)>to3{GLzpN zixDftkCp=%&(n*PhH3=P}`T0e%uYay;KBiGxKTEaj__k%}0ogmnJ*?qoSu zB`Y2};THdUJUIy&Rn&uw3}8>nQoZcq?s&pfL)f^C`CQVRQ|~a?C5%dVQ%|tBk)PC) z$Q`ftvWGyl+m-fuS+DVQ#GNIg87t=ThkKGkSm4ZF#3xXES(9B3rZqFiUz&ZEMa367 z**~(VjNjLbG$T2Dc`vX3#`(BXn8GhwOZ@mty-AvP z-v-7)k6*BTg<{xoil+^=K-X<_wxnsTL!SHvX*&;I|dLbA^H3d1Ib7X z^yO!y6F+tks$ZV}zB*2K7<%V~l)|%vut&)p{?TAE`hShIY6zNcn)|+Kz3P!{{69m; zKTNv}{ogIOCZgqXT#Pws^1h{vuR9Dahx2uY|L>OjhNETnocApsR?{VbZ#sgMld1g6 z5oFx|!glLOHl{_%~z7T^I$olE?${HGh08G*;N47(w47Q&Bj0 zBC1QCrSdZ;kx|vyw3&?hUX%XYeSYDh$*lVy`EOG{bl*P>)$idN#Yxcj-Ded3kjAPn z<8Ms)P(61ls_*&azt!UlpG;-d!Bf*eRNprp)w9R_w|YQf(;2L~f;WCf5*@g&C-J;_ zCTUA9^J8a{SW?LEoe5J#q;gk&)GX4QT;%u9A_je@(TpY1G>f{s3QbnL!yymu5AayD zZ?dQ3%>H;M7cRG^&>e^P4$)gjWQHYt``KjFf7v#azcm}Z_v6*+Fl-v}Q_`Vhv-y4L zPze+GU(!ia?}=laT}g8eRI~JsLeC5cr2qDpPLA>?GtpHRUwaNLF(p4>4&>M-e$^Zj z<3DccJBC%(t14;sN%RGyA*d=9itL;Kj+uk~@ZTOo`SfgHSj1n+Mz>RWpB!L#kMEyD z0;N3`g95QZ{%w!o{p3+_bUN|(K0fTf_(}@*=MWzz{6v}5cpm8<95m$p;y6X-IiX~b zV*}0ya*JXD1PIG{q@~1T7QcHQ32OFWCc~c*8yM$80Xaw3SQVUG?0kzgJ_ zk|;~!lc8sYaRcAaZ)>$IZO!{EB(1%>Lm@i{Ww&Ocn0>_eTnNJ6<8v31;5yCby{mF` zvxncekc5$W{DXyLf5X#aOQx#pirUdb*vIc#Bu*!8FjiHmj!Z0Yts8YM$;Kau|Yv-n856ZBw+}@B#-o!yllz~ zdFWt1@4A#I$w*$m6kA~$KWZrnZ8|FeDwm0~P3%OzB&|RArJwyA`xOrJ+n2&2f?!=r zwg)9{3TKxn@c_)Bh;hl%*G~)Rf#GoU#0K;i9`QdeBV9>VVLeJ35O)th^nF6u%!e!o zYwh93E{6vk$*)=tm3yB*v78)i#7uZ;_C?5AGbg^QFJ;jTe$5Kf1v*_=LE1WBK(*fv1Jg8I$q>AX3@%UK6WK(7V={w5sQI+s;c6vEJZ-rB zXG%S)Ofd4xR>GMH=g+JpjT?7zG^zl3(Fm2W?6_g^JYM*2CD};o?OGeo^+&k8KAb!D zRpHLhNe=PVPsetF9c*(cwTXu$`#7u#yzs88VcK#0!PTTOzi2i5HZlI^e>Y<*{`D6m zCa}&m7}U(Ws0rM%GuXm%c6S&)csgox*xw_*gsJ|R-|!`NYYKnwOR(BwzWy5YeS?o! zL$q~T{=)W>3)ELN0@KUdcyr~nT5L1c%K{IxZ( ztS9ns*N~QV<2s`)tU&BX;SWA+Eu76fe(qYbq~6u5m~*-PC+J0gVH@9a9ef%EKX4uR z&6}ULjq%gp>(Sz_g*TJJuUSvh zfnU=N*jQKiq7CGf`v4C#yDD_#7i=Ugdftw3?wYi2Y*xT7GG4e@UQGxIib04&A|XbF zi-}<1Y7_T`O_&2*9Foal>Y6a-KO4zZhip>w+rEPBHw*0;v4QhKu%p;lV?JmTIo{@3 zEeAC*t_g3%KtZ-pY|q(PU~B#g{3#6J8*V18+izsmp@SS}r_y=(#3m+`8^HF7!xx& z)0uz%H8~DbWdAqBzm*zu`-rl0El$cxbC~`TMP($T?l+_b>BcwTO1z1#P`#DlY%`BH zZ^HtA&zEl_0c1J8koWs8*4T-?_{+5)sDUpD3jP;m|f@q9Kq+h)7x{Ohr3FF9k z3?3l3^HJMLOv78a)%kc`V}-N)`t4*qhN`;*I_JLj{dD}Rr<2Ja*g=lg9mHXznP8>v z4TN}p(N5B~;U3-p?M)?Yi4~w&>Ium4w*iaub+=O`0~N|PR!EA0;^aDR&l(ofcTl8VE`O2pmGu} zS3tt$;;Np;od*(ZmsD#HLHU1&P7r?L`2y0yJ;*UwUB09M!fOFvV-J)}B;R=tY0*03 zq;qND99|U?#9pO2v0##icd_$vp261ZK;hCoq{e$+>(uu!QU~+0y(BeV_ez{ei}nnk zRP_g{o=1+jAJcj=R$$~5jA!4WmNff5cn!lnZYNISv^b;gjs%-gjJP*rgz-SPV}0oI;abd^w0oo~Q_0#MY6DC&f^!1`kp zRYGGvp_oj=SZ9mL>WE<6vpJ=b_vpdMpnqH4;;Qi5DUV4DEO&{#!#RTE=XE;rWWP;Lhf-&v4cU48~c;Hds z`#P!rs*@nrVH1xHiUDqT$aqe;CF04ps6)gi2xr;CeoX3`Ar5(UrUstp@dplw#(vWu zuurex%)&Xzrqu+U$e;Ov9P8S(Qlw{)^5P-R9U}IN{UB>oCvK5K*hj?>+QQ>~Fz5OL zpRYipkLenT^NyPbMY@Xa{(?gg`D<|f<{X!ORUxvGo_8rBpVS}syK@~QiV-;>?C0l{ zkl@g>1tt`brrc@tbX`7rsD5L@AxBV?`{vGTv4MEYC)&MBgR&E|cYbZ8o*M<2gn z7aDKP^4?H_i_k~qy^^?=IHYQ)=ZBppBP1tueCS!Ck_^}JiDz+o8FmIL@ixEx44DZ7 zu+3Qm2_v73o|6pWIK~_=_Vo5TV9P>Uoo+bOePcCQ4&Mdiyow!+9 z>;%hGr?Y4|i?(I4fL4gLcwey*i;ZM?by;jCi`8JU^(^*UiC7VfJw+_*s4eLxOWa}E zZ&|FI#e7>Mc8`vREvO^*~3#ja?X70&iA=MLhE>-%&rc@ zCv3g=veR%UH(nqOC0{Gp8v7KUy+Axj!@JPx&dc9&#}eM=A73O!TuX&qf*E>~?{SIv z)Qe&UZn=Zbjpc=Dm&gnW4ofSqkTDW-i_wh<^Z^1Uj!TtoE#`8ahPmK>Wxn=^mpIIQTk=gG`%x9f#&!_&=}1gAL+4 z-yq$PDY~GyZjgR(AaplLOWa2ex(UZ;2cLHn2k#nQ`!mrtwbTazUfIvV*%X*T=Gfg1 zZ(hOMeDg$X@QqE_saX7mxT=cS(Zht-mpY1(=2?!;~-i6nvM- zH@b)O*+gD*k7xn{0G-ysrdgU*10lWS`!@0%YIbzXfE6)tqkx$4=DQANwZK1!?w;y*nWL0N;Z_ zuW-&2kbQ#h1<1b0_hk?t;rshWq;u@6`T%6G@9={F+2`vafb2gQgaO8P25!-8)B**`AG2V~!n7O`@CV|sw);{xC&D8!C? zjv~!&0nPxj+n;j4e88K4mHooGigZNs`hz(EO9q1EfGLR}IbgsrkecNW2WcCl!x7;e zdt+}vupxvZY(l>5>u_#6Ah#`?+XI-g9f$yy?F{Ei0N2A~I{}#SeK=Rf%8P&q%P)op zRe^}-58>QBz>1P^?lB;D6bJwY90vk`DJQU|ctw?es_>Nv8aG$8GFmHZ1mjcKw24bmGQh2AKWRAo&3|rI6kM)r>al8By{P1$#0v`!N4Fs3M1wO7b;voE8N4j?H zw?Oxs@eiY~DZw<-RAO3bzGA*^erSGWu4`#vQCaks3QMI$Vs*E+v9`Bbt!u42tYy~A z)^h7jYlZcmRj@v`R$8B1fq4MOsR+k)k`0iZm;EB+yG?TqNna*kE8iyHEiab;C_g2? zD8DYhBmYhQO#ZiAqNuHCpzu=!Dk2o!6ay5)70HT8iW!PIiUo>giq(pZifxMBiekl& zic^Y4{lucn!1s%Ew(M{`VbPIE^iXu4~+Xx()q zbr*HFb#HYI^uGEY`r-N{{T}@z{Tn?oOfzH|78_O>HW|J%+%o)TXl4vHZZhsM78@TJ zUmD*U_n7XQ9-0oDFPN{IYgigu8e5(*lE~6Ih(3-RAzLB;MSfTArwCQZ6fVj}z;_C; zrOH)Gy?V3ORaaZrT9>Swpv%!w-LJYi`a}9x1}|ef<22(<=DYH&B7(o$sk0mmm?JjV?Jm?Ik}U!&-v8l*~8 zjZ`J6#;a0Psj6upYlbRYHD9$*^-R@5P1Wl(JGHfS1-elEdi`DfCx!@PrLmQ1gXya2 zsVV($)7R$v=2YPOtK~0?(#ptj0-fi}evn0~hbCnb*g%rdZzkw z^%nKF>U?#Px&dUqsKVkDdm3t`KDHMtXMSn%6VyC#uZ_S0~Bj$S6X4W8UN9&(fZav3s$Asp{sBD#Nu6(t8o&2G^ zE~MRb#cYLC>7{I<3{tjL%9J`~3<$kTc}#g4bK+EPs#dCHDqgikbwqVSbyam(yP}B6ueR@K1`L6-z+wRzT{4>SKDQ|6hWpsWa7!)SK1Y)&CdUGnz8ZWlg!} zrlz?zNNdne(57m$w41ftv?ba8K!L0eA7Zxo@u%1bJLd)shdpS{7Z;jFkiNmTW&(_-LnXm z$54LHEw3zZEu7T_O3=gVY4x)DT3cAPReV_R?aEn6_tv<%0bF;%C*X`l)IIel;z4_m8B|gFe+ooEX@MV zD$UoL9hz3!wpzV*npUBY)9=>@7=jEThA@N7pfczTy)fl%hNi~AbYrq{g0a+Sz)Dw` z?whzW2QoEf*Pw2WDo!eHC_1aQLr(v#l7RPfw5zo1wC5pIZ)hvD_q9*7Zy~uob>noi zb=kTfq5aBrfqJE04^d;+uh!@5zt^7zv1=MU3{4D53>|0q#ZYN@X)u|>P4T957jrGM z-s}m6ina8xytDX&FfywVY!z?iDmd;H7^_rvMs^Q^$X)Iy50Q70_m@wW&yp|2t|*q5 z%FlvQKg-|AYbokMBgv38{<j|}MVA3CU!q$HPT#3Ju6v-9=xgi!^k#i0eP3|;Z2e+L&_ex>;Pd@w_2H(W8?G5lkY7#kZyjU9{;#=*wn#x!G|afNX! ztdm2=Q^s;wD1RDX8C^`CrlzJ)Q~N(efEg4{BLw*$%N?Zb^S&d1U$1QX3m0(AwJC&T6qn zTcHjdT)Iby>7(>r^-@C)49@cgPvbaaj&XtUvhkX6jOmCe%xpGyGv77`TLxJ+ zLreu*2U$167Uyh4v;;T7IEj_7ke`uzD`FwMyDOh!YXqo*RV!3yum$YutLm?zPkMt} zuj|zik>48j8J@!ak4QHSHc`_)Qy=p{^Lq1A82Vg1;ranr7n#3IDRYt6k~fkk%dbMT zRmnq@@05L2nNU{SRL9l5VYn4*R_mvLQ3s_>I>>qTB7?~FE@mmhM5LfmNHW|gK#)t=N8Bg%ZedK zeuKg4haI~bEK}Ri(Xbju>Ne|LE0;$^Tb=6yi)er{L;0K1q%vyeVorZ(sCEH1;VE-B zOK(e{wV(A%YY9|5;l`um-LieMN3v%!jXWG==jBJ_=j7KQ_MgJR@l>c3i3+=79~l3o z;*G*zX@u}fhFuj3DHX3ufRQ*zwLsNU^ND7o<{GRi=*D5%2JirC8`Oq9#u>0@uUmqk zq8&3Q^6`okMXF+&Vx}TPkqsHSP?4ut4nOI+Vgba~4BY|UHiL)J&%Dsgl{om}H(8{- zwklQ?3fp>y?u@S3;9?wQo?xB<8+oC5jd>Fm=a%`Y`L)?E9d@w~OqejM93nj2+RZx0 zy3k6k2dwAe=>5)^wv2GoAktlBb!6VMAejNKUZN~VW`~)xLslZYAiFAiA#;`2k@u3% zl<$=v11;nVEiBE^iVceIK!;0;S}=Vgl%18IDUT?FRGlz?s#>Gk0ox+|j!IB9Q@4SM z76;>Og!&WpXX-id5B8{!s86cTt8b~FK`=A1oS;bq!>xqnd`Ro@6l>HpRTL8V0+x)^4_jNWY6 zpKds15Dc#jRdBrg;d;dwl&GhR2|GCqVu_R1(Rd6;}m0g$LF zlf@Kc>TMco8f%(tnq``2T59^jwAu6>_Ra>DX6Ob$2Llabbm*45UZ8R;ts6RMD?_2GtOK&n>B zv~rs~NuDa7E?*#D27S5}9`+0P)q#o_c+sDO@y;tADcqIyV9rM=rz-8r^YBfcDqkpT zs9M9E?+MpfuGXtZsb|AEzLc(RrP-x9uDPo5({|GSs_h8}G6Rmte%)c6D~QJHdBah| zX5#_ql0~LfrtaqD=B?&q&=EB)buINRjVv837E6?60Ay&c<#Wp#%O=aWmV8UG<&fp1 z<-Fy(<(B1v=BS%49#m-nuLMP4`SqZatC-l{E-QT*+`lF&F_e9?w2Hi|3^tFaZhV)89 zU1Nw*W$b8-HTE~ohZ^5({ML98%tlN#O;VGW$zZbLlqMO