From 07893ec6a0b1235346c220e668be5dc659bd1a71 Mon Sep 17 00:00:00 2001 From: Mark Murphy Date: Thu, 1 Dec 2016 02:21:56 +0000 Subject: [PATCH] 60329: Avoid NPE when styleid is null Task-Url: https://bz.apache.org/bugzilla/show_bug.cgi?id=60329 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1772138 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/xwpf/usermodel/XWPFStyles.java | 10 +++-- .../poi/xwpf/usermodel/TestXWPFStyles.java | 37 ++++++++++++++++-- test-data/document/60329.docx | Bin 0 -> 31124 bytes 3 files changed, 41 insertions(+), 6 deletions(-) create mode 100644 test-data/document/60329.docx diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java index 55e1ca4755..5f961ea9dd 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java @@ -194,9 +194,13 @@ public class XWPFStyles extends POIXMLDocumentPart { * @return style */ public XWPFStyle getStyle(String styleID) { - for (XWPFStyle style : listStyle) { - if (style.getStyleId().equals(styleID)) - return style; + for (XWPFStyle style : listStyle) { + try { + if (style.getStyleId().equals(styleID)) + return style; + } catch (NullPointerException e) { + // Ignore NPE + } } return null; } diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java index 3773b2998d..6210d11781 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java @@ -17,13 +17,18 @@ package org.apache.poi.xwpf.usermodel; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + import java.io.IOException; import java.util.ArrayList; import java.util.List; -import junit.framework.TestCase; - import org.apache.poi.xwpf.XWPFTestDataSamples; +import org.junit.Test; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFonts; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTLatentStyles; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTLsdException; @@ -31,7 +36,8 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTStyle; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTStyles; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STStyleType; -public class TestXWPFStyles extends TestCase { +public final class TestXWPFStyles { + @Test public void testGetUsedStyles() throws IOException { XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("Styles.docx"); List testUsedStyleList = new ArrayList(); @@ -47,6 +53,7 @@ public class TestXWPFStyles extends TestCase { assertEquals(usedStyleList, testUsedStyleList); } + @Test public void testAddStylesToDocument() throws IOException { XWPFDocument docOut = new XWPFDocument(); XWPFStyles styles = docOut.createStyles(); @@ -70,6 +77,7 @@ public class TestXWPFStyles extends TestCase { * Bug #52449 - We should be able to write a file containing * both regular and glossary styles without error */ + @Test public void test52449() throws Exception { XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("52449.docx"); XWPFStyles styles = doc.getStyles(); @@ -86,6 +94,7 @@ public class TestXWPFStyles extends TestCase { * they exist only to copy xml beans to pi-ooxml-schemas.jar */ @SuppressWarnings("resource") + @Test public void testLanguages() { XWPFDocument docOut = new XWPFDocument(); XWPFStyles styles = docOut.createStyles(); @@ -97,6 +106,7 @@ public class TestXWPFStyles extends TestCase { styles.setDefaultFonts(def); } + @Test public void testType() { CTStyle ctStyle = CTStyle.Factory.newInstance(); XWPFStyle style = new XWPFStyle(ctStyle); @@ -105,6 +115,7 @@ public class TestXWPFStyles extends TestCase { assertEquals(STStyleType.PARAGRAPH, style.getType()); } + @Test public void testLatentStyles() { CTLatentStyles latentStyles = CTLatentStyles.Factory.newInstance(); CTLsdException ex = latentStyles.addNewLsdException(); @@ -114,6 +125,7 @@ public class TestXWPFStyles extends TestCase { assertEquals(false, ls.isLatentStyle("notex1")); } + @Test public void testSetStyles_Bug57254() throws IOException { XWPFDocument docOut = new XWPFDocument(); XWPFStyles styles = docOut.createStyles(); @@ -133,6 +145,7 @@ public class TestXWPFStyles extends TestCase { assertTrue(styles.styleExist(strStyleId)); } + @Test public void testEasyAccessToStyles() throws IOException { XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("SampleDoc.docx"); XWPFStyles styles = doc.getStyles(); @@ -188,4 +201,22 @@ public class TestXWPFStyles extends TestCase { assertEquals(11, styles.getDefaultRunStyle().getFontSize()); assertEquals(200, styles.getDefaultParagraphStyle().getSpacingAfter()); } + + // Bug 60329: style with missing StyleID throws NPE + @Test + public void testMissingStyleId() throws IOException { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("60329.docx"); + XWPFStyles styles = doc.getStyles(); + // Styles exist in the test document in this order, EmptyCellLayoutStyle + // is missing a StyleId + try { + assertNotNull(styles.getStyle("NoList")); + assertNull(styles.getStyle("EmptyCellLayoutStyle")); + assertNotNull(styles.getStyle("BalloonText")); + } catch (NullPointerException e) { + fail(e.toString()); + } + + doc.close(); + } } diff --git a/test-data/document/60329.docx b/test-data/document/60329.docx new file mode 100644 index 0000000000000000000000000000000000000000..c0bb15ca0438b976e01644ece73981c5980e0990 GIT binary patch literal 31124 zcma&NV|Zp=wVpg0xww+XL+qP{R6?Z+S`<(Z5_t)?B?Q8G#Z~qx{ zj5*gFYc3^OP%tzgC@3f(ARywu-@hJIAZQ>RQ3rchGkaG9)t`=LE_w`}cD8D&;6T7i zm(wUsDT)sJOh`jFv`@TZ-RcoWh-ytFj;HQ`4H?-c3lqigjX!|P{7{D;6Og$I@E~pH z2(+2b7e5n8XNrarfwL+1(w#j?SQ zzDqy(33}-Oiu%iHJ2@?K)NM{}m?9qkrgJ@+Zdod+wyTJy=erCXEWxxmni0_0i=5B< zY=ulVEp5snP&@Nkn0iU%+ZHC(69)#W>MULCd9>1CM7iS%8QIgvu_;JOVhJAd1vI@O zD7zO_!lPQ+h5(`QiD1{|E+k}5_`wO(#%_z@?qP?Nz0ij$x`0_fS@AHoaiK}zAq;+qukN{xsC#+Q`EkNl8y4{Pn7T}!@RWKI>y+aO8?Jz!~Tu8fwP&d3nRln>wm?$DxuGMfC*0M zCipXWu1k5n535jt(PVZ5YYh@gM_LYbW7T@)>yvMF6-4jMNOEF+A#v8rB}>9>H%adn zCq)fDvI~0oRewO|z0(sYIkdBw*>l-(A1?Fw+5B^yRGNA`I7$mWas~$?{!e(?R4?ig zjo9;1DXbL<^~|CPSwmrtliJElnjdRkI`h)9wUmxGWCg!?_b>eRX>30jbHTb)R{A(V z|8~9Jpz3*ID@%+u^%EVAEfXVoR=jZ~49;!m+__g_Pw7xZC>?Y@bOhtOkGU?2_SZ?| zF}5Jb4Y5|E!JY$dmY(nf@IO!y#N)J_{nda1$iIUM?=Msy4$h{G{}V4$2NO5Dzbg4h z9{&e+suKzWOh}!icZl&fgI0kUN(=fx+>aul>|PUb?)YT z9nY5cRhfsVmA~f>D^tzsfJy7h6d)r)q(7D^G*2um%fltsf^DC%75uB1@Z4Q}hhd#nK24S?hJs8TEfp-9 zI}HCsI@Xj~O(2dowNEmtEn4{@;Qm*}pZ01_K0lmU-}K8Ou)##@fG3wce_KH~iTS>X z4)RogRYwz94`62NaS%G{;2Sd)y_W_PH?pb}Bv*X$VRZtnE2MX3wNc=4VrF&Afg{H(Ts9htLb5Za7Q3vrN|H zl8$kt0s+qhGgBb~uhsjwK4wS777fhwd|*SI#ybjYx#~MtJfV=pkNDugPs@IHed}7K z#z{FI9t4OVcCwKaJWdStd_O%bq|bD+ktqk|MM!1w4{iUnN+Y||s-oy5hOR67wRj*` z>-XbHQ`6*A;7RH#!l~zYIlKK0!{r#6c-I#nkKb5%JOehjW!M;{Z%W{RSRro|vI*%S zjICPef?2^50KtYWyz!*I4adt^%*Qj4QHBOKCOOR}ye9btW^mN?7H>Zc{4|V12|U|N z!d!IMiksOC!5Q|G6fnVahXqk=43%|!F`PGXhw2lJs~hTLAczK$aeqY5^Mo!T#-Yqt z2LruuGf55295c+g9nPLOiQgI9V!$PP;AHdYR;4G7D6aE^X~mKjw{WaFVg=cSbC4NI z=`>ppo@CgG5hya?K#HW^6?nX0D7Ve75CT{AtE9_usE6M++uA{*n9sPDMA^F$uJBnD_!@-Qba zoz#HkzMr44TEyxKAdfz3-b2rMm<{dotG}GF2Voa=eKv_VCUF6EEBEZ8>iDcR=3_2o zKyP;Ii@vk=Yt61b?{yJg@q0%9_)}o*jc?l%T+0SwMiK}l4N=Y5X?i*wqFsW+bOF!RI~o(8;3B_SH~vk<(f-lihdOf80z71pM?a;tnW_1)*dgjR9* z)am&8Wgwl@%Q-`z?sG5((lBx3{Ws$!=`(?|`DuGDNl#gMdfwL=#H$4cxyU>fAI$Pi zf(qU!1a$ahah~V?{4EQLIQl2d(~b%7L1;)tPxLvS_k0nxA5aW4WzenUk9Hx>EONLU zi5*RJ{G)1&_H%;Va^zXN(=Q8?dbsf)f9R580`IY!1Q8q=MX&bni{@fcJ zZfEPPb67gRuAEiGTYHTXU5YxeBwxL8F z9!oM=sy*!R>0w;0r9J;)zy>F?I4@;VkYI^(j*+C3U*w;9CtMi;m#|_vZ0ZH#zIwBU zI33zuC8(Pa*=Gm+EG)=lVMF-*Rq*Gcv*=HbIE5;&46FQkk<~!`*TMpZ<>yJM+)_JW zL(1-=@zXf^tE$UVeBfOF(H@y+M{*s^b2)uImbIzA#xJ$#3(74bFW53-pu4c`IO7M) z%1z6zAlq#X9&!nY5gKA0(dl_bG*=oj#(Yn>frNmpH*oo5fU!Z!0T4vX2n_+!uoe;$ zA^Ckw_)~t&^^`p7oTZdETc8G^JT%H<9P9G;;LkpPly6YCzHiNJ znIa$dF1&O|t!}8<{f1)j;XvEMHvT&X{9CvoLsBfR6tW4F3kf7XP*%Mv80l<~n0RHb zB@3I*pU#Pm_pU^qhIalIi+`%axU>}Wx#&jThtedqkBXtl6o(hdp|Gk2 z(Vu2Deka7=avz#2wkbV>u9{+5Jr66=l&p2bUJL)P^$eVDGb+uhl`_K1E7j z7{}uFrK{Zb>{+hs*KoLZ(~e<>ONrP(y~I#h@WB6Aei!8_2Z-6anip)lW>p!vR&5O| zYj}AZj1gV64B1htmtU=Eh2tuSPD*YlIo1e1Io^6r7;dy%-CpMq(}5w2R3RmHZ~7Bq zK0bKneAv4Vy5^cJ9Bj#ii@Tpp;?Powf6SM+k66|{^C3CxCZjrCa9pNu0G(RIJLDZ0 z7LG~~Et4S*l#^VTrX8Egbzr*uafmLKyj^)UI9V?*Ec~4rsUpZgi&?%zRrvct23F=} zM_`BNloD^4FiwX9S6bAFA%KAlW>%`R@jPsY%Ydu3eJzgcFHp71FC({^ zV5F(D-W}MvUVQD|*X%SXvdJ>*!dLsN(d)}_cG3l1YaLc&Ak~-6=t}&F?GdhKr)38# z!z~3pcUxz<;Rg1wsMd$=3{lWQ%hw-KV+qA2GBjSM=(WHC-wYV4B&;JP&hwDb#y z$|XQQej--!*;3-xd?+gxur|#z$&m)t@@Z8y%nHm1n8R7ey%j18_8OIy(FeOPoiXR$ zgvS|GT6NgnHL=UuafG16lI}T;*<$P&!hHFfbp7;Ls2Qr8dwdVl~Y(i^VjL(N1J`DsBgg9VBa+dpW1ZAh+cB>v;?=a2zr6>^4d z#l4sZq+sl8!5{H3e7rOr79D`U`zQ9FZBm(2@1#HQRVPlr-kSH%0p{3lJT2ARGIotV z+y3v-!Jgq$=+m&gO?nAYd37QTAg@LZT;`k2T6iA0gfr$&n_d_r?kXM@=l2m0U#6Rb z_I@5e;-9mwIO+=J;p+wip4C|kqZEaXs0sUuBe20`IL2%W4lQ(6n<5tUParzmesapG ztdqr+PzgQMbDK#MO`OU=jIRcWEf$VRv}G?Z269jqQJ49^0#yTbO(RKyk^pwkSb2OA zY%h(3$wKc-&lh8fM@oXUxX%0y+YQ{{&&we%(b35RTc=E`{<&?-;+Ap7 zPdh!ZwrM4+NtKvi6>xXCILd&&%*CBH)zd`uz3h;a>a0KlkeYf3HObA(g%}HafN1|H zLPw3Ro`z<3T2b@hhF(Fz*U3?T zT~d2BQslAwE=t7q36lU~T96~`pxIW=nqx$dlPN{%s_Ad!IDUvqPQ z#D$b5 zW5>plVbLs}zHG1j>B)AvY0m3L_|-B5dL2^J2nCw@OthSg*z5f+VsT0O=9zn2mr_B3 zEL%JNI=X*ZovmUwDD7eycE)z>q+K8xn^MHPh6)234yz#;w&G=sTo@DOWLoHoB07f0 z*d_+%FZgg+Xo4~plBuA#B&KJ4ZW9TL<4~us@Xo4&g?%-*XFS*<8)AZ9`(Id|u7K=? z5E?ssFvG^GQKh()ah1M`1kOjNfpkZwpCF+1DPNxDU582|zWJ8+sVbhJzbv-5Hw0H- z?kcZe+9745Pp#1`jdV{q9Stu!7p{5-U0^PA_n3TE#0*k#br;?Ya^%MwtngKPRZ__Y zZ}!igd63DqJ4=n1cfol6_9F^NEFdo9ox)VZ=f|2@q~oo2yeY`A)wvK>7Bf|3{bWUu zuoOw~qhIP#t07Z4b#vkb^h~5u?0K70PRYiTpf6s`IhvlBuwvaWcJiwew9V>zBQF`k z2PoBZ7VH2C*-`f57#&g;VRTk?7mo8L9()bgGkiN5;sL`bieF`MsuEX8*RD2uCC0S; zZh(u+zFeRJkUF4qLL*;>);SCV6PVn16LI8*TCnQRx{|UwH9Qx+%s;wqrL=NNtq`sirHX!fokSNREN(*$iK9rXYO;_daed~ z{t=%&p2%+wP#~Ze*ncO!|FRv->`m?e`Yta2n{hmpG-bcR1UGU6`iAi9I^r;o3W8Jt zQC8=Xqj3YYtR4?GSxh+L;OI)y-@*>LXvzrlB6uI*|D$BN#Xnl%c^(p+gYqmPUQ8P} zw7w(jNMg}mPr=r$2O)^8pNgQA^fut&kH(xKX}hxM`Sm*SK#} zWn6SOx6GP+ZC#RD54<4hKcZB_<|@~izBn>=C88`$OR;ZR1~l}HnwY*BBOP5wC=S>NM%p%7Ft9d zb@Nd8CMKxrBD5|_)pRnKo*F$XbgVjKg-*@oDPMA!BhTf#1!sLBKM9LTdL_&*s$X(< zN`}7t)d|meOm(|KdX5KV0~A1N!_A7mofH z7kK}J3$_1^3mbI@ZsKw5VS026Xo6owa#c5e*x8rGh%k12_2d>2jUcjS9^mh<2S#_H z9Jzv38=WH27=>`q%(kOClrZWer}u2|1t}2y^Hh7xhUlpv@{wxA zA#ys8X6^gfH#=F9#G-j227TAWwWQM@@}iXV+_aAnBs*EzfJ&8Da z@R>Dhhc`aLHRXcZ<9v`@b%&w+rMHPqqY9YkhXqW|iz(nOMXNT;qXF}yT7bCEw!emN z!x>b4=Ebz(MSk%SSf`jDHyAcQm7wC}A8^Wf;*xM#vX68ZRb!zwm3_n}^X<(ox316Q zIw#7E_Sk1j14?zy^zUAtoVm_M$LzEd96b0qjm%Vw!{J_5X- z!LGZ+1s0Fe$>2JspAwQ3dXh&feOx^|+xJV6F}cn4K@ubBrGP)z9pqd{WTDR@=;ZRu zH~Wp}84c~}(WNB|5b|Ov_RD8z0!$Lh!4rtMZzr0)9Yau!%4;Qr-zP1hci#pp9dFZ1 zT&(@aoc|<-E|-PKp}%aP__u8Mud4jt?AU)*Wo;dm4IU&vLDmyN&kuy|IIvqZo+O|v zI9IH^(wRsSN^3J|QtH5u_l5+s5#qpKALO8_m&VFsBs0_$b6rZGR56LGO+_eamhiIKBmxpVkNc57twc}|65Eu(S!UIO z%Y@F~rLF^9BjB!-C8oekN3vz2xnLwCE%XN!;799C$%($pxE5J1Qt0#oCBgTGtFWm1 zfr59vq>fZ$)QbBKYf)JI6e67Z`q#mwZTJaY(c8mDRCif!-^o?_WDaL!<@U+>jKvr6 zCWO-T8bp2&jhDjKm}ZnXL0+sqi$ug{$rN5lzYq4T)Y~d_3#Gg$tFU(wq-_u<#0h~< z3&6K3m5l%)Yx311V-tvGGw~l2u8ebbL%b}vDcR=n#`gwFNQA`a3Xn(Z5lc==*&m0$ zBbF7Zxia}U^LWw0dZmi^K(;d*_s;P+$#JW#Z$ibzuQG^sb7u3Q+p69U`>^jywf^}7 z3}d?WUUNyV0@t*S8ToAI0;CwHOyWRZ)v9WdzW2x^jR`*z7A3LJ+GWUf*7#g{N~5GS z-B*zD>>!lD>O1Wk*@I)Z6YBu~7JcsvZOu$iZ{s@;Xv zI3^BY{d_;tG6T-JE;FCjAGI&0JXi??a_3P%Z4C#n*jg=}HLuB(e=g+V?^jO45$h0+ zHV&p|DuvNlxQOwjP@6iGO}B;qiY)J)t;Od8aXneL+X>$)DJYkoxF9GB=88wZ7{tAm#S-B)T z<|h?vudfry^0OOuzp69xy&V{y%~>92`1w{hlH>(>SAXZjugq<^*!_wX@FmDq@BzLT z^*C2nev6tJ_79F#%%Z%)eo-gU&s8+|OnW^5JtEPa*`Z|}R!n8dAf(vXS+0{EWF5lQMeYWEu7O~<#~z{U+tXf9O_f8Oru3f@&qa>V6C6PB4k zCvtT#TT8hBbBkQ9+n|@nC9@ABu!>00R4EXem-fY7KL`LGXg3N&U$qM}(h0;^Eq-TT zf zixt`X3@!lCh1~EvS!N)XDTW^H0BUg?520LANl?woPCnTK+h<6o1eE|aOy68Nb+qb5GaS8Jmo!N2~+go_8t-&J&9OXlV3sA-Sve zjFy>s9I?ep^eshi<^njAoDIb(Q!Z226e+)1jfrVJUeOmO+AD9xfcHNEJ}e zM8hiufuphF@0apru_H^@U zIlMKZ8ji#X=rB?Rxptaf*Tphfm$y69!Ws!&YsI=~1&s#CHS@wgUB#kmPAnGHqb4L| zzQf7Hf})^?&U^cag$rLI6c=}1D=RvVg~4p)m&KGbll$^0ndjTE1+~k`A&7Lzwykx< ztY@V!-ozEMptOUqCd%~7San8@z(`5}oCaMF-6};A6T?vVl2I7YRe6Y_3#%22*v2-| z5)(Q)uv$kopZPf=#-;L4M?*SexmV(OeHNjelCXSBoXSiD6G$}+u&!LpT!T`1$?!$- z9XsncTd0*!F0ORgpr&BSx>zwvQiwV?0jL~DE($e)giE8)7A02=cpC^14xvH!((({^-B0s zNsiExur|flmp(GY$F|ei1T?@gO9U?uXBmF0S>6)jJ-|hqLfJC2V4C znvZj=r1-I|;p!A4akz(tvevN|mVMlo*=%r| zI2+tkNY0MWX(!uk%6^!Y%RD>t*0=JBjO-@sxX~Z(6`8>sb%3WTgS?r_sHK5BP28&@ zkJD!UWHx-Lccq~PWk{C_QRUVA)u!rh^Tt4t^KRgFVMVZv8W0#WeJoye_7SGP8dXd_ zKzz3tnf_YaIx-R&J}@gN0m^{^iSH9XbZbNEphbzxERh5m+rG}Sxx52H_=f)Pv8KkQkHQYYB>d7$17^8R zQ4K!~$M$5Xi-7g-4Z(tcq&S7;Dhp^BggL>0)heOg=?`WeIlK+bn6Zr+(5aR z+K%NF{vNpOjKVJBT`O&`iwSx<@s|rzU4Hd?qSadqDt3%5WmWj5^>g!rT0V}Lwl}@6 zmXk@72Hac0qE;4fgkYz2Cj~nHbGCwMOO$&0Z)GUL{r^=N?95E9j2Nx#j4aHU8LS;G z{#6;;&6ISNSJ+pPh{!^)5P(t0xWGK1`iNUQWDA9HZ0O>Uf;u3=cCTYXcdwUYz!2x* z*=GN~201O(+pi_oew}J6Di0RVRqqxz-YfbSn<}Nx7455LmxR48=-_7HKnM&#hVM5Z zh5%s3Lm`goFCaW10-#$1YOvk%=&Ft;{NCr49ykOHh(92`uep%d-`I#>ykCHI|754H zm+^0=+8!WAC}5F*F-R^(pjJjlg3jK)=L57aQmKG>T2r;USD2cee-j5wu4mKh!-rBpK-DO1d+G4CZy-p!I*BfkRmXJgr zm-~5=7?3kGXZ-wU!a;9i31PH{Z)8dG#i>)GW?7K!N0~$~Q~#HMYgnSaIp|oIy1)zS zg!ZyRmB<@ z;?!J&4b479u`LlK)3JFb3Iw`N#1p(6}Jzt;Aue;R8j z&OA^RD@KyI5}Rw0hL9H)vC6f#g7;^GfWS+SE>t|V-DTntQ)`O4+>v!bPN9m3DDz6g zzR~fGz>1>>^Gp}Fy=!R%$?Ncf=8zw_v=}z6mHzk5@sD;(l$N6WJ`B9)YsbXcog!D&Eex*t8K4i9H+-oUs=tORr34MroEm5GY;Q8{WE0 z6$cDWO28A>E;~?FzaV_Qc|aa!0w;WMosyY$0uR^*Dts7%LH7l%IAl+oB6Mvs~qVXAgsfPt*mdT5ih| zOyFNRkynKt>g?p|)bc8!X6%~dt5B`2AF2%KQLiqyiez)+Dxj#9^;JT$V4H%3?kQ^~ znnTJq3-0OQJ8+wUex(hcDQ@e%Ufhmy9ey$at3v3^K4FN z<8Dq7UohHU8SVDZ_{eXk|9UE5Mn=@nonFJg)kkG8e-KOdZSyNE=`HoAlI`lQhmmyQ z{v#e<`ay?`L^bd}_;~iTHfQM|7D04H8udM~UpCZq?7jt)yp78hiU)D5_vd-_12GlN z7iOx1)5=_q<_!0yVZP3MeCl>;BO`-DqnP%CojdZdHRFP6MHTJ&bo%}udP5$38CmJi zEW8h$J(%70KseH02RX9y4DN;cxmy(vR=DPc4e1PYhh@KkOzG+i7IXNs{Mh?*6rC)3 z{MuBp-IQ}xeWo@Q?wlJXFZ#n}oZgSITNgVoYh`_`4F;H){$zeu-muaRO1^iw!3j>) zhig3t6_NA$?^Eo6XvqXsf{S?)uTH2lM&kDqfYbe;DiiRZxop8E$Lv_350jbczHpEi z(Mb<5)H(D0a;JvdA<&>M5;%C}hau@4&G4fRo(RC$_M`!ft5rPDl&{^6?*F`_h~{$& z4M$9+IaW~>-KyL|<*)mVFu{pazLXI-)B9W430xujiU{gEQk z0Uc6NVR%nz@#0dbyZIgh+m5@9pxHXTop&@9y?_@~$FEfPtc0$th45;+h%dH6;r9}e z6uIiqGPu)d7yTnKWug7N3s?t*mkeTgXrF=M@y27c95n|!yL9V{ou0|+2NK`L z6iI>uloHR+r$?l3H`jU$mi7-f+Fv=vImI1rbFj9{6pD1j-gSX8zGb1{l~!C;{lQ8~ zVeb2axqZVeRC3*}InZR5r!)jjzBBF#sUooJG!>_W2uW*kwmVRJ+-UyG0Y;68Z~-Gv z_&-Efe&;=KtAio(gg&Qyxodo^&*X~XZ6_ZR>^z06R7QHYm(iN4kUf>3l~v%)p~aGh ztxY~Jmu}*YS{yP_cglFy>AX1vHp3|=!N|NR%KQ-3B3nHk6#8iAmMcx|LFg9*x3*IP z7vL-10^)6*bdaWg6SM6Hz(ee%g*1WR$f1wDJ$uK?KCA_{nJlE=fnUjLTnk?KDR2rQ z>}K}Y*Fxx{K0i}oT<0TbIyLKAOf4j*20!0yaN#EZf|EsTN&*AB^V!$59;+s)p$Nb_ zbA63f45T7Qkiea5s#JO=i=AG4PyHFAoTm6-<%3E1Ot_jY-?Ae$S@JE<)^+thr z!FJbXC_|34aKY(N356{&J;l_-SZHJ-pPRbPw!XV^-Mo*z?!X3<)z<6jEPK1sNL&`> z6#QsF;6PL2VRPJ=WkTlXu!D-nv9O}^F$UA4KnL(65$73G#-}-T^%c+wMgCCR@A%uo z>y$w98*&HlolVF|WSgtL^ulZ1rm5WMAPntq=fjsaY}$=u;1kxX01IC_-AMVje*K<> zT*O9d0e<)Jse7@}rGp*@+1*{=%E8yGqk|EVd}F3Opazxk}I4~8f?E)ulBD9y(C{s@D8eK^WH7C*rE)X!K#xT4+@L! z_D5~Na^2|th5|f#jST(Ve%0lMYd8cEObNPCDa~@|{pa<_c@b<92Yx4sac+2vl+_}ug7F_*`_fQ^57O1;0 zvOZLu-?H z5Y?@iAqNJxJ|7odiNyB5+vB@47l+oMUC`sh-$GfZ(;jJxq;m0Ml5(@q!~Ad@`E z36*TUmC;WwyWERIe?I$U#>`G9#CU&$_z+M051IUh)5#ft$mcpTy7dBcJK;&&Kt`cn{qO;`7}T{N)rwVz<`&=s{!^u(xGZ)6yr z$d~k7I-9^M<7)*13-yS9BL#78+cHm&p~y8zLzi-bIp>{@B-^g%Z>{Z>RrQXVOQEy- zySokt;U;;+h>lz-=Ee*qJrYGt&&iHibXr|w*xWN`NONo!%-28XHWG({v^+n( zHUp;Mczx{B{qe{B%_pDEpp-E43j!~|pOB+$o&f~IUh6gj@+xuOcknYU+9kEuPq21b z1Ja`&fzUp6lV)@QXp=XGpLW*uyVk|i$5QmAxOjTuu`4_!!D-1YKI5@9RU@mmj973x zP0RVsFTU-Vem91y1=*VwkB8)XOXZ2&^I>Y>^4}a6r)GVdV~O;;viL(=S*%@`1C&Sc zIW8d*vuS?dCd7Oo&py2!VaIs)DcGKOQo$d~752ycl*|}omItKFfR9J z^FAkrU2oPU)dHCio+!8}3p8x5X&a5(o6XkUOqb{D#+*yO{3WRUM~g766NDgl-|(O&T;#HY;`wO^=_F@s75hi5d$+5|MR8iO8CxIf2OhGb3W^ zjzG;R}+BwmR4ZXdN0M5A%jS4v$q{Kk~3q0$LL)84fYT`e9jb|V6ZILYS5OD ze(nzU%b#Z&D212zQOm=j_Atr(EQSst{!H7QIE=+t&edathoepM?>&;l97r4n?1N?N zsNapO$XsfCn1&{mGO_fJjif&)mS)r{HG9@2W1AvJSV?=H0t&&wg^8!_1&w34+`ExS zxa1o>EeCGa)woRpZY+HW%f%6<{PM0Ib82c1G3!qJy_e;1dw#4$1{ ze+P?PtvzH$FP!g=d4=hM?p7>frx|Jow9dG^*tQeHmy6@}0%HELInEkjDpl3NaSDi_E#rdQU z_KU-d2GkC+rcq5Qcs;av2L|-SlO7{RhJPAH?wb#WVCVRIDJu>2{th3io<5PI-fMxT z@d@XLB32YK( zKE{b=)(q%eQ{CsU3XPwvqSN~Pgigk$c}j=iIjFUmIIsuaA=*wtv^-X(6q{QwZ0OM> zetz}Sg@zqX)ZJ;_J8P>F2!wzHM_c;E)}6GSdvDhT5aMiT!d#EprIr#c>@xac7 zp%nhw(z9|S^O8z4IE$q}{4T`Cb?Cr}5ny`-tZzUt?Dpv&?M0LZtTAEx(3#MRxb}5i zJA>HJJZEL~2$&$O6*mTfks-O9@baL^)~a|LIdO&XKwJ*xD%=!4%xh_ri`|H@>etAZ zLsZI-CH|qO)HBm?=7Ald8GzRM`=p=ba2?G2<2xq{*(mJl|q<)&VlL?tA4mi}8`cZ8t@pR= zOg=f5-pTH((DEpT>|VK5LsIZnLH3A~TA9j^UB#5)>;}dMiOP~Gqe*W~p^=^q-%G#W zqqb~)tFGd~MRf|8k{Y5rUorNMAF@O9d{tpvCG1~KwKfdHH-a1eNUGWyhdIBn4fS-7 zcpo4g5966V=yiuaH^#Rh7DM_S-tNoA<7^}*X1ch}N?lA?y*n3R z1(6!WmmT`ca%Q>PHB*mPOJorWB2wmvXAormY71pu75?KsRc8M62`(wu6BxyH;P&XK zm$as0E?#8Zee?Yfas#@ld$xfVQTymx($K**Vn_KCVE{`*(*}llbrZEP-qtDG>F`_- z_E4qPTz~er^G1x#M)Xy})Ywpxo#@CStV&0QZdTd6LE`8a$LZ9Qf^o#oDQBjn{+V8j zEUF>yp;;;7WUB1t?pD~$oNhhPA=A>!&u74LLZl8@@ev)h2XjZCxi=%lP}JNSzww#H z5BAJLNMU2V8c)PSc3HIwl5I)gMSVdIcA;Mc(%FwYIekkW2q>xIrvqi1>kSbsl3VuC zE9aTL2z@*o^jrN5ydp3c11REulb2-YRE*-T-0~vLd{7oFBSoW{yr*P5Gf;}-|U8amxQ4A`S5p?xWGJO1+YOMHKy|UqsmmU zmfR0Xb}7)j^fIlfy5i}zrdQmzt7AQ*;N7ZUO?#}6P>zCm4s2SnRM3IiNl7!Vh2WEX zuONQ)j;`pvHP2A&2EepcvtH1b7*U`=)J5ChB*gf-rlWn>xl6V&z1v+($Lfc45(Kms zj!BR(S-*@FSb)WrH7(THY#N(Ly=uOeQllJz-$Ew^6_{6_c z((>+&pA~1dIaBMsslLg-R&?D));Lm49Jntv*)&bMIOhG8Cb{0`aUi$#tCQF;N;ojG^PH6P%aZ z!}ww{ZC|H)0x|CFHy*Wjh8;hO!plptHKH{PK}J4Aq*qt0D=y{UxSYv2&~~X@{&0yn zF*aUSMm7}^9$!&eMKS`FW>bAhJ0qpDy;o)426oK`NQi_nYn8f*&kH=t?IEZZtSGJ2 zQY0n*+37VVUJM$lisDee<48cIwyIa@&hD*SaMiGkHN9M7=5QoRZ#cXSyQP9}9uC=i zeBA6hyTLSnqhy!Iym#~1lAh^{VvKso35s)Q?5CeZ3vLohy3?@g5RD~)K3y@s6FF9# z#3lVV!$=%pEMVqcq;rk+ujOQ4|A8=5xSIaiZa!l9JAT>MHlWK#mPoGm7D_RqcE1fS zhlp@*4sglsWvmk)4B?=!;S-W38bO{M2Bnp+84W&~vuek0X6p3_ zH^SyXr>~K0KEw`7ZhS&V1T=V*jCtlQNzb}TYsQLb43$BAKsJ}1OE{~vKqQ~Dvb38x zoOVKh1ueCpC+gH%S9Ky1+ImQ zJ4xtuMOfaoYo?2a+8?*`=Aw3~Q1JsqLSa!&yR*U{C1)_MYmoyJKf0B#s~FZ=<`=cf z-~!s%_P9^8l0QEtN z+ommv&*e`pMUEcBsaou(aLoc>Kqgw`dE^b1f@%|y0{u5_FgTy8L>?2?WGFOTRfbNk*+KOJ#AUA`dxdU+x#n{^3&+ZE3{Z=4IyQ%H_g0nv5siB zIH}LjUiO|zT`T22d7&>`BB;auJ?_XKS{|+@w2Jg@YkJnkqE$?DQ%?87>dCY_-p?WC6}u^0epFQkdfXg+*qHws)~k2XC8IIj9N{0%{aH=b!-hl zImh+hh8i@r6DTtefajN1OT+@;`q-G+B++@vl$*3|gFLoV4T|#B;+xo5LLM~OzF5A8 z5B%wXqPL>fCi@IJZ6%bi^gkLq>$tp`eC;EpxVyVsaf&;|9g4fVySqEZwNNPT?(T5o z4#nNwUizHfecGPgJ@4=SCz(&?n@KWvW-^mpS1ztU^Mn`iYq*?R@-AS!XFM%DhCIiw z4u~62a_{m!B?sQ9mU>1aduxP5E!khbx#?>7a0ZruUQPs65z@KQwgC_>BV8{$I4D^R z@k(Yx@d5Y-@I2euK|5i2YI0mPdJZ9$_i6e5)~gj6l1x zs#UM?u7iljxo97I!p(cuLk+V}E*#kQbG9aZKiuo)3TW4^T1&&(2}iTyQwz2No6%RI zMa0GsJ@HsG2GSEA2)#SEbT?yL*_7FE$70Ju{Mdu3;1$GwL~W3dwPd1_(UubTZ|yzm zt1B)(1x;#th!!U_$D;-XYBd^mSAI;+j^i!MZOUa{P_IP3gA+0gEAJOme#}7mhzHp< zocrm?8Kp#I{72ifg2ZM}eXn2| z9bn=^XGRGG<_Bmr*-$VN=aqmtKa^7!mr5Ycb8e%1bDEBg!VBZ^nRZ|ks~lF6yC({g z7JxozdQu|py7ESRp2~+>^X`oqb1ou5>kUEW@BKt#Sn40Kdt9t4TDO9d#T$^I@w5W> zk38&cQ57VJm206qY{?aR zK}$&C^W*F-qRG0O=%%ADRr=V5OFa|1Otd2ocK}F(qB;}}Xg5Q-Ba3T^=}l{KPMv_f z<8Qxd0gP7XEyN(xb+eK2zl=Yvo)-=9cR17rtqzQ2&?~yZ)a{CG2QHG&p;tIorhLB*LgORiO3@3A3xCd) zWPPsU%Q4|Hp>cA&te94shMHI9HQ6c>@fE@DmMl*Xx=4H16@2nG+3F`34>u&}v&`uV zC7s(WXhKku1GX}ao>qC8;WfK=FHIFdb9eVIPxdR&-R}k(y=K^9&u?CsZo*6OT5t{Q zXHj8IO?DNh3dq^M(S~4V)>alz=*Z6qAE1a9-jTO9w|h*d;5M8*STk)oO?1HRXOSpL zeuxvBxHA2MdBDLitT-Ku!8~O^*o?l8GFmYzZwuSAIDX070yEaLBEq9j1oLscCA2eL z%Scj#bQ7mMinrQByOui&H~eGzd`6wi^KFT4DDF!Gr;+~^mAHYo!!EMRQJ~(c+)@&p ztAv%4{xBAbv99kjsS2g(zl(w(c?{)LFhebqkI(xh(l zot(O*ox$}<%F_Tj-Kt1^v-M42d6ZCt+e|watFdwJvjJyIU>9L;saaAP%|?BR^S&vj zHmjm&B|;jw;`Nf$!t^;_^SP>c@0UyDTwD)FI|Fn-=N&XpxN^s-2N zH&EKy_LsY-RkWk!1Hseuuk2Vn$}L!&TAVzQlxDA%qMHGbWlVHY3{++os|eQtV{M6c z`IZ+HZipM-3);9PWGRRAxF$(SCM-;NY!olS$wn#YG<>a+bYzz-)(=A-ZVD7!JWZv} zHt*qkmXph{`&p}WW-I3_Mof*Mz6;e*)p8jp3lhRDGJHDml+uU>if#UqcYv4&-QJ)d@NY^Dl?JNY6KVXRqVX@ve|q*`*0HlAq!KI zrcEQMov*=8CoqZ3qBLhdS~l!Jew<%WD{b1%c+@?0(UK>{Ydmagt5Ws0$|HVzTA>bU zb(%fV%-?V)#?jNRMw>k~etzYL1h#2r>e`3F(@`Nco%t1Yhbr~rw4>D(xkbVwbhUmq ztdW9lxNT>@AN=WF(F9wku*7rY7MV%|wP^ck?2Tm^&i-GHuF`hwzbdTX@>1nIl?Agg zfP4r~0{L8E2j0342&=4++?%g6&X~#3l<$GasDE*6c<{>;Ym(?0eSZE#AKB12n7BgB z1Z9@W-ygv@b}+gnuTkw2wbS4*rw-F|i4DytG!ek;dR<-!n@qGA?iSbF+xA>MUO}Hv z8QLG;w4>jzycjxb0oz3tl!#rG*7ja^ADenUmD57a7&6}k_@FZN&THi4LU$Hw@rJ->N;l1H3k(fdr9hJcz5 zGZADkpkB)3Qq0vo7K|sL_*N;A_5Db&0prwB2lSHf`;D)rXZN2r6HwB%xm=}+@}3NG zq9ZZK!wHP6t2@$GnYJ5lNQ#i(UgO|&NJ}s$X|8ddz3PZGis?ig#6%MI5PB zu0oRXaY{Cm7`{;zy|%OHPnz4hOR|5?JyA-f(6GFys}fR|3LFb;6*_G#uf2fnG1=~K zURqJe6OpU`+OBsr60MIpP5oWe!Rzo_o!8(*7LFud{>`q`-47)Sqdpq1!`bue<-1F; z7P(C%1d1RqN#u)}X6i;ga9Yc14EyS^ z5JBy|ak`T#1qOcx+`=`#?F<=&(f*xu}$=Aa0paC4?&{Woe)l zKE`3CZ8ZXig5f+ea_zU{3QT$+X+lMsO~%SkR_*+y0sC`1PBBlMqJg$lMliwwV$oV8 zLv*enjgtYi-h;yD=|>8Yxw)$!t&oK@d4Oj&9oVA9e%B>?NYP(y(TtX8}rXrZ6mGLeeV_JJdz$Jw>CkZa0Jol&V{gua}%sO@r zQ6V3kFN=QcxUyQMpObM0dQ=VlSVE;>JN{au(F-9Gg-PlQ;VJc_k0$@dm}eM5Ftse{ zx*J@TqAMMQt>bFl#0#YPgtZhGnwP7T*lQD$rU$&&jO-vL{Df7#9u2wU6ygCkKg00J zW&p>zTRHAi-MMa1WZ7p&O_Zi+tQ5!8? z44WwD=w-(*qm^EHk{>o+A%=D@ut+>>n%Xe+!w@@&CntAC4TvvWP)vS7-RI)s!=3O1^DGoM#!S9XQlW#O*{UK}BCIFKpxOefbZaFIME` zt(K12gqq=x>ptI`f?dy>h3lj^fFhOx08wB3PCt&Q@zTQg6h)LXd5fLjaZ@W_$8LQw z!i#Gw&T+rxn4rO#E+emb-PtV9bYW}n!qQ)v9AC7k^vK3^el_=}@!r2q$E&g4eOP1| z#JCrh!)Hfg!Kgo?dU;%1-X@jP5SB(%1M|j}P>NVH?Q-${h|S0m238}keOFiQpvaBS z_`0UR-IlFCF&K(DY^g-scgXvipY1sse1&36kH1VhW&HKMgBU(BKSAK)l=pgDVjc8t z1&b+Eyt-Q6^CVTMMdo`N0yF;T@F?C-$4VlumEdhcMwiY(7rwbp0>(FEI{gc2NMlmH z0E@tF)piL`+)Z<9rE(UPr}cJJY+Nj_6PCpOa-#VxuG({O*rxm`liIobt)OYxrZlA; z*rp=EC`i|RehWc)o!qZn@{b9aVw23438gPL@^O9-)C^-~Th+#^JSkCK0G^={oCh`N zXzS%g@LEJl;M@+V!zvTjnYt%!`#NEzd=gN#E$jPpG)tCR4OW4)dXO4d7<^FEUiv-v z#&!)|j?9J6ZY3S?+19;_bExo`ekLgK z9v)LK5dkWTh7NK&hD@%DruEy=sfLzXR~nrGZMSa_JSna<8^!)$6DK;rV&~ihLI9A@ zi?*h=G)3=IE!T!98l#jzF-HdfRRcHDun5Z5oQ z+K*%onfde$y5>+xsh32HDq)>#_SpjLHJM`EbiBZLq~kj_m7p~X$(JPD%7vz}R!dTb zV-fZkqlP3BYyD*)vAe{?#P#$R11ZXJv7xhhK`lcbWvPv8^y82GEto6&WB{p9=TQT@ z=;W=nEPnO|B77@{DlG)9X%Xh_-QDq_n6@tR9%z@bIt+K`_rT*~FuBZZ&S*KsR7zs+ zfP2DpS@Ol- z&9eN%C1e%OYssaHP#}`lJ?TQ0PMZ7|muT{p5Rg=rt zZEbm&UK@o05IIuOYsU;e#5#KFZn9K1ZF&2GVbl`eofJAia4=STSE8BRB+3Zywa%qc zDna&wPb@0ERBh!2Bm>?fBc^yzo>fyHsn1_Dp!kMV1@hh)U$W2b>!D>m?u5Oj*R(dG zF>J4Q3|5pWZo%k<02D$W6q70PI$wI+a}r+Dsr9lR0R@(Vb@nY`lqwD?jdv-jGi9Aq ztBm|0<_8r!^2EVyquqAV(EPC&+^!e(L2#gpSe1dQ`-*WyI9LMmjpEZs7D*g+QSA!* zN}V6{DFUXR6I(kD8Jz?y5g7qb07Zsx-;}Y>u-NeC;??@3L)s>zEbmwrTo{ zIb>2U)vmMNcYO6Lx%5?W6wHl2-Ym>UX_SPl>`+m_QgnK^sW#*cqrk_s$;gkBc(}ii znPf9PWzrHfK+|z&?(PYf@gpdt|2Zq!@UVs(zr{U2XXZ@W_|`g5v{}JtSf=v5m!7?; z2&|q8qh{lW!;3gO!(olKTRjo+C37b^i=`HP>akT+uFg*AqhoH_d6Q}%XmX++sd1_0 z%=(05ui&t@y?bd16Y^*2owLMG*dw%h`l@d$O zLcIuHS@Ba-Qyaps#j=V&74^)Y^jO(JVmQ8Orcy6peMNLE2Vl-pp0dlwZj(FSy(G=sHvgZ;nc!}UH;+h&#lb@T&N$N^Cdt%^*U<} z^aB3~flKkn#)b%TqSN(P%B*=+8HQd-qM+RS!;g>U@d@zSn0U>yn6C}lTyQA3nq=c< zTjaz$S8PG^SpE^9UP7MhI`<`6R}Z~r3(#myLgZz10}W}b_EXMaNy2Igt^WLKNZO?^KGZ7^5B-%T=2 z8CIx+K)q*_6l2u)q2VZ7$UPQQHn`~8=85QSl`cV&L4wY%5Lt4jm2uk^)0lU{lcG|s za%@l)C|*k#vA+G`-kuHd5n@C^Xt0#d1pkL(_zDJfa_ zMg~XLN*FmrC|~++W-l8e64EKz_OiiNYqPI+B{uYxXZ6xMWpS5p2;*m;bxsR3b}g!5 zPYYW|Z4yCaJ}W5kP{+uJ7D`{Pndblvfijl{sTtU6u!p9aIq>&zvygxCQDmDGo6k^| z@7NSrx`f!YR*Kg>0#TaaP`nGSo;9Zj!E7lk^o z)J^+hIZ1Q2*bs^G^u?EPF?`DoE0;#jXH;G+rJ)PG@UHZ`Y{EOW4;l7}%y>*=7BDx2 zwbPV}#8EBvm{e2u15#3ha9d7d%5{etvet5QZN`n$0oG9?A#>S;wtz&oyt} zc3K;&z|b<`w4!3Tg9wi6$J*+VO=6dIxyO9&amfK|3Gr9?IYr4UqDJ=+y(I0SNX!%i zAyhT)Ph6jdko2AXXcAR%M9~&*CH;rZrmn%p;CUYlsBt8w2WZ`bCAUaZG3H^T$HRLP z%$B{d52su@nUjGrc^TxVTFj!2Hr?H;`KlDL0XC43A7f82x4rIV4}DaCSrG;IH#vCHM>^ zf*%2w@_i-_hELx`Qv7tBA%h$J!UUS8<4rhY>)|3Me-;P2g7aZFY*x@?>Xf)Sx&o+S za`5eys~J*f*Baa9?WEuo0fI^&%&^*+W^pme@fUejEA+cpt;y}z^1WBz+|PN{#N*j! zy)Do2*~NT3-bIZ9BNrexCkV(@uEu^RPHVD>1FumCJCFIP1F1J)ijcmo#I7dhhw&2Oyvk zrvLU0#lJKX-aZ_1FtsxNT_YhwS>5^vJBpXK=_}~arMy6pX|u^*2taoc*G*3Fi!u4f zchLQH7Qw?W58QS7Ahc>qkAS{iFCK56VCyw!)I$rtxARPKpxq+}?m`DOG%R<;n&niU z7sVQY9smiKX9Cah;C1m=YbJ#nfdpxSticZineEWlCHD-RI&cE zF8rv_VDhVEcpeZA1D?K(X=s`h4yXMm#ibh6<0wCrm{KWoZ~B!K@6U3!1Y#oyiz-t0 z-eX=zBPbbjCS=m1a(d_@=ocuFWHbYcVq{d>ctn+SZl7*b(ji_?FuXnnghF(ceM9 zrl3qys47(i*il^wB6C?QEskUl&ZrcjXBn4qfAYQ2mxA>?fbF0NS5il3^Ml_$T{xex27RJ!Z28M|HtGM?F946vhj663}p3i9xi$X z`Fk_Gr&>H;MTvghtfA3n1%zaHQ_M*q(J!ro^+f{M&<1xdu^B=7E9;saQ)bqsL}yGGQP**uDls7$rV zaTx$b#1}6>%iay*CKR2+ol7q|uEnNHDh$$cOl!6!%lXv-MWqa{imzM9udL`H7`B z0PZ6eMotg4d-?fT&|c5tSAwv`R{LGH4*&@l{^~eKW2T;k@Iut-^>GQY@UWw!CK()B zZ1Z+zX^YY^tl=pLFot(4D@qycoMG+7y)TRdMHxenROaX}f%NGc5E8(*$P5BtEBK@O zknJwkFMr+Q5Xuj=)7}9AvHd0klbh!y_P2gG5D@&^%3m_c_71KV|04o3n!aSU#EuYD zuAY5Lu*Y*vS*f3A6-zd1{>Li`Iq=~mcw%?fdCqX8*XXT? zJ8H0RS#2#MIhSeTz3=dwGomf$a+Z;KHZLn5pB&ts_Bq6nPvT{5IGnyHHfr;DyS$n* z$h%?6Z({(LiNvxwftGH{73a73hzNP2Fl_JaNDhRU*i-J7h75cm;kgt-K^`rjF>qTr zs9W;9?S6Dli3!*XS%`4G5^)g|YOI5z6%)*(Y=HV)qU;78vMTV2H>oR6JS9|Aw*UjN zk6Iw(GF7pMi!vd3KiWwAzOW=2aj)jMoI;Y6$l8HzS0K*R1a0zDqY>;{ittsSv!F2v zWUaV5fb5>&l58oC&9MErw{%_YV>qH5p1%HVs4y7}?_QTH3gSjtqhKgNB`o$~RC0So z4@JYawzc|O9do_%Q_NYT>k%7dKi#(Rc)X+D0<&QoFoG*Tif}TJkKp?5W*m;7U4lmxJNG!J(i@R)MPStc+g#E~(R;*Gi>2L>_ zqZxe_`kH)k8KXJL5-aNzj|3U8bvcgk#TK_ps_I^!^8|#~?RpvSgBk^6V6Vw#m_bxNzSgi=8I;`XwDb~HZ z^HY!&N;GqHx@?jaoOHMlb|Dg{(%DoOX^XNM!D$ZB=_bDE17b5+gjzbp+8_uuH5XM@ z6-PJ0PxWfzT}?Ap@Ux{!CKXn->3)vI`S2y`vVArQzC-wkam>snLX3$`I!s7IlJL{Q$#90fg=1Zj5m zFMQVY_4PSP0el!L8|0^0_qlb>zxEn(KBy+4Qii=-nK{+1X!M|Yi7pY&iS>ro9D`1B$K@MY zzmCVBtGbq#PGwx`HJM5l+Kp3S-^(TB96 zAH?mhc!fi3tb2(E$7;!B+M?}9IlA~;ni1a0jhm@;{KVkzh+p`QtZ96HPfZ(IB;VUlBPZT2l2%^}bao40JeZyc2WmF;H&$)V3= z%!@NC8XKe)n-E?xcm+;U8B}WYonhS<^_1Hb#Qz#QxP^nL9>C9&q z*uitq2UE%%Ea)X$f-cChRb$PYO@`6UWS3TD1N3RPVlek>I1I)uEUpJSXB;vaQ@923 z;i56z7t6ls%9*5TuGp@H&|L(K6>PM}3GjFyqy}v`%NI?|5Unna7BFV)ALU3t+TH3a z_Sz>#5@fJJ# z!E+cq84409HL$u5dtbg6>wOaVx?;5kN7u}TTGY@Kl4f|s+ImTJb9s@g)zhZj-G-OE z=ncaMf*7m#o#KWb+al82Yi1E?LE5|ZS#9Rj$G@#E#XXdAu#;PrEl6i|B(%iHCbZk*c;kF* zJtCytg=rpJ#w$tM<5D*3Pw@dg&EMo1I(J{zM=MX|@WMjgrfk|$iO?5MyggUTa-uBBg|tT z1=(z~$X=Wv-jiGD+fWYnJuSR_>kvJZ%}mL}Tf)x%J|ZM>UW8BHWvGNn404n6thmXj z-G0u>^HDX7YpIBVt(MxWe&$V`1HRNO;>KF4k+eEQ%m^==IbE}~F~%SzIYKhp-AUx( zG(t&;sO2kl9J$(ppet>0_d(&^rI<}=%Vg6b=cmj_~#8KAM z=h}tK%GR^q0onc59e5f&FP)r&FCSfH;u?8zW@*t6T-62cnym7k_M9rSMzp2?dt;tN z(P+D@9|})sUA+1iF7rUrV`ETpssPh>F_=`;sUJ8yx(6G0?oyUsNE^{mNs0*`tN8P# zBDpc$RTBy<#{e@bh^vz(IisPC+7*(U$1}AC0$Ai3k5i^I4cU~BUAZBPEV*ql{WQ6+ zeFDxU~gU;A7^TjiG-yp^p=+de- zFl$Yo%0=M5pSy)3Dd?%NSWiHv{_qK+Ke&m*Xp~5AkVtQmh*%*dJ3%r&L7JMAFhNX; zx90U=J`OP%$sG&n`??=tG7|f?kg)f*;PbZN<1E75SI?BokPc2PAdkbQC*5hk9<(3e zgf-DIc|f&vTNX-UE><;PZEo&w$EO=h&q6cftNtCDHgE;sNhe5Ww3TMof&4XE3?FEk6%!N07pZSLT zsphM8#{A}9b*p>{9Oj_SB-aJHmq-yBnZq*RBauF0(Vhxy+Y9jkT%ZBk^rpSH0l{|p zwI~LX*U)etf>$Q=XSsSW>u-%D7jQQ&Qf|D>=tPKiiR3!&$yZ)}^$_#4S6(6Y4+QZ) zSF`57IpYQGjKVU?;Cj@6_jby<%cf`4f)6j~xmPT=)PWb)@4tM#m7IB8(&{e0xk=3k zjZ||3YO24Bgruii?o>y-b2+GeDl)_{ORww5VGSEgc8_>`F$27Y- z3!eQB=6NRGfz2jJX7lkgS_MK&bp`$WR+xWfc`Nc?r2}eAb7uQZ~amP6Lsy27yz^15TY2=wds_b%Ke=APEB{=EBP;zNRbq=Cd0ZQXc6{fj@~ z1(sbax=!SV-vQ^%GwSA2RJ&T3$iO9%zS?hi<}BGY8>61WdQ`YxG{z*-w%stJAM}sx z89vVN$f;Usp~9l0YY8unyIE97brthue@_k9pf(eu0ZA+Tz*-`!;0mOK+G1@U6J~e2 zyPov@jwn_$cv?lJy8?UcqKRD4`Gd73btn9mhGH205pj9LSK7{fl%$+N}r zE=G_vGeBaB2z*aDeM`33MP!0Xc*!#$pv=M5$;RWR>pp)%?d$P*)%;E^)H|7Y$U3&k z)io}eFN(^@Eso-7U^$~FbkM@M?rvYypCwu!@qY?GO@*V$Xuq{ry4?S*z4}G7(aJ$l zSI@%mH~r3;M0M-M4;VqGS)Br1|O2*?wjNs3ggjKMVuU^`46M%pu z$%6t?bTO?Z`kTDl$A(t-xUMB8{YGU4l&cRH$+>RbGfrV%B}r_=TdJbdK@g?$D7eYO z&eh{tR+nPAiPd-|Do#ZEDEVWC$ZPe?hH>+mW66G?zs8rV=fkQ(>wt@xDEnVtgc2e3^!sa=%N=0K zEmi>q-3Un{o^<1`ciFtX6LPdkco81TOxnljoQk1rCqRN8oM%=;@*QiSA#Y!94Y@n~ zSy3>_T35$-4#VRBT1gzpm0hK)FMUrVCx3iT15#_mckPNA2o?dll_?$b6nj|RG=Pt= zOWy^JL;z>AA>+MO9^rLR3M&qzw_e(t(&xM-yEa{xDh(fI)Q`eWy(hHr3#LMkGUIdP z+|LQwtuf(!Glb{{yI0;Q;iz9m&~nb&zW7>2i$H)O0Vg*^h)h#rtw3+Px1 zlgr^B}(MNi?kU)zg5R=6^S=UUG;0_jh#99pzqz;(EEY z+l`{Rd|1p5Pcp12h`N!SMeK|>a>sqE0$lBB#4P)s1aFF!pjKI zk!HbI1hI3Z2i1eQKBe0eNhTsvby>j5?KM63%h~Ov8{nd#^5gDKd_`vAW?ciEue< zSQ)>7s#J>znm)AXWy&Wk!1mZSEI=2@j#vmg^>NR|>KMvEqnPI*uttBp6_H6J0rA=< zVwNf?APGQ^Stc4f@;a(QV)S9*Kl&v)q2zGsGjNC%%wjYoob2^t+1_r^a&=D%B=?@b;E_hnURFIGVOt zmRi@xC!C$iX;{ zkkm1qR%ay%w&e=Le7o~}?0RcLMHwZ6o|4UGj9|~Tym~Ze6}W*aJ}F(KNVq?7YeY%v zI2)!7lrf#|Q^Rg6qQX2{E&PR7+H@B)o>~`zA)&g}JQdtt_ksmVM&azN=Ouv8Fs&Xl zH%ziBfTVrVEwauIPr(SD$PK;^A6_$?x1jYET=y&`@SFT0!qDa|?it-xJAKVyotK+K0if#+A-lgjn^7+}J ziSh@~mw*x(a~!pq=4xxdGLW}v`DDATw(dH? z!!F4=pJe}4OIkc$!`x^>I_n3rtm?UKqrgu%BKEvtPj{}!V{yU#BrxrdV`T^Q0SYB z7_y!Eg(6)I)F2FtvyvgRMLJK7PVD%_Q&2awA8k&{g`mK!u?F6Go|we9__jO6bgu3A zT%TDsDE=2owluN*3RDjr;SE`qKvVv)5ImSlB^Du9S{L}9YG}g*?TeyyZj{4TC~;y( zSuJ|BdcSCh^O?s!lfY?>`|iE<+~N=Jdnm?~zU!L^{N?k$Jn#I;Q=oZRd!6;;Q2+p9 z0Gc9h!kTE~ClGLnqZ%_EDcG1qGa`tWXoTBrfKB}niLa;z9)BLRDzmpq3scgwJfi%P z@=>9m9GWWrEHJLF->u%>B>3%&< zSPK&C;NXh{OM=wJHaXX_TkXJF^VX_q3myWqo71~J=z6j6i^XvXyBg5(_qUwo%%jF$ z)dT%YAM8SLD`f#L!N9Nq4c~SH$WXJJ>w+$DE@xwJ4vSu!?KrZw9GU_->}ycFzr}g~ zRZmC&F-;q9_2lqP)Lm8r7z73AZ#U3ieItLmf&L!<%^UPj(yz9PKYb?uj_Qp@|3^Q+4K&%fy3(T4O7&cCy@_!IN1Li_K<;Y9lf=HCkR|H=7P z+xzFU!QUZ*@ej_wS9kvt^sDad@5iNx^$X}vyN*9Gzls$86si3?fC>JA`Hzydf3kj^ ztpA;bP4*Age-t_VllAMY*zf0CTjd|De>>U#E9d7N+OMOEKj+Z?4grmSa{e`=_G{*! z7QVke;{6aW)tHbgq=hxfl?=^eN_7~2dO{}a0 W*xS=M5D@a)&+hFO0psv