From 9825e3dd2eaea4e267054adebc8d972e1f01cc0d Mon Sep 17 00:00:00 2001 From: Garret Rieger Date: Wed, 26 Aug 2020 17:31:50 -0700 Subject: [PATCH] [ENOMEM] fix access to unitialized memory. If the serialize() call fails to write the object then we can't safely read varstore_prime fields. Fixes https://oss-fuzz.com/testcase-detail/5137462782066688. --- src/hb-ot-layout-common.hh | 5 ++++- ...-minimized-hb-subset-fuzzer-5137462782066688 | Bin 0 -> 76354 bytes 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5137462782066688 diff --git a/src/hb-ot-layout-common.hh b/src/hb-ot-layout-common.hh index 3140dd632..6ab950a32 100644 --- a/src/hb-ot-layout-common.hh +++ b/src/hb-ot-layout-common.hh @@ -2537,7 +2537,10 @@ struct VariationStore for (unsigned i = 0; i < inner_maps.length; i++) inner_maps[i].fini (); - return_trace (bool (varstore_prime->dataSets)); + + return_trace ( + !c->serializer->in_error() + && varstore_prime->dataSets); } unsigned int get_region_index_count (unsigned int ivs) const diff --git a/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5137462782066688 b/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5137462782066688 new file mode 100644 index 0000000000000000000000000000000000000000..7b049bac2cc8d3c8f6f39b75942111569f412062 GIT binary patch literal 76354 zcmeFa33yaR);C^tZ};t_vv!iszI4_O+0$7%VNVDltg6ut7r~W%$(YH9Osnsj>Jj4hD}?CYFlO3etv9@MTeFbq zK6sisaeB+tb-(;|u#ly_2xZnG)2air?p;|R#A>`3bLK7ST;BJ6)DLj46GHD@a9rn# zjhC;O3jP=Ie)__m;}^8%ZoEba87su%nuT~@+Pm{KAqSNTaa-!5uFm<<*NKybSO)*1 zaS;f{M|z(StMb~#mqw)R$A)?xPmd)!7_D*|Oh+~dKf{K=Ou3oN{NyvZ9 zQ1JVfb}s39^4?ds3vt5tLOAy=U$(OM&)X;eU5Hb5BRwfX69KbHKB4=BE?h#S<$Lmz zJ^7x1yr6G+Kvq1hf3|O&zJA|Y2rL2!@hWY(Foa0<1R5I~Jc0b`3~l-T3vz0Gnr52B zA)COlP}IvJAs!PWk;P(y9Hi`;7%FDT674d?7Kc!hgL-mmyymKFYz&S)e*W<;nUr6V zIjwDEl(xEWPOjY2_lJ_8KPR?iX0;W+_PneRUc};skNkp?hK53KN@{9dK8e$y&3C$; zeO)=l-L;35%QJJTvt`BW&S+<0$~os$cMQs|$$3&(QgS#3X#m0{I9sk3C=uzQaJ?Ly zM;5?u-#=u2PEC$n-S>_WZFFZ<=gLHcVf!&CH=>X?eeY<7Tqr7#%Y`IYePd%?U0}H0 z&`?lP;;+*Du3RlGH8riUz%aZdbFfa{`b}b@J284sa#oVtSx}Ijo>(_+WJ%4CiZo5v z&MF&GSTxN4&4clAC%O}&;!;w*t_GQ$&`>%R+GVg08Jm;X-7OLj>;zbH2|XKY2yti1HRwu0=|JXgG-IkdjD$+`J) zwOUeI#sptMcGQ9>Z$`?f99OJUcj^=~{x~Ls%Fxmjd4oJ&Btyq?HCKO`)}tVO! zk)nJoqjIaWtH+GZkXcEA@l8~|+0{A2j%X>5Q+mRo7$V+E4{Az@_$$Q`^rjevh2A<= zyN7E^7A$C*QTx}2%j*{fk7#%pwMu|@3wU*rC`2(h{oy|3mJ2WZNcrmS?)RsoHa6;O z5gFwv^n~=>ljf;uY^+t$d+G+bLFz2zf^`8X`56celVzZ7uSywyvQt=&frwxSS6>Fnv*! zC0K0A0KsIvC0O^?yYK!jF;wlKSPhZRQlORAwxg9+Qq)0;WN49o(A)~#a?2r$(|XQE?k0liLg`%1gOV$=qR=a>z}k-1oJ-Lry^{SD|IiM@?uj3|D?b zzTJ%0j>E zo`O^*A{Pm8p@+Md5`ss_SLGSV*)(eN8uE)vO2PySHa0@6SNkgDougLI_T|Q85AlyH z^~dPCD=?#_d!IKhEkAF<)Tt#C{LQ6a-4$mft2~jPA=DD#Lj)AtTNDxX+vGuYpJLejoO#P$CszOV;m_7u^E{$8PwbD@5}IZ zm$eO&yYgzYj~o^9 zIn6s%TqV`YZ;{UX)|Mcs!?rT$JebWKTI>jz)TQHS}-+rsgIwB7X zoQ5jv=Kob$H~+ex0QjWsOz^(7-JqdgowaS{?Ud_PFng1v3`Bi*o3@ zMYf`&>h8u6_aim<)1tWkEB}VTsNK>XEvRjw`iYTFV`GV5<{RGOjyitvKV%AAdC?$m|{*(j6PYGLaU?Fmo`-SN4{!KAxOn|5< zR)fa7mK6GPS_P!Qm_?Fb#jUV5=$*AlQE;mMTG( z!w@wrSHSGiVxWsOtKn7~U03+5#v`wX?pY%`8j?8jYOoZ<7PL#$QZG-}-tpXiKsMJE*3$H!(Rbtjb$FE5{7S(uTOm(rZS z2|39517#&y4C;+6ose(BT@Ic2@1^>W0{u7QSUJbB8)C4PQ)ZjCPCSg9%2IO%9$TZ& zE~{?y4a_Akq;-R|h8n}5VJi;;Uv|4CPb~&5h;frDOtosi_M-eACEZ4i6+#f& zX1IB_kesXc&k2K#Rk~ltY&qB%Q0iES1`5f*U@be?xXb`fC~GnTrdW#}x0Z9_h;sPN^&JsDKV2K21k_I@NcYlNbIs zv1(^*-f1`dSgK#&6T=P zb87ErS7vmV3>lU433SQ3Qg`T=%A~y7rmVHPOHatpcjw9GW~w$? zT!48(2ioJ45O;++SYIcbsZ=G#|Cj*i=!>c1(maZ0PmQRt!Nx}PJlbeauyxGn+{7qX zR$*03Moi)#rfVzqpI1?xtUJ^5Y6j=UYDs04<;gNCCOtl?v@9(vF+MtW#I*7u9gCCF zqm!$mV#~_&^o$hU6H9UT?b6;9JE`q=4u~trZ9i9H2vCBG7ABVVRNuJ%7~}Prj1*5! zbmn1oM<1P=8J9M>ykT5wtP!1ESUr*@l=t0|l8)$n1^c-s$v~rP$DIw(SJl!??*QW-&{)YRHEYi%Rgh_1E&6XbdVsQm(FPMpcd#>d=@fZ*pFo%T=F&R77iz#F$VjmLL_oG|JgiISuUQ zoIX|P=6dsONb)Gw21`V<5LlN(cBWDmqp3lAgOU$=`vt^G?mFv^auB7M~2c<09eN;?hV)X1}-Ajd+=*&!> z7ZV?!F*^a72T$?Nv=kzsS1>Oz-w{3HUg#^v1b$iqq#*#eipazIMrtsz6j@NxlT(|U zTbpBHU4D9cK0RY|iKDvbuXho~0n+t#Uio-f+Dm;6 zq!nAhJ4f7${5*ljcU#Qya6`0jO4i|(FuyC=VE()09I^{hauK2VLCF9o%_R@xd4k;ZXMR@lw0S1XyGwSM+e==xs1_p5x6QpJ?~}`X ztK<_lcb4ojUoZLAe7EFha@&9A=Ox%S0pFW`hq=S1!hM$C&GZlbnEY9PCgh|)bC+dC zqPfhUN<8Kl{%rf5`KiCa{HvcPfcytHhAhgi!V9^-@z>j7hvM4nA8hXRkF~gP7qyZh)sShxwy_EuK@u zNC&qj_)#j>A7nYtwuhUL=Mr+`{U$tH>@c*Fn9JN;jor}@7(-}CPoKqvm^tztBH zmm20nrLp#V^Y5ieprxB1mgbrtlopxqm6n+gl+wgafZoVD@p0);^PAFEj+b=g;nEH+ zuP;j{G2c(6hg#vax2~N#xN^!d!^@}TXH?7{l{_ddD>f^+s3E)Px~e13nzi7j<3>*3 zG{3cL6guVHk_l~PhmI~w%N+E=F*Sz|8{9R%ym9_HGsga5f>FUNE?xQ0-nh; zJ%=5YJ~I7;bl(Y{6SlRV(S9fXU~JpAO~#%A{P_0v@#8ztXH(Yxf_Xs{((Ea0z?iDebIbI? ziqw&^JYXaz_N_t0oHwHpYdW|Zc$$f5Tz+iPar22z(Hm%sx3%}pySENdNJ)H2GCeqH1v1r!!E2J-uZ+$59W4YvF$U}~7rN78WizS@at zfu!o}oU*}tPy2}Lkf#>d^P^o*s?-@W=?)iUVe2^c1CVS%AmZ0%)V`T0W!l@7^otSBg~tSl_3pm5X09QkjpPWS|> za?p>Qq5Sa&(;#$O5F>9cyEK;{Gm!#+Fs#c(PNhz29N|ey@{DL~s~s}9wykkQVoFLP zTxm_&Lu-0+YjSdGtR8nxaAaC@LBZg(k-_%-{C2no7Zfy;E76l*mfKid+?ba~n2WJ! zwRw?zRQm$!dR4S~LveNjXCar0N$0F_N2DNDR(UbNZNSEPeQk4kT3}{# zMUHA=9hM3kIiV4-FKJ9$Qx3lIxf$(?>em zpyMfs@iXm20fom*vw3L@J=FJE*(=lb|y{&(FK@j3GQ!J_4_>(`c-2+GO;-jfe+tA*#5n{utF=OSE^Z&KzCaJNBc6X| z6&Gh^78hqKlj41@AUms|AS=5-F0yS%ZGpHCGQOvk$VpIjk~6BJs-iq0y`ptkF=^-uZI~RdXG8Dj(wQkx z-T>terp#BAC0e7rSNj+|3l!yOZKQlkdjph3in0=GJAcvc2W2r)kft-V>GCS*zS7t; zWQsO@^k|CVYOPXk(0&AOkMez|nIRX0(q%)-eclZQ{z2eZzY?lUbk`&OGr&k zNW@03G7nGidK19sQRYnIJ3GyrL}p@|cX&ctT0%mqHzqMPH8DQjTcO-@yh+JkZ*r1% zi8q=5yh~FpOKRUMsmV#n_@63I_9mqyC#NKN`xbyVB?W%uJ*i1#OG@oq7~(t04y5nZ zUxy0{{*q`r#_ZIFiNVkYDn+y{#veN_)P`*uy_MeeXm^WYdXN1s;fBGNYj^jKUQh3~ z!QZu(Kb`#5U)Z4ytJ^x7-aQF_mstMjT|(96gSERG*7Lg~wMKCx=^75&1nba_6}oO* zzG!*bYR78rs58&>FJ4R`bZPgAtMt*~TvyFoKCiOJ(WAY#e0koiS;RF_8!7IFmSUWp zY}a90U{!TEUTe=R$;(bm_G)c1qq->Ep^Z$-ODisLl#eKcr6iv$2(d$ZR6L+hpjIIi zA`SCGt-`qMQeRG@CtV+{53RQBX%5)6M^my=a`TK4ttpu)xw*~}qp*B17ps(;QD;cU zMR==Q7pBi$89rYIo;#JPjkZ@dY!e~P*0zc3^v2%~sXHStF9Rze578S6(D_e33{YQRU?MO{cN;QsZjmpofI&mGf9VaoK%(#y6 z6vk5-Ph(uqcsk<-#xoetWIT&;BjeeO=P;hjcpl^Vj2AFo$aoRs#f+CQUdnhGK3 zFkZ>HiSa7Ns~N9h+{}0_;}*v27_Vo%f$>JhKQi9L_$S7j8UM_93*)VfTN!U-yq)nc zjCU~J$#@sz-Hi7z-phC&WPFS9ZN`5xzQgz~ z<9m$%Vtk+R1I7;-|IPRjmhVfg*?-;*l z{DJXD#-A8}X8eV55940OeT@4V`xs3^O)yGEjZtTGFgh6xMi*lgV>F|iF@`agF^(~w zF@Z6W(ZiU;n9P{M=w(c0Ok+%E%wWu9%wo)D%wf!B%wzO1<}(&B7BUtw7BiMG`WZ_Z z2Qij0mNQl`Rx(yGRx{Qx)-nbd>lo`98yFiIgN#j#&5VN?hcFIh9L6}DaRlQ?#umm_ z#!-xIjH4Ob8OJboFpgy$$2gvG0^>x+NsNauPG+3KIF)f44T zM=&1AcogH&jI$Z%Fm^J|Wt_)2pRtQ^0pmi(MU35yiy4n$>|tEOxRh}j<8sD7Fs@)+ z$=J(yEaP#Es~A@^9?!Uj@dU=Tj3+Xl#CS5}I>u8NPh~ufaXsVdj2jrwU_6uYEXIwD zXEUC|crN34jOR06z<43!MT{3SUcz`O<7JGOGhV@XCF3T>s~E3lyoPZz{ zGzoRVC>b?IozcPQWHcCEj8TlyjBdsl##qKU#(2gA#zaOBV-jOBV+x~}F_kfmF`Y4k zF_STiF`F@mF_$rq(Z`t2Sio4wSj1S&SiUsY-9{FHZe9c4rUy}IFxZ1<8a0ij3XIa7+V=fF}5*|W^891!`Q(%mT?^8c*Y5g z6M+taAug8dWlb zQx}(qs9f)Ls`t7$M*C3latokS3!uxBYhEnPcRKB{=R{nDxZ3a4^Q<`CGHu4Z!}Y>?E_Vp#eEN2ff!Ud zgh5pzoH~!G^O>rf$12_~rY?w}E@bK=qKfxJyxmM)%)F4d7siqZ z_fmGx?wg`~ErVMa%ZVzs_uZzbe_-m02xe4oAOaVcaSBsUW!@rl1E}~jPJ`P43pZ$J&XQoO7vq3ZY(TT- z#9J5M#|sZ^WoX)>@CD>BaJHj?iw741K|Dg7f`@Ww^E!N%iAFJiGkH_RT(Lr&igQ7? zi>JifVz)G8whYJ)r1&C>A3oN@N4WcRa*OSu_ZuSIXR!OF(EBqZ+-I?Sqd8Qid?Vb# zI6H!R4pYx1s{Estu6WO5>iH4W3z&K#QMIZN??p_#ID&c!Q!gc|EH>LzxR){Y@(Ah` zOudq*V!PR-csDWistD@UOuYtZAb+WHYe1{S(y`-4C3ZUFkwD_o={y+t$nmFjRK^a_ zCWmM@gJy?C-B&D1jdp350;7S;u@m1bjuWeK&gK-9BE@h5b!z(7gFnCS)QmqP9@3D2 z6|->*+?FgtRw&x7pxLrG@HQ4ZX%b&p(Vm(HNqS*QLHoj1iZT)67G)R4R`?Eg-v&3w zfIPKx;C9gL7@T-(rM5}X`NC+N4x5bi=|jZ~F%zeitkg!sHA@^RjzX%}sysmIwc8K= z93b_7VcGgqe+S&rNL>-?SsP-UkF>29mv9b!YDsI{Y59>VwZ>f$?ze&M@Uot3O9YbnhX6NE+&binfnr9rSf6LZM*+wx#ec{{t@N&DEFfg?#Gnd z=6@V+TSHu&>P%n>+B=DMa0*(p!^Cv#VUT7W0a;E%xj7Lw`5*W=kV~0JAE(YV@E-YL zJc0004?^xIBiv6#xc?5fEf0p9D1}s(2jA`^oGFloWHH1t@dvR|9E+Wm<2irg1+~}o zP&;sd95j1DC5g7Jvm~OF-+{Le(VpS9c}{(rztHIKM!#CbyNT+umK z#P@XeE`>DI&(Qu6^(R!Tbx=spT=V8FSuQFTbT91`f$pWYPA6NmIu<)_cD1^C-E-Xc#DAMG zIALnSNeNrQMfn;9UnvN0j_5>xH4oqZFG9o8M9ifLk|`!lVm!+cPi3X z$TC?Y8|6^hDm&yPc__}e%)u^Ok6eM1L?>a0zENHvFOyf}l=#i^c6pC{NIoW?mOJo` z<=gUod=vSV{9f+Sgl1?sm8_*>7+<87X*Kw^aj4dY0sUlcx^|>CS6iel)q1rx+B$6m z2KX0go3t(3&D!nSJ=#O~j%gc)`>$$mYwv5HXuGs;G4R)PHwORdx=%0FYxE|4xZb9Z z(l!R-=jZ-Ny0Y$IsH}r9sMJHr@mYN z5fcUtUy>#{GL2o7FXC{*GU1H=%mC7Wa_2>l&DXe-9tDfbecAjD; zlTzG@^pWci%x`eo4CbU15GUm{nUu>`xlqVua1mNk9;-sMa(*dt){22RQ&1ul4y%fYj=Tqv@;ZtPLMi7vg@)FC{p+ELmi+G1BMBZw9EXr3em?Q<^!=-5TX_^ zwUDVZ%xe^H5mSqaDnrv1X9?UPX_DSX(bIH=Iz*bdP?v)41Vh+C7%q$uBcTAJd7{!G z#$r-49y}s-CU~h+pNeMwBn-T65s!)2F%Q?!tQW{8G~@H-8hHUpZm(xJ{VYu>Nz=c| z;T*)&GNy)BIh^H8tzc?s<-%FX)T#(-HB)Pd8m5c2ObtX(>zG>4)P7xTU}|FoHOSN^ zqK4@rubMdrGjG2x4zb)JT^!2peq9^}w{Q-RppIbbNTP=6VhdASEow*?M=`aHsA0M| zmZ{?u)z-!FOq~D>m9ytrF6aJrw(&yn3fp+u39XwzQ<9WZ5B~gmQ10AGu_6>TC2@WM z_e62ExJx`O-V@(TxAdV~pMXO(tL1s}Ms(XRqC?t;F1l13t{ti^Mu&5mwpDvVdsF)g zUo>T+lWo_JM5lVDz8Rh9v-Ac-irpqtBV*EOU-@PIvY=Pjz15 zyxsYf^KIvD!!WXqfYEBqG!_{r8J8Hh7>^mR8@pVZD;=_SX%DNKF%hx~=OiHMqD?)7 zsgs#{jBY62Ddb*<)^4g0C&@b$bsF;?O7Ad8v8jhKbvjYScFk@VXE1eU1od#H&SL6* z`Lzo72&NtxK|PA8M@LX+Gj&b`wUeoHnfkC6r^21b)cFzAE~YME>f^X*z-pTpGIdb| zwVSDnnYs%XiCDbHFtsOwx`e4qiHa4sBE`Fmsmmj%e_-kgqGH9ZSn;l8YHtMfSf(CF zRIIq!ZQ^RC9v?wn!_*UqinX|p8(Oq~p>HKKcw z++tOz-F%6;UXI{;h26!WQRl17^%_%MT9k_Sb*8=%L4A{{ZxI#wv_kQ|&D4KdRIyu8 z-(l*zL`9GLh@yVT)PF0gS}J#b#MF1ptuyNc+k4G=PN!%f}iFd@eG76LDdN~eL<>TZzm>NHTDc?t! z1}ADInD$OUtFS^lQ`?Nm?X#HD{;0?51(?E4(&y`IFj>7xe^`H6|4i?5q&UhPBOTKn zJ&scyS2%8WJmq-XvD;}lvz-BFhx2G>uXCewi}OC`bIuQ)KO6Bzkx_578MBP##s=eR z<1XWA<2~bhQ52WpPBj#QKhHvP8Hi8rtW3xBy+u@?qlly2;M%Xnge+aK~zH$ zRqQv_?7`5Osz*>AOm#B#C3CG6n_)236+w++YBW=EEL!opnHm#8jb&;aQSnWM+A}iZ znVJwmO=PNvsh5T}V3H!-$q~N1>?<{bn#R<0rk-!-zmdVz%m`{0Q?r@+FqX<#GmIRj z=0;HSnCfHdB_ZB?rWQm{3z=HP)QrBTRk+1WEs3D|nOaIz(HD|;5L3${sO3zpAgbKl zcfSg^lBrb@)M}>IFx6wuP`tHF4Mb4um|D-&{%{+Z+899%GPQ}RgYCLtG&6N@1a$~g zhZ0r%g3DH{{2j*B;StmkOdUy7=?L+*Fts&;I*O@nMAZsHyrY@g9zh+$)DEJ`D?_|v znK~|lI-aQ$n3~x4zLIw$Qzu1G4`J$LqKYkcOJPi5>QtuohN#n+dT0diVN9JK!8?Pg zGl?qOL-~6+Q)fj`k6`MNL>0G(c#mT0(Gk?yOr1m2-#1$6JcF@{b7VE=$nP7iq(d(W z9^oKw&ZJxkbDzcT-#1!+-)Pl;-)Kd@AdLICMhL98a-A{mS8h$YABb@OzR~*oMl0#f z)0SSCQt8Pv5pJ5F>O%a!(fa#FD`wfhZ?yit(fWVqMr-J(gxHGXRDIHcos>kGibH<| zvQ$=K)n~AlB1ht|#AHpwDdwZK_psZxST5I2!dlQt+WG??nRo(6CSJs$fOq7FbYwz{ z3Og7;hagh4OwEU#nHqI8U=ns{W@&S9Xkxv#94Dd?uC|d6OlP4DGRe3FvhWw4(N=FVZvXDkMOy_nTKEn)CF2Ca5USCkrOzagx$pRplLtJpK!bg2Y&?4w`eXAjSF<+@TqO6 z{zxp>Mb;eDn|AC;PNjNd)f&{9wenPXCPKXgUjuBBH_5H?F6iqcxZM3&)R{MNkme(~ zQ|^{O%Rc-Lg&S+Esam#HfZ9@pF9rtVC`~(7T&?=DKuObBF2D}w)%cd+7VQpv zPw%kn1ahw8KRIr!#aseYWk7XMDg zuIPFA{$P{71*^AP^}F;3^hflkuuJ+PzDJ;AM!WRy^*s*ZFtBHeV@CKoq0CW(+>l7& z4;T~SgcKh-(pZbfFw*%04g30Z0LjTEI)dwlQz2=Oo9S*Y;{-+zV=|X_8r!oN^B61H zZzb#LST5sVxBOMbOgIcOHo(|VouCq?A zvrev!PS$sln)KMoHP^`!IJq7<AW2fFXyl`iQ|VWEOT3lbGEfdLMLcBoDwFst(K6_a)P9hQ z+7B|R){;r>2bmOB9jB*`L$6a5YCovtNRpvQwdJDRAIcmfIj=`@ipOwHjNwqm;D9xi zXAdJCM;fDeD5kNB$I=LDTgP&ajOWl2SeraR$~o&`6zLyYq(Q)Pv?#H#xek<6{_O~w+D3zi9*c{7 z&;ZRkrA`wUI>VI>YP|}aj_qhjGBu*qBMzVa;2mB_;sFiEgD?TZ9WVle8Yg&W!e&T>qBp@7h1-GHkHmD2!=;o7 zN0a8Ea2!JkAypYp5MLm!#n%n5%VB7;|12NC*-tN;;3F_dxmPdOhv=8;H#$o3dDbP4 z8=OvOlGEp`a$e=!>fGtvW2`ZLam{zFbbS}KB5F(2)@Us{DSB=6IqocXxqFlQ&+dP@ zzlceUX^3fwnHaMz=JnVivEyPdihVh*D6TGUeq3+dm+@`!)8g+;NJ!{ScsAjmiOq?B zOuXMCJgJ^y&ncesJ=b`)CwY?ck}8w_lJrAzMsjKCnCj||($bFV>M^B5pUEvu%5_Z{ zHLA;#5RZi6_I`7=UW41A+A!?Fy;N1W0G+Prplc%HaqEtK<&C1I(M^5^Zs5Un5_BmK z-H#Kxdqc;?Jk||wbf=WOYTT*wo7+}xnz88eX(hwQ6%86{Xlbp!#xdCq9pxFN@mg%_ zpsYjkhWHEG7X9CHFCi{0{QX|S{u}z}ez)K6CH(zf!h_#SxTgOq;NR~hv~HXXyU~xX z-~9bv!r$*D#NCDyFnYi}wf}G3ONc{C`FKj@(O5oNhC5cL!@gIf7@yy0^HlC|+C|Dp3^JOibH6nm`0@?)Y z!IAwc@w|Dzcpj5`EEAEbt-?F}#t;^Xs>tN02__!-9UhDw_1i_jQ3~46%ootUf}I}n zs~&xt2{L<1C9y`uZe0IFyrjmi=h7#U08tuo^whxuD&OEO>2h zIz#1;a%?&I%#g}%P;RWaXDYHEGEbu1*&)S~|nGY*GVgkOrGS;|J5r-<>E z2^|i|;(pFw+gc`!ZO5d^SNxn6hn_91nG0Cu=h`JOd^E4&2lFA!o9N47G9CIHm_1@7 z;;q00vl+HoVh*O^Cy7VJ3*ukmYhlV-+_Jn4U#h)h#2Q&fo-y4x!kBFwW2`hTHMZc$ z`-8?K##6>WjOUEkjD3dbn(mr~`A)a%Bwvaz)0gWj@Rj%m``UcHzO4mG1>WN4@I4{P zRD+K|TCgD0iN%5~NWqKZeSB?RE2j>KEgy&fW*c*irN*(w<;Hc!t;R#fW5zbbw!`>J z#WvTq5V0lu(tX(+Tl24C+kqIz;Az1l%zb$F;&}+$bC>p=-nVX_w)gwJ-w3hC|BJZ? z9DDQj<^r>bdvEIA;biXlanEIYF5Yv_o{f8s`yiGmABguqdH?+n^!J~7|H^+2{a4*T zFGaqhg%W4txd_iDq)XuVq!2%&EK*>G{&>y_mt0CDiMcSA(a&M~1^hKES=ApF2=B1% z1I#mIoJ_(3eXAUcD=<8`ueKNq_7m}0N)BeXWmw3M!P4Ut+v>CLh4jnAWT8A9 z3;X4AkerSyN#e0UIZC$3Hd!gF?5=g0;* z0$T&)perwmm*gShWn6jk8a~Z=L%fN*1HKn~#V+xs_zHToTYMuY zi*Lmb;z#il^5Yk=PwWw|i0{NiEEulBM;pguN&iQA0+vTl#3v3XW5IPDmOxLDzhJp^ z50?1%B8T?L)8&4-L7ssH)U)uV=GkHrj-#H7#ne7&%JZ?JhhI;{HUNDaK83#yKa9T* zKOA~}gqY1swmtGfd6B$WizWDqn zHV*zx+XmRe_yqk^wEPqs8q4Hz`3LlqC*gNV*2$H!S00N^g`M&XnJiOen)G4=B^_mz zE=#DkIk3_ou_B@D68-0VWyklG=$|YeT}+U4RSWSu!g!n_6K#-1$FI7|uarGnq-%6P z0P(xU?Hb(~O7=ME)1FoKcu}wKRQ5y><)B-?iN_;i9ZEJd2C)sft2V@k?5eMKC(0{uB7- zZyA>4j>j@-H-E?5i?-ps=D}Tn z_S-jr;zM{VL8I7v!9|jE!EYz*$AGp>EC9BEx(weYQ;5@$x|QH1F7i1Ran8fr6-YN> zC%+?ky77iWwNiN)TqL_C>onLbPAm4Mh@qPOQ=FEc74S_VAIqtt9HkUjh2_^o4y_v; zOE^Ck!q&sGPsba|vu^k&DQe-b2LI}@HPV8^;A4?nLk<#>mAC&*Sa!+Lg-et!OOo+O zaVO-kQrZCtRzim3!(!{t^M&AA#$`ph-;MNADN~A`}& z<2j#?hpP+a)yZXTE;68-qq*CeE*a-tdpgcHG2~sIq z^~TDf1Uf8QR zXL?|gb}z*HL*ReH|HzN6FX7rU1G!|k6_g9~^?z?jS1J+HuW3~G`}K1gTuZ>!3JH6V z>vk-asH+3t{F=k2v~q6EL!IyU-A|(t7yfX_E@0UPBCRpg`ZTRf)0#A`Mst51i#|Ob z{dFSx^Ca#~s4q#w?FAV!6FqY_`u1FzCw=IR3(%KSpI?H0y%ha<8G7{!^y5|N$!pM) z2hi)+qsOKmya~7L55{bCDAurtqYod6KED+`e;a;Rq#d)>4mno!>J#xf?ICh9#tl<3 zayS$thUpj&%*3c+mOMfpi7~>_ayCW+o%qyp9yT?*aC^c++)Cb!LjlL&9)%?sRjB?^ z^^E=fdw=h~4n6y+=+)PwM@N5-9-#=^ttGrdcGuz~{DKqNnLbi7!FfFU9DN_CuCK$LTH) zx_4(4Mn0=Cem)*!+7q$4c%8UYoP{yMNn)Ki1!JLy@T+uRVc#Vgqi-*EW74qclYyHQ zvarwK!PZX>_GfNI-+u%8o$Jx3JH>tCesK?ei|Z-zcku{D<$uP<&xsf%+$HW7Pl_|3 z!7=!lXE;XgM`Prkg!@HCh|jRGy#b@pv&BZtZVhXsq{c}&Bq1*p*NDy7BK#Y+x=$CE z;a;cp_}Knp?AZK(G24&0@qxx`51^LkiF|P}YJR73urdA*`J8+nA054bE%KM- z%kmZ6$H8MYY?xc)w0GpY*gF3g?&$cy9<$*CU>dDiBePxdOC0(58XN21$ZzF$xW(fK zj5mM681om5FZW_>xt~Un))>+n4Pu`MpLl7}*o2S4Z69&C)gl4g@g96soQxwZUTn;# z;RcWl9A?SF7JUxxyU4?_mV9j17vffsVtgFs$F}_-+z(Q&RcMviz^}%Ums;G2QHQPk z2HY7E!~vLQZ0ZleXH>)Rq4EfAq}HOfYNNEan9da~JzWc`=w=n$PB*T^DLUD!YTcbH zTDul8ld=-srs8TAWu=>0VD0F%coCp&4Jb1CQ)IH*WV+r(ai}obI(zK+$g1L-+AjrJ zRcOj-ipAxbvUZz^SWL3OVI;{dixMWqlV(cEc0Q6-Nx)Qii0xcqTUmq1K^_&ItW~urnTcIpRxq}m z!m;h77`B~!z&>f&GAnOwJLxVdPk)Y*RfS?(1K_spbvCyZID3SZl~Luo;-)BxJfm}! zol>%@lpfw6BUx39HkD$u$$_Y@)xBLy=Xb4e9lNxS*?6@vaW^^8R zd>BRX+VM16?nWhRql%+Z#nGtZXjE}DHYk4EUr@Q5l-aDz7G%?W$UN?DCaSy{ne7#ofDTMVCd3Ua;)g6-N)maqr5kO#6T4`j7Gkj*jr*cHntl0cx=62GRE%|OE_OJ(b7EOmrgHLr6y3shHA z%PI;pj22L|Kp3q~(dxozO^VhOMzgZ2E?}utO^Z^QcH2~{*{)QxU8!cfQo(kmg6&EL z1Bx%8_yVek0;-4ts)z#0U%>XKiY%a1H=wF*KvmH?B~P6SzfOf)r^2gK;nk^d>Qp#& zDxA7DOJ(Zp@KjZ-x0?+WZoQJbUWHq)!V4v3T{q`hs>i zcGXmJ1(jSuC09_%)uhtfq~dK-@iwV=n^gLnRQydU{w5WFlZwAd#owgjZ&L9$srZ{z z{7owUCKZ3PioaRK->l+qR`EBh_?uPy%_`nz6>qbOw^_y8tm17}@iwb?n^nBcDqdUv zT2y>3D!vvKUyF*bMWwez#oMCdZBg;GsCZgbJS{4o78OscN?)r=U#p6*RmIn;;1e8EObzM!qQ?J6GCjx+{T`U8qyr{t?s^3|zwtW)W(Q|YZ&`BJam*Q@vSDqrdq zUyE(3bhX;~WS6H(f1AqpHWi*~TN@i~eNg<3O3oTpezhu}YTL0ppksz+{Vm4)e>nDJ z=*CC76l;Ak-<~=VC9+OuXy_e{zy(|a)7d_OnY7^ZdrdG$;-P(|xp>y&xf#zR;B#PA=P;hfN>Jzo+>v}IEgit6 znXPr3EX`)E8&-8*<5>gF1fFNxH?Uf_uJ&NwYu~#{=L2aS-sYegbAO0-c+rU8x}}q@ zCY#MSbdvPeU76wcWRiRbIVos72f1m*1wQdx;SO`J`4i^F@%YvCWVm5szsE3t8W}_H zL>zv;m`vjP60>mi9=tz%VIuA<^L_S5e(_j-5gzeVIGayn3&sQf5jsr=w6CUS( zVGrrPsso%ZN*m?1{ZKyBL-|H^)TT$8%Ac)|WZE*?G|rPqe_?K$Z-7a4JuIyQ-i7Hu z)4^+gha98yD3i;S+5>8rh!*}Rz7P-PHRK6z1KD36`Y~Hh(kBXo^o#NZ?I2oBlizFR ze%2>4?RJm+k==k)Bm=df`@tR7&T{$^&{~o|N-O!HcqqRq4m&K{bYT16jN1#t>IaBN z`C*fE8g592E6L37ISkSVo5z-q-qB;rNAJlW$!3QciqlF5x0{p}iX+E-FH}b;4=611 zPkEDw-hk>%EON_E1BFF=FbAYRGA_HWDS24#aJvgJkUP>J#T}`mw)}SbZFjP{b3hm* zJLNr<1MyNGQFwMa5zT9UHb52%%RrB)^k%?2TV6Z;EZmPc&QDC ze%idGbIhaa0_!-vCpk;Z*GOjWZ*Bdt<56)jKlKGvpO6j?8)e9DYMa1EX(c!7H>KN_ zk4%*xOe4v{--X+$K9Ft@Kb22{xtsHl{E*u&Gx9?;$~&8$f{{shSY#*pReY?^#AExR z_f#&__RwSNvJ;13$X}AVE5vKZOY)JO-b0TVR%gp8@+3;|_5l!*iVT95|VW>DMO&mA5 zNgnb?VNiKexvDmc;^gwhUyJny-Z1_PcN$ARaq@<&X7*^fBD6WU<>QJAUL$Eb9U48_CFa8Xwqp znz!KG9yB_R-%)*__n&Yb^(Zp|IY%`+Mfvxzxd)n0`t%KQjZBJz%#ZP#@Zt2G80Arz zb{wCGT*a5i<_DsPP2vmlhqCWuw;isEk0i9|T(`*2!5+j(`GmOfs|PTtzaZ0Yi_n{~ z+pY)pd#dxqM{_zde^74Z7rSYGNp$Kr$b@Wc+Tq&q*>0qt-`n!o;oI-+@a*_M!_F~< z`#E-z$yD;uc$xB&Xam|`a)&)64?hT>>o(;NrG?s}z1Tg*IZ^XE%fx6X&U^zp@QSE} zE)20v@D##L=PTI+|7@JVzVx8xt70uFfR$qj;)>I~X#30gtt!;u%9A>5dMjf zsfEgn-5)|u`uk7}#k=;9`3lY^xJ4Ue%z)o@=2PZ}=JN>i25`iQX7d&38_v+0FTmUl z|7+m?B(WO(b|F8kKjtn=e-L9F^oQCI)*tf?+l1`7@J%0$vkAW~<~yL=3OT<9U!;2% zt!$y~w9RjzId1b!=(}aU0$ae`0r@QRI-J=MEQe*14D{SYCv`!$%}-IT^z1-uOV5v- z?hMG;Y`$xLXPb~S1=1k|%S5>!hH%~tnXkk31I9D9`6fzAm~WZ3d9SG9_-&JVmxv^I;0mQ1O0{R z1I0%Az~(DhsdSs0Ak%n^VqQ0Igg$(4K5E_z^JDXI)`w2$!XAXN6=mcG9akrqf5BHG zwmBMg;4i3awt0{?26_9xYEw`a^?b5+aYTq}B3%Q+#$?f}Q zoP?rw9wxW%+r)y9N$tBPh9f>U5l1_L9!QeAzak1G#YTwoU32Fpjy$yao8N`OB}|)Hk?Mwzf%qLkjl@mPviX zQ1cn4u!->8Nnixt05Ep2FV7UvrOtYeu7(>+<(wc1oa~@&GS*d^xih# zM9Rr+o9Jg)UfU!cqwq=R$c%JTKjTK(D3kgb@V#uCq-z{rzZt~)?VwvG^*c1XA)TXq zP!IJxWas{d%7XeGt4zkD>@G$AjYmpf;(n*ke2DvUoBZ|*n$Mdi=t8pN;NP#EBc-oIJkP-WC`Q@TvtGmxeUU=DYHpyUMvoC>tQvBf0$OU71C*@AsJZ0vTPp0iSqG#@w`IF~g-BsGPalw5Hw=O~n zFt_?eIP)!zXDni&--mN2zYq62I3p}XH_j|?#7Wh=@Lf+TPGC;f*5aC^r}0BDQF;}w zKROau9BtFz$7Mz-xX7r(F&8&^Jcb`v7S0mB7BxBQxTve6o``xe>bG3LmaQ)6z9*%2#ZGh<6*8)MsIr^fcgZiw9) z`%vuDv9HH|6#H#lO~TGZM`CVbMdIMZoyn9!FQ4%hIF)-IO5-A&)HTFq;zp$YCY%#a z!-Z~Ju~T`wcpP)YC-JWa_4Z|)rhZj?f|~dRzP}pByT-F{`aD(~fph2aVh&E8CyGv- zJWm#L@g0*_%%juiVm{8B=Zgh6V_qf};*@y>&fGg>K6ExyRzQP=tTO*7d@_JhdkK}w zI)Km^b)W`b%!j~5wVYgk#}`EbYL(%3tOE!qP?u$BHo&*&EWK=^LxJRUSu-YfpR5_xw0AQvU`&LN0y5)fE5QyU9Nib1E=d7jzw@RdF<22 zn6J1VWm#@#F7hoz0p6g^07^*t3A9UyBDh@QQx5+#)Zz-1M*#nJqW5fq6hDdK;C&NU z?FDcGVH|uE!-o(hjDE&a#zBl_Kn*^2a;X$>xaIt&0!ZnyG|WnuRce*$4V70J)(c2m zayea9?6aD&21wfW6z2$~NTS@H=Ty|8D#M}!FCy%0@|e6hY53_JOtnox%R75@_y zr&=?Fd51F6_4>rS2V7;iQj0?W5ZWFXDL zQ#Xpa+Zaa!`~9>JaE*cM!1>d`e#bJ7J1Ez9em{Y6B9P+wf@PZo7p0A~u?+J1kPmK7 zTRo@k5cV^faSG#9Ao+it{nJJKls3*sYD17Kd0bZyCGP0M6t@-IbmlHo?GM$10KPM! znmq$=a4rT&wUz2&6_-i?Ut;+1hOg@vv+!PsBY;la8HJz8lQAr<-Jq9;Q;5rgq zLh#l7;%K(d29j?7!2087-JZj5I{8h$dSlhrx%_4xkn-nXt?PW|>SA2*A9xos*CNL5 z|G>MLxsGA%`47BHm}@EHvj4!loVotMxZ*$Xu4JxW#$$nzeZ_J7W)<+jE$nK3e>~%w zgL0j~@7FS(cu=mB`2ER@>ki6w3co*<@w9_-t>^crGj2F2*BSi&OvbZ-{cY~X0j{$L zxXu~iIu|ag9lvfF&%+xb&S$&;c;Fnokl$a#c(LN5uj5dWrts91euSXO2?ua(+MedWcjnRzQM%j|!*&)4hr@AY~nCSK3`t+mfV z@M_(@+xOk?-M2U2Su<;9&6+i9*38~Bo4p1YS^w4M)y>Ek;vt5O47UJYK1V;yIgbGT z6tAsJ^(e!~7(Nd8Qzf=B)e{W2Gko%AO8kzgo?^Iz;qQN@#7?Gqn&C4Hp9Q=$f9~>P z#!SB(*p=t$JzVxVhW~a|s^>X>FT;ITrP|N=|IYA*t5Utl`3D&O;i^1d%Yd@Mmy{nu*+xi z<46%=e-xk+;vk>XMJaB6(wtC)`+r(q= zHnT%K4!BEf1Kf+9s(m=z>?x5f4~b`xa#ZXBJT6{9`bqI3;D_P>;Ai3wfM19vz;DGt zz%$~Hkl{SM=p0r;ya8wv#{eDTIAE}N6EIx71=vlT0E`lEdrqhr@eW{raS||D;GF|J z0iE(Rs5J3`=UtU0J_H;mKJu83i@c6~OvgorQ>V60izwd4i4etMpr+#@fzQ}Y$3>>& zqH2K)AC@;#cBL=|o~@lghSMrD4YYJQ^X`y|u%DV+Dy(ALlAD4o)L`4sv- zF*QF?HT2^94ArM2-zTb9ca@7sExM9UgO{fIDUt zE}FTo*ED~`;fGRnDVUL)uVxN93qO`)k(6A31jk-m4(Q{6M-_ZiT4rA&jso8f+^=wM zUM`%3l7P=hC2VtY%Zf#sWeQUEBHvw;Bq;y{xC1O$UC44siQMpZiypN8<0MIpF z1ZxYb8i7(4j}VQ7$VO>plEz0kClt+SThu1t*+*C!LrF&Ac1z(FZ8ZX3)VwQb>l@+lbvRh*S5TXC2)({Grjn>9np=w-h6_yTv z(@o%isfeK%KnsrC@m##vB;*VsO8koMB607*?}DPP>38Af$A}v=V?}U;;>fhy0O4Pd z;sTydI{?-(B3KD9PIyrLamtqBnU? ztYx694YF^cFhk!RsaFTt+HKIjmsWDbY z)E1+!?WsSwY~zxea9i`@-FGcSRSO5`wie~Fd8$@>YO?j{iU(G$UlCeAN`HMrWe+`U z|Dw%<^yca3zA0VXJayTH4U4|o_}gQB_4Nzaty;fy6sl^-t+}`EhCeUcSULAU&v$y( z&l9D$EdFs|b*x@r8m*7tJw8f5U-6HKZ~Nzq|JQ+=Hm+Y$U$r$_|F(H<<+^)oRy~nl zw{l~5z4@i(o7PmXMPHQf+gMeK4UANx?xT2>UEDVPS=}f zx6IxA5AwRqD1Q;!PLBMwYpdt(8mTvL-Tmh#x4tk_ZwYGHv?4=aKe`_*BDiAxL$Hqe zI6ZGmnhq;lUmHa(=rJ;-?cjv(nx{Eaeh`}W1xawKVf;ZOY#QYm=doGlYSq9sx*hOE z<#Z7RH)kq6W9%dm$n!al@S)sx^Ev(dF4uxQDy`ti7{|cHB(bCDNn#SXVrE0BQ(_#B z8OWkID8|99b{a+DJUfL#a8dk2wDMZ7AP6d%KSLh{9QZSLDS}bLn+j5LTrELqNQ6p+ zjePN;dfeiuQeh*nd~NZ4l~#CprU_F=NQ|QZlf@EFX@B0X?~GkryOVdpRj&N$pNK*2 zLs$(7UODy~aNvQorD(_Tl6ekXk_wf~Yk42PE9( z#o1F}8@%Z&Qi(ZxCQp8FhYtMmIC^5iXY|&c8`gtWibptH;Un^q;8`Jrvyw#l}(}vQQws+ zQYnfP_>`~PsXK(odFt+7JH>N9c?s)rP#(ydJYwS6K7QZA-0?srZv74L-)j%v0sL#= z3&!X4OSrYR40-l^;L~#^jhJ+#+i6TH_CvtG%w3RM(xWJ92`18KfDg!(tbfD@Syrj@3Q2sdp8!aie ze{%x5!GILj(Y&O16aMqXfA4`IyUCzKt`TD1&tGD(BMOvajSFs~MMOBF!g3pH**Mai z60A>)Cg{>aaa>*v8%S%4uNREmwh$!L6Tab#n3Q^ico7xKH-nL*kv066@RvjD?(yL9 zZfIDR{^RL$Eo%?rKD={gg8qF&UHLG*r7R(A?badsnTqQ2{`wZWL$`dgaLc-1>*)(D z8>95*hzqrkm(;Fa-x4}&3ak1{^8Jb$L?C&Jn6!*x&;p`dE||}=cm2j}~NEsvJ1TUA#bq*{J790W-Ec0Onng!QmHDd&4Q^|l^M$=@UijIgqF$_ zr=^LFYjJRjgKG)plyHtmFmyAF0lfzLDlw14VsBWAP+?=l;6~Eg;6aZd9g=7hC0^>4 zj4fbT#&8j!gC%l+isHn{A?7or);q*PhKs->6jG4fp-3aFl=H&5OgPIN!O+bx3bY!e zGRj0TZ4?en%*p#s05G0C6;jeXJk0Z=-#6@iB>o}M!Oh(8a zvbT(vNpgq^m8n?TPf$wUEN@pI%Y1pKELKb80=Yyjzv2S_B`old!&X0(pV0ze`L(fE zTC#_#F3PQXW07xI>^L<^O;OXa#9yw8)dB^+Y7H;(x3(_vUs6ZaTk4d;LRbXI#j+fa z?Z3sQo|4OCjj+jec-i2R_seY}MDB$*$gf2P z#?TL9w9=I>CW51#ZPCuXU}t-_v;G4(C4hURBd2uc_%#f>GmPcYVfT&>DouSw<;kXd zdbv@b+Ie)?d34x$bPzS!ie1p?u(Org1&xjXmMDNnM*wpQU<(TH%0;6i0F)Yzr!%al zBij~9NqL>QOlPLPhGBPxJ=x-Vddu`=+MZl5rIEa3cd;y0Ea%4Z=paa=gF+e|6jD1W zq|rekl}u)9Pi9`p-V_?OcCOI~sl}ssblAazEZNR&v$wW@Mg?h_Leesg4m(rEGUr&Y zlr%bsv!QWgbP!HFJMy?lXGrz5jt-21V8|N)iq6<4=nk2OV&B+~wCeyzal9uqft?3g zi(@y0Y?jSf=VO~nVA@r7(LwpE0Dh0_-58TLY>ZttaxiW(0t)oJym`c9oy7kE=FSnJZdDVC~b z;aJ8=+7xZNR-hGW3$zOSRcWiWTCHAd&>q&d;mF2a+FtE|c1Sy_9oJ6srr6io8SOmI zsr#GM~Cy+uzDd`kIv~j_py_q zi(v@&cPEZ_Wq2*aI4&E zPUh`oZces%N+FAPvgA%K?c{P!uFc8iTwKn@w(jE6E-vN5w!FdtpLADtaVZz%(%_xU z7)K#I%1EO$Pjq7LotUmG!)qBvvLvKIk|ffbMkOM-mC;_^Qm@7F%s?70LOm3gdPAa* z!_1&Dr1^s|nm;I{QA;7s9~2U=L~c(ab5Hc9(ELF?N0OwV)doh|PhpBw)^#ekIFmJz z$y_q|Q0h!k2+B;hj!Z8N)s*d}p;<4R`zD(;GKRT1ncf9RnltX#WPg~Ex|8jZELP^= z#Bs~iO5zj8^2G67n560a62)K~44ets z;&7~W3N|W7;9%b2z^&+mXwXY}7PAnhC;Ud+c#odmRnfZ$C36vKWd*b7eTzYBY|K(^s>!?cor<>d{w&EVoBdx+bj7zA z?@Z{Q7|?LYhkue;IIEzP_U{zlgBUL`(G*e!?dd6r?KqsMye7jG&$VhX+$4=K-SvD#2= zllGXUw`CB{vVGKQwFX<=)_CiK)*aR_t>VQNP{(M;2FF_gQ2~ho`2nQ?-vp)y<^(?LbUI6& zN1Y!84Gwxd=y{iLg}HjVmb%ut9&)`B>w~dj~2TU$aW~v`eQZwm&V8qi z4C&LUtD|d3)PRVnN8)e0cgoCd3sNUH8LKj$#f9MT;lt9gie7O~ zlFP-9ny&0}2sHuN#&{ c#`=HsdhMSt_n0vm8Dqu>ytkA1hXlU<7owk2V*mgE literal 0 HcmV?d00001