From 6befe2ad52c7760e557f875b893703d12484a467 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sat, 11 Jan 2025 09:24:20 +0000 Subject: [PATCH] Bug 66425: Avoid exceptions found via poi-fuzz Prevent a NullPointerException Fixes https://issues.oss-fuzz.com/issues/42537720 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1923061 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/hwpf/converter/AbstractWordUtils.java | 5 +++++ ...nimized-POIHWPFFuzzer-5195207308541952.doc | Bin 0 -> 57344 bytes test-data/spreadsheet/stress.xls | Bin 71680 -> 72192 bytes 3 files changed, 5 insertions(+) create mode 100644 test-data/document/clusterfuzz-testcase-minimized-POIHWPFFuzzer-5195207308541952.doc diff --git a/poi-scratchpad/src/main/java/org/apache/poi/hwpf/converter/AbstractWordUtils.java b/poi-scratchpad/src/main/java/org/apache/poi/hwpf/converter/AbstractWordUtils.java index dc996af43d..9ef569fc6b 100644 --- a/poi-scratchpad/src/main/java/org/apache/poi/hwpf/converter/AbstractWordUtils.java +++ b/poi-scratchpad/src/main/java/org/apache/poi/hwpf/converter/AbstractWordUtils.java @@ -240,6 +240,11 @@ public class AbstractWordUtils { } } + // ensure the format does not grow too large, number-format + // can be roman-numbers, where very large numbers would have + // very many "M" and thus may cause memory to overload + IOUtils.safelyAllocateCheck(num, MAX_BULLET_BUFFER_SIZE/10); + bulletBuffer.append( NumberFormatter.getNumber( num, list.getNumberFormat( level ) ) ); } else { diff --git a/test-data/document/clusterfuzz-testcase-minimized-POIHWPFFuzzer-5195207308541952.doc b/test-data/document/clusterfuzz-testcase-minimized-POIHWPFFuzzer-5195207308541952.doc new file mode 100644 index 0000000000000000000000000000000000000000..1d36046066440f81b5ee94e8e04d580eaf62673e GIT binary patch literal 57344 zcmeHw34B$>z5m=j0YXB62x#T7h-?Wr3lP*w5&{AOi4egBl^b#iAa(v^v2|&y|BBew)~6M5>(egOD%CDZ60@T;` zlS#g3_TOy3nfc9}GjsR-eAt28?;rDfk)qBO9&s$5E&Mij7tAf%o+m^b%yc^zkH_iU z48Zs|u8QkI^)2DQ@l1Yf*?arW$HduUxED>A|0o+#2(&B|TnfesF;vuVsNZn)AFlp` zbWM5;_ZEnv%|g6(txMuprz!7qlR_md@p!If$z;|6E|Z3fm@g>mcC&U%)ko05R4ry) zC%qhD?tnitya)PEpzCmlXA4mRw*J7U2vIM9aj4l9QuQ}Y_f-91&~YQ)kDycaMW2Xp zQ|1WqKS=)*XAAK&*k48bktC3!bbaV_Q@n+C&!m$s)!`vZ*Yvcm%c*=-`F{h8t`{9I zRcCsGJc;(wbW-WEew>tU2d(RPnRH#ghl7e5^YbvE^Yy@JAwEQXPMU=_hMr2tDGz;d z)A`rsyB2)Xf{1&jJ+gm%!H-=!|5|@98=VUEas$dewJ!;LEMY3!LM>a`!wr$O9j)QE zn6V%dZS81j3P;0j#w4TKbPl)WY8jBY*|%hPR`13w7n^u)7H`28jc34L$Qw5Kuv4=+V#<<4V{Q+Y--xD zwW*P&$xUr*Ta3RkrouVA#B99Yy_oxRSh!Cx|p#k5^aEM1OcMW2zFLZay=nl zbEF*=WORnwj4gDBlb&j4Q^Gt?eyL_LOE5VfhTlVyz}=k4GV z)YRlgFpSI>ix-YIM#2qKjLDHmGb$|-HR>YZju0wuN=i|a=%R3F7Z7bm^+Pu%gH#J@ zs=)x+SU9@R6jmO%3-hC2NTGwh#1vM3V2;GHL?COYBvaf8lyG!#>;dTv!iIwEqC+osqUuog#z^TD4XLa8Sbl^~Q z%c8b*k)Q6~Abx*y*Pp)f&3C?c>%nWg7&2WMDNbXMKIcPUP1WN0^Xh7AYL*AwHyOlLLYX}%>`?JX&melp_7GxO93FWU-6Y6Lx*I+&`VExUfWMv-4}n{b&tyPqj=L;QFhhOx*xjFsqU9opEB4aT5Tt8nJc7eNIZ_=O)AyK z0$HM3rN&4xcZ_TVxTp%}Q!;!Gj7yGyEp|}o(<^6G1-;#5lWZQAwrT9c(+)b$DWUoNp?xIlLh2DOfAWt zz&IyqCv}k|I=xv`Ux}N2g*=-^alYc_1$C}q1A$UPKLAwYF@ zw6sW>tThsA>ZAl@6c(OqR6+I(21{}fZfhjmY(!d(@McIzkX_cP5jYI#62e*x!dN2& zE2rqCIk8CClttU?qZF>*eAANqZ0VHcG=>|(;TDKTO&gjaANDm`XkA~(&&+9qTwACz z+bq*C9J8ZJJu9cFEe3I{nW9t=;b!NgCXf1T3~y~h%{Ed#P1KkX4aXuK(G0~e&w=O% z2^1nXrMC4EwoRfH=CBng{+T|_Eg>v49BZ;Tn4>Z*1-~}ADyR>yhxE?MjkY#zXfq}k zLky*mDI0dHl(*5WaBPJf+-OMhQxfSH7bj@SD5+tM)^LpUz(>vrmO$n;)0=KEGg1b( z(lRS&idEv`5}Eou1Z@n%_sR}P&T>i8fVyokN@mX}4jPlmCXG^R&Z&~jRUf{hcK-5t z^Ow~%rWL5SOfqrgu`|>Xqp-}yh%6M@8}0!Tx9>R*B@Cl%>%$qX8=o)s=-n#Ey<=gRO;1jaTJbt4Z=Ks9|M>4z5;Ml9`Oc zb0u>Zm*qI-Aw9}8-DFsXw90Nj-DnN1U9U48TgwJhL^F4=bh=igS^e)mJy4r%>$FZ4 zptD+@(wTZ7Ij65xHQDS$CXZv`rpC{b;+#co%@M4c!7m&(^~S*D8Z~ZmJy$E{MH<3^ zWuZ`OU|~m7LlamYy9sOQ7^qoU91I3laQV%prbR=wY$$53yK{!jZ)$7Mdl2BK$x9VO zF@YY)tMRTZF!?jR0t}TaN=jzZupBOB+AvESW-CKouv8n& zFm*vQR$b5xTo;sqNx7VXX^??wkb!A1=_r?Ac~AvGE=p$x0;(J{1C@F@NXoYMpA}e^ zHVqWpYEn^|9avC24{=iehmvurlLF9bl_k^;ul1Qc50+ zSck}<8vcrm6)1>RKonMu2gN9AeYB$q)0$b3;<7*$cY`vGP+(*g)v1xv`luCpwyibN zLS@AgOe6#mQHg-lsn55OLk1@Jg7GIUCq}Z8CTCzqj z)Rs#@qL6b`xDS0kDNx$@!a>KVZ`#1ErO9nm%!&zS$ZMj+oba8CD|>J83^_amXUM^! zbOyVtdX~^!Tsp&`Ru(V|6K=ycTx6q8z9g_bBn4F|Q_5{J#fkQPGcsMF>Q<{D)0P

B>bMDylA70ckdnDYB9o{PE%yzwpjO;DN{K=I~Jy$P{;nq;7IaU-1nA`ORH-zfbz87U43E~P24p=z@4!W93QPc7BUh}fs=NYk5V-Rf zsEal=V#Bzd?Nl4uh?foRpdSlJDR`rFkTGkPR5C~<=A3Bzbgb7}<=O{Mi!geaovv~w z+LzLQRK|g|p`#wJ0JNhsfu&*8Ip;Ei!Z1WlmLae#tg^f~G@TA6n=lV_ks+Ds`6_9O z8GOfpNrDm0el^`(d(PB`S=umL8_Km|j%g?^)`n7TDANWVy;w&t*3nCXW*7|4Du=Qf z&oXnOX$DKoU_pzxj##X{igj*_=dg0M%-3l#R$w031k*!{F?k`Rb1>!P7!&t{hdgR_g!=||>3 z>80vFoc`dBf4CwI6zJsDfVD?+@<U=31;FXRSfCPE4b%hw4E#S}C-5J@srVdgC2%EhH!$TCyt@Gw0kyydKnJi1 z*aqAW>;@hNUIbnP#*RWfpcS|g_$hGp7$F`5jsW?m3UMFs1TY70z(44I`@aPK{wUrS z2VXt-@UoPth^z{X z#WV=7d=7&9`Yh455Fg`ZwJsE1X&RKh!6OcIOY=}=w)_IKvaY6wr)sJh8kA7K9#9IH zq=w4Wh6!5vx&;e80_&vZ^HD166_<;a$)ZPP*$0A>&Ya&UOceN|^B%dV93rlR_l6?ATdEqqkJ!NV- zN%4EgK~lIE(CC&*@=3B-L6iZUSTNCb%0!p@rUk;cf0P$lazfVrA;SAme1)enaLwtj zjTc#7F=&z)jJKP^?~o+$>Jx%2c$ZB^e;z`9zF`i$NTRm%y_W`|JhSN`u=zBy7k7-qK}(V5?Zc*CqDhi8Y;3~gGjKz-wk`frCiwTgKtN#5ySjv z;IkmpeeiyEB!3NDR5)ZyxrE!} zg54|aUOLWT|NLvU%@O3;Qc0Er_70HbliBh+ixdn8?3UlyEic(Ezp`7N>z73l?Oz;~ zz)$VzBw3QE*+V6n(STB+!6&%}FBr=1Bs=g>^=_VDQK2n8BV;c=&QZY}0}9xOo+I01 zPM-j*0=@*;=l3sRj(-bSf_a{E{XER=_WAxU*k1)^Vy^!J;73L;2JQu30p5S}mFJ({ z`{=_zeBhpM?7ZO%+qPWU6uS6=MU|@5x&C|EYdq|Ksu%I|J7rhBXgPa{^jE#;S<9|^ z(F9bN@>jj6)3U2xwA-?)Ui6l>i&ItqdGG_P{|sW3!F0%S4;OxX?-bXeeqswHhXp$L z{4MBlx&CMH%*tgMRGQO1)OMBTHQJ7z`##J*e*tDspZ^p*v)l#3e+>*`G)<4flr;Q& z3z--}pZ5|zgMY`I<4ewd*Wo%UWBY^BxNI~!{`=DY zr@t4EKlA7G_J5yQ(yChm+0?X%aUys=wA2$_PBL+>F z^3AbBjv^v^xb{xaJ4N@=(?RY$;40uQ;053)umE4+gn{dU*MZMKjxWj=Vh6Ar2tal} z2cS$(d7iSomfsg(ls_N16tK7AfCcULfxWqtdP!!BJxagL=7{g|SR4eG(Hx)u+HHUM zoj<_-RNzLg-Toj) zV7HQU=D-XI>7Ssfu^$s5>~~rAG1C4s%RXA#PvbZ(=MpUV5dH$ojzuBkTXrlgVc%!j zM@sutj^i>uMVMUwbCw;94|_YubLo%H0sGUI9UTXD4&llloeB1Q4&E|6IveblT6Q!H z?AKU!Osuf)w(OX2VgI#d$HWZ#Fl+9_zzzFZmYtJBu78VVm%{TX_D#Lc<{JAdU>nc{ zTn&5*xCYn`aQ%HJ@NM8BfNSx`f&T*D1C9VbRMSx46u7BC!;2Z50Wwl9en<;Aq45%V#T@DGTmmGcEZF^T&}1bf88=Y zVwoN{Lp=dqj60F`f9hJKiYTuTok)Ea@ z`k1CUKji-F=|X%FxDNO-a3gRNa0_rRunV{!*bO`k>;WDF_5ufhCr`7LWv|UFGFzT( zv4zVVY_C25Bt!cI*uixc*9hhTpoVJj^rmQROB8PGK7>>lY$=!1j>Uuh!{-vX!iDOA z`1|mp=@mZGRArirqk~Xml_Vqs?25;2FXkNM^u=+iEf5P~Dh%kyp)d_8Wf^QFO)rik zan?y@l_;eAP(O1(o6jWEjF~k}-QYFz<4g16s;~sEoVS=)bE8Rq%+5~5`JL{Z_c#|0 z0fIOl!g+JVxSz_iJHtd7Y*fPqI~^t-dA4^gbjkzdk+;Dm>2=X#Ex6>D>?t`$li%{t zWugNox>9^>RyH0Bm8ASHA{$V2g!s}|^`H#sRIBiiT#~_0Cy=8J2^|L|P;ojFI#bHu z)*0o(bG^*8)fr{Om`;7_jEPkHZTdyOW7s2n$8PDf*|AH@YVI?M-UI4$F};Vhg-FlD z`&l+`CnMUq--^lfr!%r6N}(1yg++?sIg zp9#sEr;+*>FCM2zl~MK5`7*}S9_C!;)^?koK3rLz6D?D(2HRNPYgh(YX`V{`gqWXv zDisyjn?hl*zVcZ~a^USr1%oX!uB>?$i&r5kII=^zM2-EhpmMZ5*VxPs#<+Pr$ttTu zm~^KK@ak4LgGq};9Zq`nd>SjxnI(hLCl@)9F%ubrSPHoz;vJxC<2)8Qd8Gu@1HJ*{)^>N z?fykPq0q=O)Y!ZE>^q@D&OzrmJHz#zj6NwI;6=0Be$*@PGS8_hU+e>axWuI*R}%ss zi@bMns2jQnh-w@KUWY!`A!03z-3^u+IZ=crisFf`%89PRiNZBQ;O%$KV!ZVS_-4Cx zVYas&sD=GZiGt?`Z#XT2#vU7v+&~$?kE)8D=rx1MZr%K zwTpcyunz@34SZgeM>^zpbi_Il-YnCvM_LWC2M@yh%lE;g#r`!TZAo))~+4t_Jv` zNSnDp#O7MJWFfrLp={y7faQixkR-uzY^-o~&wySp0^J-_{QkEN+XOu~2iZ5^PE{&% z+9fK)>F-jW0m&@T$pX!+!xVAA*4?~GC{N^clkH@J2$d^5-TPtB72fX2&|MYeaz%2&Jc%;k%G5oF2cYBpPUgXLV_LpLC_c9o-2C!o%pV!FecKP&HvUq+z#9aBj z+7)+a#jla(M}^o)AJ*4))`9qpe9jZ&-(^*O(ZhUSC!h7w=LVSh8Ao0>GoaKkX(mDD zl8lnCa_`1bUMcs@LoP{g58hphtY>A~$6Q%R)rGfkY^($g4%ci3mT(mpbE1jcv7#L5 z*RefCyn@dnKA_yX`U()ZRuV&j;c;HUbuu9t%K0G~s}9`Uir&^P46zLQCg{t>P4OGz z?E84N2|BEX-qfY&Tdm-ph`b7@bW*RWOM;b1T|`4N4s+bqTQcx>&N1ZymE&nhyQ@N2 zq}ZdbO6yhl&`OSFD($)c9@EBFvs4(>!jLyYVx{O z@cbx)dtaU7AB^kbdx<^X-)&0nS-;LIxo#c8 zWVvcu!Z!D~Hy(c^ez!}!ucD3y!&i!S_oPEH+$HA|w;6{-;fnYiWGlXZ!dG#@%32va zu3!AQ%Y>*92Q)j8ir0micl;5U3Wj`rgAh-_G#4<#=pD3goj)kcRj__);Sa@yS+12? zdh5;#mTKVmn#Z}snOz3S6z&*vha6O35g#2x3<`-9HI=Zr6Q1K>9uG{wh&%Bej<#o9 z@*kJ}{NXOWj2IWLz#EYg9VhDGzE6F>Vl}xQ6X_}z1a29;ebhP#6*VDiwxYjarD8gv7pZ#&fDlE zl~dz05SI4m#CapwFQ1MNp0oQ(9p0v^RYzE??TTT{#SKMQ**yDTEWikWvQ1*;FhQp% z!C5WOUg@ft5iC{fKNUt*#VVvpiL4rW`fU_a+&4*fIg#dV6iyZI7*-g{nJM2rR+)Vm z`SjI2xREIyU$E{COh4uwP6_!)$5pWs&&k5|A*b~qkg5EM(8@%1-foK9zLb)Sm@Pkt zH%m!tovb6y3CPbOC9i3kvmkvlU8&xi?^ypjtkyXx$4txHce-3ljqIVY>Z>DJ6gm4+ z27?^-A6n9Hh^bKGq|(H|mLeTzHzIVTDu%UKh!_BD>N|p5cT{bE?`Q9frV{ zO6$_X@x?(g%m@efR3`)B(A7j8bawJJrmn-Sfw&TN>QOpClD;5eLp;0sBgwLo(mnV%^b^}Q@9~vL#@yI?ej-fz zj&;H>Vd||W{wDpa=2si5u+%N8Ht*6bDmPZQ8zWpJxgR#5PNW9X2S;aW=&=)kiNG1a z*}yqLc@4Cf3v&gq5?BRX1Y8VU0$d7o0Q}Z`6R;WB0&E4o4BQCZ1pFJI)XW{PcOU6K z^6TgLeELy7zk6?YhFM2P`n%P0JsZB62Z4S4ElM08>Dkcmwke^TPLR+M>S zp_(v`+e3N(JB=1n@TI#V1=gVz*I%&y9&r<-Zsj5`bYt7It=X<@!oOx95^B!|=g@hnr4g$x!2c2u~LHCwY|M#ea6J0~MAB$fG4BHN2 z5rC9A4o7ctp7IHo@6@dGCW_oAuuBaeGo(wb{+T^AKk=8Lw*~}5Bcv^KBII(gzdRch z`0~MHo-$X~{?)?!)%X*h3n#oiY4Vv}vRy0iG>d5y3YDJ>U_G4N=!rKgj{#2tnH#sa zn(UW9lF8x?qTHtUA_rUqQ26KGZ{mxO3?zGc<$6$09vR{~J2M*@R4;E@U+wxrhKLDg z9%M*Wi?QE7LtX!i7p?E@?7CC56=4mA6(>Hx*lGQC17Auys`4~f`L)zX=5IUvKGTN& zANr({xBVxcIZE`t@y}KqA^565sSF$cswS>7*QI7)x#y3^h!ayxn45X>r9lM^m=Dy8 zgI>2gQ2BDZLvGhHsn^T5kcoy37b$FJYMT(!z?<0+h|W$MlNb!;Y<8)h!Bgi6Z8zsUxxAUL9kp)TE>HgIkjd&m{n5Dx(7$do z87cjZ^fPwd#Gp}KSyySd|2>$^TlwF4m;$rz}$t3+XD5lv2I_X8ZvTFG;0)VD(@O{7_u`of#!=;@ zPkhca-}%O)8MBcod-_v%r%zo!aXP<1z)njN)t+MXFZ>Jr_?UK8O|(J3zd(lMM~Kw% z4P-HPBFy*8c-IVp!%}mwHD{M4Esq`y+?Q%Vtdq56-rw}?S$q4=$M6o_k6ovU`u#R` zyP@E+AKL}$rxABQu=@dfELmj40_Q>0-S?79Vk!5ndQkTF*qO{a`eoX{FAGH#Hb$z3 zDW{(FiHTTZof*EGpI1XU>3qLk3;)&7b@)$}3Gsc{-!S8)>AX^+Cx0`Z8y~lD`^^iT zDp@yD?8=`T_~kRzPa{sBjTbhEHyQCSG0P$enGanLI)8RQnzef-9ds)gu6i7w>GiAQ zDc=OWJt!a7H#%Ob&Unw*=xI7t!xUp_JL`wPw&J98TWDREHItr9Q|0YP;2E7aorX$N z@so6Os8=1<(s4HV70Z%r(DZcr_oD0^1}k=yU%B_ehh5D7%V<;0d%N+O{|)?p!Q=@9 z_30t!7d!s&mCw9!_m4d42gr)epU_H9@Z{PK^-69}Lh+mIJu*U0U@3p=pfOO_6m6$o z(Rrmhm!PD+nFW zE5%K}!8t?z8VWz7m`JQY`N7XG;?irGaTRTTprHuAqu6MaXfnD~?|ti$7ZRoFwT1@* zoSYiSQ}0Ld!KA)lkhcTk8o@QfGhIxo%@$*KT~lQ2`f=sBU7z!f2PRziIp4(VPVt|y z3n!g+?Q@R;hFr&wdI!`$Rt@CiBwOksoLY?1@8a}9tr)U`-<>87z^EfI>U?#6LpQ1- z2)V+*pzgz=kKs6u;>I}~w>)ptit8oYff&x>R0&rFZlA*en<04jb3O#cjfho@_+#)% zpS-HbC-NKk#rW_$x^a@ETU6lwB7w^*D|V=3J&5ZzY2?^w;P^gD;O21{d0U##Mu10A zSakKfII{V-K%1H zbj*rL9y8W-;gji2Pl^R8M%o8W@-j-rB>XHe(+CQ`3>{1gJxhl6qn3Osv@ameo$8Wz zh6Y8zAqJ!)PzWG~U&ZhT@K#PK zBP$W3T2xl>I90V6;u@25fJ*TX4;wULsldZcg)oP~VKF>;lxhn&BMjOJwM3jI(_e!0 zMmSJ2B&~MDBI(PdFuZlIpYmb%h7>it-kHb{C+rusuE9|nz8t)j3e4EcarsXgw#-h9> zE^s26>#H%i+Aw8V}Ry3wI-el=d(>e-eJjm?0A^9gS-SveM; zIRKlH-fzt`K~io}f|UI30MX=uR0KmkSZ4#|A=F8*a~UuN;7c8S@RT1W}~U0pQp?g?i{~fop(I z1CIl50-qm-$_MTNo&tUWybg2&WAbsi6|fPwA9xn{E$|L7WjGoTxB!R&+W=mK{V?z% z@Eah4hUfjjIcU{7APhVSybcTkLlgNxDR4FL81PFIFG45s!43BTbHJ^{S-?WzCjc+H z9tMWW2PT>*fle$2o&uf+hJl+_npg{+*kt1K(7yoOWP)qE`+$dmM}Y&ttH42^7@ch{ zPyu`a;HBCJfpK8w>A=Onr-2)RuLJ)d_zv(r;0M6tz!Sjpz>#G)4&1157Ir*SPn7XgFa@Iq=qpU&N{O272%Ss=C+~3|$`Txi zT!ABciy&g22YQR(woJOL#%&$z@HYoje-(tO22iL($}xy-JntWsVqO?NncNGd$jWd{ zQV8pmc{4zz8u_b2I=Ih3n!>ojU=w^Pb{mLgpp-?hwIkKkvfqaERzrwhixBmoOEHgk z0H|{E4g%H`U5cPHck_|n0_Yc_oV7SDU4x6yf)Hv}qZVuNcZGCa4ErL)=tTK=T8|}E zG*^qIh`$&jQ5oU|5iW>2DSl=`kfjB(h$8_3dY}PsNOyGNm4&;P6i^|*? z<}r6#{v7D<1LLP24-zxa!1&3T zh+8KoJ|C4}<_Ths4Pw6R!+hik#lL~SFMbU3dz*+h32Z0*ea-K^)#qSHIQ+hW+)P=} zfV9Sq%$DPl8Q06WLC7si^7+4%2{V;EQ;8o%%bqkzu@+)@?ca~2$PME#q|Qxvk`t7? zPPcY!vl-xv2sq!slP@^bCMh?#RY=wEOCjTyLH;j-^vKp{KV}c^O@h~wX1@5R$x~c+ zMD98*o}2oYC$?nI&HdN$FOE(1iRb2t*&DCUUB3GHwN8HThldS&JN(R_octabf8N;X zmoB`=$*RO#{AbR~l-}Ai?+BeWwCx_ghT=-sht0nL_6xaN zc%-CiZKinFuem3q-!m&hjhW)@I_Fq(t{CohD*K_;t2(Y)y7LcCW!UHSZg!%140Yy0 zUQfaPW2zdAJw5&i$gu4<9~;TDh3j4Z%VA#wyS^GPg6l@G6D>(xmr4M8+LFXhpG9J) z478$w+XdB)BolBDgUN1UF_Wf*ug`q!PQkJ5%ly zv5LVKv5LVURxwx+bAcGLlAN;#GZIrp%^PYF%Nq(}c|%XIs0Z>af(P z;WlZAjQMcpP&*AzuVrx_S?x5uy_SW%XqLqqOq0vv>$NP-ENIV%zt^%jbDo_>px3gH z+03$7qh)egvUFJ_muN0ix<~Su^W2Up&&FI`3C7SQ6oZ!IYX);YWix)GbNlAp)UsI2l`$U+^R0X=%msANpDs1{=$cTt@=^f-&^%&I3)RPwD^REuwWDXRJm zMGtMJ-oxma7#jI;OsX0Tfi!i^+@pw?kw$V2_9!A|Tub#sM9i2E z=Ly)}E*Ae}q~Sd8+G$uEm9Z@S5E0Y53O@DkVTN^>FC8ao+2M9!d$Lw-PwsNbA0tqV zB!AN_e1h1<{XhS?ExoV4?lG7bl*po)XNB!*#}A`AjnJb8hXEjbx) zjc3^QokwI^YdrW`J`t}7!%reEH;Zjb#_dMjJQcUw<7Wt+CgT=iD6+-J{m?cg<9A_o z*7cE0yUXimfYkU!7@F)fk}eLFH1e=-+x?-Wk>~T%--$*M2CO7H_PdiM9S**06dmmU z(mNBKA`E4urRa%4Il1`uRVzs==pVLy-(O^&f_^`J6)jQ34S3cI%f&pARuKj|(sC5l z`p1HfBxIJ7M@k3ob&T4-)U7Jfl|kJh^~8Led1OzXZ}rxwz4xQ7ms#3U+~%O>ZRw&c(S(p zqT&^~T`pdZDRJ=f_q?1RX{Y)sk3l5Wgc?XixHCFO4r~^ zp$kESUxL>m^a8jnhy6l?;rHRorH_H%STxc?GmcXJq+DeBMyJoE#SbQmL&uKlzHY@M ze;@etZGZkt&HB81a42osnGd{#dKUM>gOx)6n*mnTPJr_H^8ol?901r!y8)iCIs$N1 z$U-CzE(UbU$z>+33h4MD9{yYL+j(aLJMknwi(7q4u@wL!#R9gFV&EJgnFds&9!z+KkHTqJ~IJrq8@Dhf`;$%~%*}k#4M~ z647Rm2J^hMX>Byp9$6QYKMr7&7X`)A3b=~}kIPv~nm7N(RrSczE@}SMgU^jG_;He% zb;!HHz7Bi?_%6WPHogx$2K)s08SrypAHXYeUIloQ z#zEkH;1F;a$iZIAFkm>q8#YD)6M-{;NdT|bDFL`AQwH$*nvV{>`}P~Jz5LP(`<{Jj z?;}5W;J$C)x$|rPcEcAwyM5c%&MR9Q*Iu4fZ6e#_@(uD2MsEvvTz>qJZCttJSf){y zX|x$?jOB8wWtwW4rkSCpTP{VGiNA}W=r1%wEwWq|Tc%4b(`qx+WtPk3mMLPHHkzUM ztH6qSyJfn{GJVzz^*PJs^OosrmgyEV)UB4wZIXZLGhgr>n79Xjjx0}BfNz4_lkwOh{D(xq9lsG~ zsEWbdHV%?n9$OF!JVE8dTZ0agJ|?=vWde1Knu>oCK3;LV+#+PCE>ZD_+HY%%t>|cN zRTtDo%nNGcH{j?W5B!o;tGp(gk(?B=J*XFUu(QjtV^ewE6*905S%k8)QxaQDiy>50 zCAmdua|1n#f3kcydlIM`NY1pOj!(lTG{#h4Q^aZ*o3!;?H%78 z$F{8soOQlzCT8`+!xK*J*01VRzqIpUd`3LJs%Ck$-lHYi5UwQQF-o<+oJ!KGvd4f4 zWhZ&qBzX#Vm#M0imh!Bi-S(S7$!u*lWpW&rC;osOIO4BJOTB!iJ+f0=E+D%@*_@Sw z&1n}slYghj7Th#)&Y)UqR)VtO$tg`L&U;#s#Y}}?)BD4J?JWPe$FqF591&8 z5LkM>KbdXIK{YOHzdMu`&6Xwl9Zm^gT>|aUy;O%0E=Pvf%&x1IdLds8q^l%`hqpgl z%@AN+^n5V9sr2v%>rCxt>c~o8`!6J?xN7$l8aDFuG31a;6JL(FWgXIncPNlIy)<#G zdV=E@uV~d>gdSR<1TvtuJL{^ipra#Ec0Yt#aiMSN(#qu*FIvVoCzW-JYV->zI|un05~4`@5z=#efJVOM@mB1?CBH&`+5`gKhhE93na^MPJ4G;qA z0s3~^CSU_Ve@JZcR?|#7aiWTs+C+qbMZ$c!Qo+v(BZa;zOLRg;$U|Cm z+M`IYDn-MfRr~qv!p>`+m3jnjUG#t|My)xEF3P{RCqx&!3?1(+JpH+dd+Tf!a+SGy zO}#Qu`S$*#=)yju+oAUuDn!v{rTf4+dTq$M=T(X8WS*RVR4J7{P5{f*vlkxBL#n@% z{Zcww5>#r*GvuezIX~q{UzfeF>94h=??TUuU}d}!J*r-Ex>JrbyX7N&j$wYFuj!K- z`xKQ*HH>Sq`u3~NDpulIfW>HU<=1?#^+fFBHdR#ygR^r&>ozrQ*xJLl zp|-~G)~0Zq(HO=fyg3#P8BJ~LB1SYEi*!VdH{WbC>cd+%g+fuIu<%@?Y8eTY=QM}g z+M3!M!<|jB`fz8sJ=W9+ss?DZh8ytLLYt&%#>U4{(I$MnG|gxLtw^iU5Q#(^5wW8q z+K?b!Tx#UhhY`4`xtSzd!{KN{I2u-&h=P8hQFyM*MR8e9q%DR|rW)Im@{k^7n$a1K zZjFSSnU0D(GpDU794k}=nvvZN&4#Ly^yp@!!m|EXUq)hcN=iygXO{#^XO+(^n>~AG qd2minQ(G(=wu)`FbeCmvFep#G1a=6J^ro^3uFJXzrX|X*VklT57_N@vWl3?04~>{O zW%!|)GqlqOv(myc^RgzTsoBl!W`w0iW_C97o)QRgY3MhAivD*%^RKL8Iv(RHB;Se-d@sNC^W%)|g+{=tb}!!)chHPLICmSqm;bxg-H?@3(OGd;_!zoXx0 zUsAwEupF0dF5hOqciciL3})Ei5^#hKdM~atg*gK8x)!h_6k3JJsV!-DV+*z=3}sK z;Z;~)<4ss!=dGQJvxQa|x*LA;WJXJt6PbaGBS z#SHc)IgBcYksRS04%o(<1~>+(9I4Xr7CBN?j#P4-LC1D}dw?TNxhoiTD$2`{K zfls)n*8`vOFxDfyrB{K^cstgkJcjjiuEZ4hf|q0clCO;^*01Px6nQ&e^8+!b^%$}H ziJgl%;hW|ZP}17y%18#07{IWh&*1&^#$vI)-zL$wX4#+}nhU^X{gxJtimRHJLAI}* zSWcW_cM#7)4n9F~e)~?aTRy4dH0!4IZQ!(iM{G2)9%SDW8xv=dYyhY41i@TYP;OF? z_yWsdCuug11Zz-WJwlK1Qf&l@q5}Z!39-;3V!5ONk8A(y4GU__bmXe@NSUU;MB-kV1 z4T297%ud6on*_^LQDsR{vt(2k&CVjh8WdP>5u8nMyMWyU%L$$mQMUM_7Hr8V5NY)1Ro{19-%KraIPw9Zc=n%t)qNa=afst-@ z{ZMme-6@C6l&r|qR^6-+=|*HlWo1TozY3I~a@j?;=e+!h-erepIluRR{=dWS3){Tk z(!AI5)ZC=U1iq4mcw}GxZ2N^fYZOTkMfa_*yW{SL#@p|DSR{*Mr{n|nC#@+ngs=qD zl9m)wVz8<#J}ub4)@r4T4OW2OtO3^ z%TYomzDA;i_$O2F-l1yB-t3+(A|+0oURzahaNx`ilh#5)oadKAZFh?2P9`Vo%vW({rxpBnf-iaMHea8acsrK9WcXx_b**W5(7v)Kwt#WL{<=%yK zoFN^Dbnd8&UXo=zTV=zj%l$Ia35Ik6(%U)rifq@@Cpg`Pw0b9;V(KJzq*KOR^s1cA zvsD(4x!k*vb{NtQr0?h4YqCX8AL8^Lq>~NlWTXcvz zmrZ*58Jp@XuBXGq@3^9|X;^N{S0cH{Zm}KjIV96&_!Agz#N3&8 ztgF69b}LnI z0A2;?NnrRZ;MIW38Tx($EHbEyVpPj?)$hnIL%|-^`Ul`OfV~R-33x5wj6_!b1z2oQ z700Mbbk!+jOHfe51zI0qDc}lyk60V@ouiWpU;t{OtN5(OQq^$g&RfPD&{1-uE+nZ&AdfK>)nRg9`yR}CXu zjeKN4;T{VI18Wi-X)+k^NV8lVUX}n$kcei#*rLjtVkgJc=T7#-KMzu~?nUGyK zrQ!n347h$0h9Vku(ZN*8Guv~8DCCXJj@{2vpdy{p0xQzV9yhBgFH%+0OETMXL7+LE U&eEfSdot)j(`j2MoIy78zx#d!`2YX_