From 9be4a56823b2643d84a7f82fae2908f3325c5276 Mon Sep 17 00:00:00 2001 From: G2-Games Date: Wed, 11 Sep 2024 03:07:18 -0500 Subject: [PATCH] Added typst version of spec in place of ODT --- documents/DOCUMENTS.md | 2 + documents/cz_format_spec.odt | Bin 58602 -> 0 bytes documents/cz_format_spec.typ | 204 ++++++++++++++++++++++++++++++----- 3 files changed, 178 insertions(+), 28 deletions(-) create mode 100644 documents/DOCUMENTS.md delete mode 100644 documents/cz_format_spec.odt diff --git a/documents/DOCUMENTS.md b/documents/DOCUMENTS.md new file mode 100644 index 0000000..2ae812d --- /dev/null +++ b/documents/DOCUMENTS.md @@ -0,0 +1,2 @@ +# Typst Documents +To compile typst documents (with the `.typ` extension), use the [Typst compiler](https://github.com/typst/typst). diff --git a/documents/cz_format_spec.odt b/documents/cz_format_spec.odt deleted file mode 100644 index 18bb182104f3920ab5e12e8106a0efe110ee2875..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58602 zcmb4q18^u^(`Is$+}O5l+c&mt+qP}nc5-9ewr$(V=KXg6ziMm0{kHbhOw}_z=joo) zbIweiu5MWgAYdc_05AZ6&Q=69?I8vzQUCyef6gBffR&k*k)xZfk)ExsrI~@AqnV90 zt+TZujg6jznFEcDt&z2%je(Puk+ma@qmiql?Ej|hhyULV?FR|kSR0#}INAS8jROPi z56wwm&z|=G&cgaPEL(dU6MG{EhyTpP_;*YjTPNFpjQ)RG)H5(JvNZa6Y@7e|thoQi zqM4PRiID@XfSIF}o~^@wF#GS^V{B=o=V&py8yFbazvj`8FaEnh{2&KMH%lW28dodJOD&Ct^(J`l>zbLF{Vq9zvUYQJ zMyCvts!Qj+!W#6@K%$3O08ro;UqIxzsCFGBwkmA2v6 z5eAbO+fHqnKNZ0wMCWK6nVAg>Au(_b0tFGN`I%Oo@q5sKAQUWUhP5lTu7dWVkCvI|eSMnQX`_jqx)EIJl?WX;8Oesc?m3Probf>CF!{`sml zVM&~875(JCHHbg-&C@bR)9s`GO=?F=N-w%^ zeuI&o!i1bll-+}L7lxW(i=})t@!s3OLf~HNX(%I}2@njXd>3$xB|nhCN6}`5L6~Zf zc*VRz!@hDcY3`kUF+nwE$h$GXvddO(>aPXyZe__0kEakIXl6&%2bwS&D4npoSrWFI za#R^I{TkSpDXUDre@mx|91{W~6B^?SqZ|&v+SrHgDc&K4iqeN;`MYP2H2@0ga-z<7 zJ8@$N&U}zTm@Z_%s42j)whIu5x@Lti)jXms@c1AQj+fFi5WSFS8?E!uw!EayOuDn# zJ!AuM;)6RhFQN`xacqPE>MFU z0GeRBAv+*6O6gKEO;7G$;RAb)AQrLtpLknrwg3)^hCSqedne)u^$WUtM0|SzWfvwh zK@=yn*gah@UpmuUk)VvH(>_J|LTdwN+q=IF9!|ALU07}?9frM3*&=?wjdO0v7?OgO z=q`_@``OU}BM8)i#W!u`h^2Fh7{xG@r?1@e4@vtX@NoeB3WV4(YW(z&khT ztX)FM9+iLzc8~B!-t_V!g!3SF-HSW2oeT2bwGP5i4UF#CX{auj%2#sn?}A;aY0wt& ztSfOykB;)J^J;mN{S_AI&&2ynim$e%0FKMD z(_apW(T0eS@VB#fujmzNsV=}hy}urpL%SfGAD8J~SO@uUZV+xDsiK|Wb?!2VDU-!? z3pKv)K)PlKe$7?P0^)@R{7kO>p}V$TljY=g()v!moZThJg3K@z@}3X`tevF*RjyF6 zF!WB#P8}X4f}lwLGhV*%!9Ze66e(OJFx}&5c_4N>XsCeOOvXG@G9JhC;{t0rsMBB< z-1S1Yr`Wy*kLJcw6;<+I5$=obe^@@tPlsc)tJa6i84bb9BYV#qU%6M|(s2Q4nzV^f z(Gp`79?xAzW8fg6-^oQ0M7?@TRXyYr^USS*K1pcpCdAqCblRJ?;CF!fLU@MF(>qR8 z_g6X6UEEY)V1lQ+TY9c%K_m$S-QoXIC-gz#UED8dW|*vd-q*9O!IkME28H1Ubd-{@ z!;_Px`VcUk`rRJ=Zf%8pOw%=enPbG#Ub2b2#1ATN94F|Dmc8oR;GU~OO<)3X>&?1u z4fGP1MzIr@UJ}0t(7R%^_q`Z72l1?P4X+iGeOo8}ZTrgCE|BP9&gH z1y0jEE@zv{rMa&VkP$n}CKjHwgPZhK=`tG{H=^v#5Kl)sJ(QR{JmT^(Gz&}J=R>mnkTe3~#4s(txrlBOal{S6&rwKfOP;-E!Ql)o zCtOE;Ij$sk@o8qP*1tn79H%^kdGE5>Ng1(x$^5RBk?DW~^h`OZ5Y$ztC=WZso&_<> zo#(!Npn!1^L?a_68&|TU|1vjX=^b6NbrG2L)vPTn_$dP%Cej!gy!+wQe9peKyX1~3 zJZ_po6+HgNO|e2PaG^FS&vW4WSfF=5tHk2dJ_?I6!HFl1=)y$jYK)}WI&og~p*G&Z z=9OTANq|V3PTdFmI4eT8@KtWf$78TZ22UTG-{N7^&`4EOtd5=4ornw-aRZG~;XHVt z%lHOQdgCcVD4^e=P1u&u=EIu(CaC1U4>{)%nCCHHYDb9p(CE))=XXH!F43Y5<=_b} zTNXd_4o-YwT8+r4dVL3fJVf3GX*^2tDn$zU@ik?M59txP0bUSy}Rf!F>mzFG8~3$c~69O z5keLP>XMd+7O1FJZn14Cd11GZGwG5ygURImV71UlK8~_@4#h|#{cmW+CDmC}FBWo2 z#YL@wV>_M$uf(U~)e5U+r7{yQWXdzynkO`Bi_ak))K!~q_0ah1eR)WH9*#msljjR9 z#4Ctq51M4lt}T$g%_E7uVc%6O!3OmVmVR`Vg66xQaSoCw&LgOS-4ruA09LpL3{Y^t ztl%po=pAZw%Ka&wDUn=4vZM_U8tccJ8|+Ny;HE9~jQ!JLQWuZb!2L)=nzf2e#&f!Q znUM(ibNaiKdt|kSbeon`JEa{OsKqU5Ds}O!r`x5tkZmEhha#Bw@?E+M8vbKj<+tT}3%+kBapE2M^tfIRgI2`^wsR;*ozl5jC{3&uMpcOH~t=THO+c}BQPDTn&iqddrNDz zp_|tX7xpyDY71Tcz=(6X!oaW&V5u&7hra(;^Bvx)QX((Gk01>)M*Irufm zs4Lgv+MXhPfnn;sB@#`9Wg3zgtmgh0zs|&-zrz#o6_GB4363-YqGJjPZ>o;wfT87^ zUjMFrhckpYGU;^U(6|WVc~zSGeFSHQW5h|h^+;F~FvNMjGvLv=6b<(uRgUAvgiIDG z$uGAX*J^4sB05?0Ef%sSC4q=ga54y~H-wSob4>uFZ z%bz2JdAmeK_?*+nH)D`(bDe+6E$%W^ddo;h=l0b(TP)Lk+<}GS!X$QY>vV7Yvc>NQ z+_w_++Ae&4?0>T#XG>K6r+?3CVt&4tJTYE3Dyrs$ogGJUPp->W2x{7U?@brFOOd<8qxORG3lNEey zk?#f=*Rz78%UEzf2FeV@gFjQD>4hn-j~v?;bcVLzUs&1O%`PNo?;Y6II!My`?HpX1 z+0p66c#1H}rzf=87p@&>1a7fLU3nT&OQkp27R2lUpG;io)?9l;+gBghc!ILDC#0HO zo4nbl-UT*}uvD(0T7jyk)~D_QY4J%w#YqP3oDKVIQLg zWGCI|7(emjuk5=KW{UFyStE*Tqevq@mclK&432};R+k*^5_=z%`FA3F$w#R^5Z?Vt zzMn^oGm^S4phYeMA8z^I1uCC$0%4Wr#N~YT&!;^Z9bRdgwm8j-?fC<~iE%J$o_^%i z-}5D$P3&1TOS*i+Wt;GlCAMILX`6N+0jF@`4($dV+QXj$N!X~D(Q;^gUD3l5G!Qqi zG(vq_)r;wy>_eV7{z;m{>%X@=Red@oT{S;v8N3Z+0fY5*SVdEiB!nPn3Js$erb4(N zxj{!bF5#%p6!n?2RcgAhCzk6uQ304agi>Dv3BJr^8W9l3$oMAYW-dEanOsn#P_dEs zr)of$y9SF$ymCv+3p&GrzLtYzCG-v~H~jKZ#Ob1wE7E}wMaDM=d&*pT*Vsm@Dz}^> z>jTKYn;Z(z%=`lnJk}Ng1A}HXN^<-hCdo|XG4kUd@(#A?5ES@Y7>ZI0je;M=)Y9}m z)iP%ov$1{KRBb$;W#FlEyBu>TqPrbinJguJkjJ)fQ-J?~0;X51z`(8CL(hkuawP(R zcbkzv6Sr!N9wQa6q2{;2&1lb&dTAGtdLp3;6MY6FMTT7Z{cdr3kZOChZ_IRZb8eU7 zbZIZTv)O#u+tcYCga&nCJG)+uGqhi^%_Fke6ja&fLG^PX2EWfc)!8c@WXp+Dk$W;a zYgynu-RM#Z2!F}QXp8&Jq}pslm*&sdsM z^@S=c0SdO62^)C~0|0<#008hmV;ui(dkponJ+{)bHZwMIaHO#}G@gu|v<~2d3cPlM z_{-jp;BF?17eX+l^akvBOH$zVDokYhm!fq&q zGnPCkTM3~>{Sx|21=%dMXi-_yc*$y;BQzPe!3kw_&B|6-?EZu7t-;|T7m)pjR{oVy zx1vfG&DeM33>-x6$G9gf>9xkzb^X^h+_zyPp+0}H4d9_d_Pm8k;_DvtKmPmsY&!QF z5C9+m=s)=n^2dJ$Hr9^+#Gw9(FL+rb?6bu0JijA@aX1@v%u>L6HgF9_Ij?qJZCbZ4 zQ(qSxlW_1MB(_M!VIY(bUuX|}guc5zA0MSy67h*AmJ+1tH*TOF(;^ci@EQMl6(B(T z_}u2LWV9b1r=Y&WjM6^E*mYAJFzf1=^;YXhcU#*A{oa2TiZ6ukj*c*GKWa@C5~6XX z8R_R3uQ)F)m$WOW3S7~gK7M|FR(U>BlA}3}$T_~TCV2@+wQxE&LLXi&TMDkuxIg4F z_Mg0x_x@Iz-`68vBK45nem=gttTs#Hp=ZkaUSDUuEk%4@UDbcrkx8Klf83#l!K#A!Rj-)L$)oL;f* zF*YRNURtjvKasEBsYd|aV37OVDSJJxcw^tZpqB3Ao_@P?X`LtGye)yScsx@aB(@MC zHc)TM`qFi3tYKU)hc)RoeuWGFZE@57VQq^# z2d>I=aBQ}M3KN%x5sv<^b_fT5^_FRuzQ{{;tF8g3;JWj6C7WR1nUi_c3=YF~wV-yi zF&>Gk$V7ai$t_zKneq8qDtT@*M)lRIJ)|VHsV9JuQ~B!^zx;uIa&73eK8}&njYrVR z6}?o?$9_BdJrZPmY=3tK!4vLxSVy-PLi>I&>JW^fDOY&aQjX4zH;n)|o55~EY2#WZU+ADv zngr{G@O#t99=Sp>Ugx1*n^q3r@yVkZmiN)P)zH|f=>;f9)UYVueaXb1&rBh6HF~MJUy|{r(0ISe+ z>xqNGDFmB@c&cm_f9g)TOm&f!CZP1~fUNb8}i9*udos-va_vKnJ!eLRwfU##4w)U%U69@xah^3pf%9a|At)nOWv zqtyFYfET@n$`cRY`P-m-MyFr;t4Cc~=zI(UbdsQ_VsFP8LLV^$JmI1Cgo9CoKcVLS zwvq*`bkmQZ_Tr%!ETGNcNo7PZgx+63-TfVR6d;LTxpM?=yJA22MR*qG<`-ffR$1q&F&RDA-k?eAADKH$qu{C;J6D)x6KNWJp`o4=(a zP3KqvyK2riM8W+ImMy|)oSzPw&HO(@O0tyG%`D0Dnuems39(D2&WtRX)?cQhbImro zmEL4MWJ?5(g4G|dS8LRZlk|~PRko{= z0i&VUGC|iqsJ~JqGioz=gp}Rm4hR?CTKXM zFXXnaMEg45puX4DkaOr6%CNm!TEHtJ1C^-2AR{LL>gb6;Ks)3mWse#+Ue9S080jAPkHgn~Y zGtB-4t?41Y%yL^O##wr~H6d2#prDiBxPW~468mfpQqQ>)&)|eEA=WELl&Q_t2C3~% z$D{sy%q({jbFB4S_sxcBfk~$BmJke5`$$MqY^pZ73X}XHBN{0hPl2wJp{DFGj2QbE z;gn+Ibj;0!-Plz8PPUTW%5_(BU6r0UXV#n`jLbtUnJ7Kti8>l7=qU;Vwn$wH4 zn89oL{sgwVO$mkjG*3YDG+~5S)Z$`H6b}+}&49aFTDBXt(pSkY0H>(brj24qxqo_{ zskEwdEMN;*R%Lm^>7Rx;u#-8>u?RSLOF}avAUd}Yo-%=qSgJ#C4Am#f% zlT78yWYW5+59G^?BbfV{$i*QaMv;gotDMCO5|%%pQskN}isRT%T&Xr4vSN^s8SF{E z51e*ksj*@Dkf<#@=noM{V&R%pO%Fk)_1D%G3v)qRuhWx!nMy^urne!#qGkUhn{As& z$GH7tL2h9_Fz*;OGcbT#RR%9J&q#$Dm)-eK52@@xre3~G_Yr+L6bGaz1sSz7cZh-6 zjRl2dcav~mHl^d0;v}@xkw$K%nw402$UAjPl{{HRB`#c7+wBp>xiDVf$5lH5yCl#{rbu^ zZWJGegX25x=1WN*4u&J0H|?!_WbP%5$=M7@)-=(xGyhSBm>R2;6(2nM*;Oi)?{R zEZC8wP9+?Ld1(VQLuw8`XytA5=N3M+AZs|?-0sh~R`w=>IF*hAGdakz_J6MR_Ut9q z#`?0#9SF)vVT`dm%Q#3GK7bWa>TinAGDjFXfD0Tt$~ZtZCOZEmXf};hA1>o4p&1qY zSrHETbYhY}Z^21Ak&d(167C;%6BLF4lP{~%vFXu>_qDZlgE=%awKPXO5zc1|{ zG#q@c>j~gfKDGOs(EzIEO~DDKd4p)k^k1ThdnrYdpI-fL2Xy}^hmr9FMNWPyIm_f2 z1Ov1ypAsW0NfkH_;#E2(N-i>}K2hTXvmg+qWwBCx>gG{8CyKN9lj;SqSW=!v#KNU$ zn0}`4D22~;#)#v}JAOP5%xO20^YhEtB2Y@$oW zxJXKY`w)c%SuV4{qv%2a>GVgaMA=c!To_zXY4j(OlD`m5oyf~qvg9atmP#^gm@-o) zq?Onf29HmZtu|Apq?P!#AtQ^$*;pANKNJOAWKgo?Bsa!AKV&(7y3j{s?%HIN7l~S5 zfBt7H&MF9JEFKTCLE7&@3Q_4Lv@)9mgh8J^T--2h9y~T0n?8}4e+i#k&>B++1u_fZ z^gS-5O%70P_8uzD9!bqvfpxRw27A-}n~F?oA`M#@eA*jv-Y7(_ui@D6a!9~9_iQAt zh=i1HsO>zzNo~YE7Ey^xcEEqmdL%yz5wD6U%oeZ2oOQhMXHoEs+=U?GdG!xi@x?lU zlk$;lNdDY>Q)Xe-1RbtZ@StY`?}b_@h$u2_cX2=@&kK%- zBx>mW4o-oclkdOkXnw}w#5LZl7OT)0W8pzhL&eVQ zmDN^lLzhULmf0QMso}_9LQ<=c64K;XU|;@ZhiGj;Q=v0cMt-p{Z?G*~=3mBsfn-hG zvzgDx9G2x?Y!Ol#mX$sz%{|WOiIw!D)WiYEVSU?QdeWdI8C) z)t<95Q(~2{?lQl1GUuPU5U{N)U4h|T8kE1UrZ8gW-x5a7j@F6;+G?7_xVNkC)f6oq z>d7H(^s98&TH7r^^Z88=y7r(mFs}%UjzX0Z;6q8?>r5`bmZUR;jy?^^Z@I zcw`QCh^M?lb*-;;WP^66^iX_}5}Q7v3bg+O%EcDLO~GtZk9_!4JujJTZ5-zN;aCDAk&%}IGB(4tE`T2S7pD>NQ+q8h>5 zV8W-^uxv&{K6)h#h9|7U>clNuG#wlyebA^V8PvPAv3jZyyLRu&r5DD%EjdP=1ZVZw z^EdA3ET~L`c`w4X>AB6UkI(#aa5OkG14QTjTL9woIsT2a-P`eX&Yx@-CvYlJMj5pdd^uLzR?m(TtQ-zlscaBw>efzHBk||*$p#dp=Hy~XC|O&`s?=_ zAn;@ZaBE{+Utia-7~xmv@160o+#d}*tJm6(4pR9+>qPYo(;477o2Qy9ZETyecYinj zS*&Z^(NYWj6-s3Dhs&J+TLQ9LTHM8l74eW<6>n`nBSXE15~@LcSb(*yLaY%_pMB*Q zIq5zphI%X#F@%VGSia;v@o0GYn5z;z89j{~NGyL(v)g$uiPsJ~AR@mmtTbAyjDfUx zGA%nf0z$F>fG44H(uGG(IIqo#0U|F&mi(^WNr4@q*h3GeALHNhy!ZbhGr6k_>fUcm{JU@YTzZ z-X~C)1f(qfM3};QA7f~l(WRFt{LYNLx6q$AFa zc)&RA0+xKp2nZ^R}U8a4fs1Wk>KJIEZwwU z9MHkxB5xTgQJK$8o{z1oP1vT*@I{BC=8PzJQ!(3fq@+qPYKWnhOC9-8l6|T&y*DTo zqwFeqS!(BbY{mn&^58xtGCfba1Hkt zTXVtk@ZzslwEd*WDiGdC6U=fD^SUoY)H^p57DEV>sQ_k;;#uZbAjwD8fj0xh>sZ=j z2ZC+HQ}RwU2D>Jdn-I#oE601O1Agi5>|sSH3qV+{r~C?OHIen~9y=(=}J~GN-}A z@omHIj9vqF+$Q$j5wv69l`yJA_ff9{Frq}zk_KI$rx^a~CLBp1iBp53^wv@st`n*8 zaTUwbuTW61Pt&i5rKi|NtUFU!1nv|uWP>*E z4oG3&g@uwNH}C!}v;p{w5i|8nbwlRbNx1y2>>bD8tZUdc+Dm415o7skK%fZfNs8D~ zsY^u4llxR>!?-l$NiSw_%>!-u09NA~Q{UxD1`Gp>+I1Qv6Y+dnYVZNS=fo?s!=z4A z%F2^(W|1Y&Kq?1(`IHk~LLI*~%+1>Jy(vs^A?OA(ZOeLW8 zUJm-WiNoYJ|J~ePpb$Ep`a|NmDH zMg*4!*F#_StQf0RN5)a^2GhHW!~7aIw2iLRu4&VLu@*GF!0^3aP^HRep@Y3B%-T9# zi96;|&9T)7lQ%Ipb*w|^J+rMP6wGkLJBIlwEYf=ew0mwCtxW?=C((I~iGp+X6VE-J zDz|inTC%c!@gMt??#&vwjibz!o{J~Xr0qA1fvDj>zai;ArKnvyRlZsT_g$`ZowM^m zYLb%WZ)eqw$Q^=an~JMJaIg}U4ErUJafL14p;q>q@}Zo}2VIfz@9)%qr^G>zx4?zM z1zj$b`~}0@zn0c;F>W_1m-s5NQoloE0Vqeo_aLH=2~R~#UT&z=S1=QDg`qV}*HUkY z_`vC%-NI}Q0&yu$gQ(?ZCm%}%lE?cshY5tYm}|w@xU=&|J6q}(>#~`jn7Xq5@n9sH zRJEOAB5@6ikauldAhn{UU^@ym^~k60jz6 z;YjbhKM@17AOpO7(RI&E{QBth_s!)v33iC?vT+YytNG&@P^CIkM&ri3EFj1u{bR49 zqma949RA-{RlBkhy)o(P=7S8s!8+$vIZ!lo=WgJ1^&Ko*5AJ)lINIB^zRxS9%Ql6j zT+T<=g2@NUjC7P2c|t6z^Ks6h-$fwvZ*E$IK=6*YjkyPP9H@Q#b+EZq_+(o+#-7V` z>v#9=^_C6#2JJXFM2}484wIQCMxg5g^*~VHFw7nDYB?#}nYSOt<5=XfRLiNl*%cr@ zd{PMB&|Um{1}jszxAzZ0ZX0@Xp6U&E^O7juBR@%sV|>l`v1RftlcM;goi3f3?9&|ERMNKo!~A;FhM$z_R$Byydo zHn8%pJ4m9!X?RX0R&k>_g=7`Ys{Knec}cCFjhAf?(O)OJ6SgV60QSTi84tL6;=( z;;7W04G;bKi!9%Ymzm?6GgSx9hrIp#SH3#?3!{m%-o3D)a)qK#n5k0hHrUmN>rNvQ zhXU8J@diqv_Z%X;Txceo!&pu|XR_43trh9n)S0&6AJSUniixKTlW7#Vt^~^;4sQBW zL^2ai6V;@`AzbwCAkFko9{R~B8@~+v+g8#_d7Lb;aSSe&4hSn3nODsn>%$Ayi#Lq9uD#KZnq1$uqF!tfmJ8@=X11{LqHP$7JzKdMDeKQoD zag%u1I}r+kmiw`CIT@ttt40c!Isxi_^nxQSo$``mRs_!=4Pt#-exLoiSQ`1sP?JW9 z!PI_4D(PUXEEzKp4#bD0O-luB#tjX0KcK=BH-8f46;YGI1@|B=pyfCn4R+c^rhJd7 z+t`<{bxvF7!)Q1!t*5lb9V(e^QJ1ZMzs2S%bqqFzg9xOU!Q394{be>epNS{gCejFy z9D}bv4IqxpgJ<>4>BEQFuAH^JBJ~GDRkU=ra-=Qx3!cax$M#PVK^4OvksbwIc&sm_ z42GoEtL_dGu6@}~oie;_Y|43kjW~fySFz-s?Ar1@eKNGOHT4?_;!VY!outaQ81bny zic@Ah**mZ+a8qPH39v=<2J)Cfd=4nA4T`~PSB0jP3I{EAi^$TAqqcOA*p!QM`Br#v z?O5F>?3z0C?QzAu=wAge5*8h5LgGcKYos9gc=QKK)p?Pa*%g{#s#{)t{O6JdqgpCh zc*kteU9!{%voqHLu-|n>y=a-h*G)mV}5a@R_ z{0clp({tfiXT+{55j(yceYIxN;ZQ3b1;W~Jzvb+d`d8*Ggx4qZNU!of1kC3^U>RlSyGk4X$(Z4jXBaF}eI8pPkx z&GR8wd(zB`rY0X*XPnUyy;yN-Pc8FG|AozPw&dr-Pn{?-!FQec%T=!)LN*IK1po@=}IM7*=^+<=ET$RmzxIM7Q3FSANIpAB~wHCXcfc9As==Ojp(66)B zAba|+gqHk@Ov2$5h7QD)Sm9@-2c*Q`oBg90=8BcA_V)O3Hl1ROj%bCQujT#V>*8s< zP03~hc3cH$>b9_}8om|~vk0dNB4^rT#mNpIw#6Nvz#v^y)>P*WM?*4flgZPV2{t)L zxPeD@DTUcci0`8w)oZfbW1Di!RG6DkQg%9U_=5K$9u*{O&E5G>j-?oGFGv10k(BNr z3H)Rm_+pD*Ksw(lQo}XQI({f*h0-^JJy9SJriAb9pTM(k+LA_3<~jQouZZ+I!RfR> zN8>L7N8{zkuN3Fuk#rq|<2G&KPnRF5iH3Xn8!aX%E>~$%%LFp3V z2Fn(xD?N$w{vuno8m!inDb%T}4AUHlf$YL=@Pv%orNx=E}Udz&82|%Vw3$ zMJb{k44yKPe^sAgtE&Q2f`B$#h5hx;fILiU&=0WdOqAB5_)ZA+s|=-Q_tMo?wjA&r zaXdqK9L*u=_n;OnEG`v{IW$9C0(k@n41yCJK$KS@Oe{vwpK0wlNVdm*WF_)Y znp(sSO13{Ditx36E(fI4WLTbcw*k!!To58!4}a(G7WeWeG07m9EDT=WNL}(ld@qZ> zoyVXC%H|VYN1$zDS0^swYI}X3aZ;V*uf40+Qe3@aZxkgG(7XrMunC%R!6;f_&=sSI zj~~X77N4o~B}f#rz)Ut%P7U_X`9oE^^CE%-A}}=iDxDP|g=(W5&>C2S{$~4glq;q* z{0F00jRHprPkc)dz`SsuR=A-nLmWv46 zkOxlNRc!X!BKFG=5as@Y8@KB>213pbqBLpN(QTz1Dw%jnODmLCTh;JYVfZ^vi|6AI z%<-7kR#^Y!P=e0L%Vd}bjt@@trFY+9g7k)hbsEL@W&`{0LfSzp?}=56tH~q;Wu5+J znarbBvP0B&zL6aRxUh+oxT;dt1lHKA0Y^iwzmJctpR|v9ZAU8i>;x}&`8%y(Uzq>o zR6JO;#$niv^Y5tXQAlR<|ReEm!bcS-#MB-%ruxK=Kmz)>aN zV74Z8n2NZEY-uQ&@bwN3ME=>bg3WV%|Caeo6swb!zUJ|3UaX3R2fXgu51}oweC>s| znU()c2RX;Sb6Wziav|S_Z#5Tiyi-A;B3h}K>O9J)w#f(#J7)L>EoeIH!AO)Z8_EXHHuOp*H4VLunpmzSBc+PGDR$pWm)>#-8#O)Q9aU ze3T#t34UisQaLa8hqMZ8#fkbuQJd4a&DuM(rKiUu3-|feHS8qe>;}~tkoZ^J`fi&2L6#d~M#Wz@A=7&lVpIu56K+7RA3qlA40`Jpiu9b0DuZ`YCU$|C+U2 zVsW1B=N_jtH*AbeiSM?y9kyfq%JVQ{<#`&;$EtSM_{phQH*d!)aG1OqyLqC6JgtO! zPmKs9a!|u++3oXBYg|k(PAL8h5e;gVXVL1rgPmS!dsILmQnN+)Fw0u;0{YJ^%ubN9 zmHh<(a0~pOX5l}XQ4U6qj%L;-|0*3C)X;KR<3Q}lqqLP5 zMlMIvSsfW%l@OD}YxDIYxnCDvmn^GkXnHV^AIebX#XA1Ct}%5&wP-oXUn;7HLW40j zuS!g_0BiEDZf(5XLR-zvs5r^3ty=QW-P-A?BZn7nr>jh6cDB#k!|B3zdq+~JGAqaG z;mF72VnYLL$>H_l=GSsHkjBIutmW-zkQogHs{|)iiO;Cb(28+!=yuAhUwe3{L#XsjE3ow8lelCrT_zQ{AW30hE=kc zy?l4O+?$%xxzQuN9G{Mkx0alT-oRon$-fLMnZ9DP)n=igO#WpXk^CAPGGgmYsl_PQ zEJa6$dh=#?1zCnC(YxH98Exmze-KQH46)J$<(`bRW zlO3k3eIw4%8ce~xO)dRUs$9z&!{G$0Fb+eQ6Rvo?B$UW9W(thGN}d z9>BGqAp+>52v83yV;xvz07q?5jHmu0y^5djKxVv54Rua=zm@{C)a^L{kTz97I72n8Ro1lo5GpkI81|H zR9zaZUe~(;VQjN@Ba56DxJ>~WH+1ECamOE1X}?1yIrAm3VlAYJ_X&f5o9(Z8?dI8C z&AD@s^^PedMMrN<4FyUj7LPlUuRqf@;yi2+!JnBsOoZl9Oa$Z&k(ZxM)JvKd$;31u zlc#TVLQo{5Fq{=QreC4y1pBc-FvS<#E$cznfZvXB)}%2bDwbh|pG-=Tl}V>Q7bJo7 ze)^%TDrb4f5)o!scs&B^^%1 zko)VvUZ)>XGMSJkvDAhT94=M;{igdGrNnL7Fon21ke zg?hm59@|s+lUHPBJ$BLEu&yE@76XN*>82XrO~>Jo)R*%eIx03|-e4@n(U+7Pd#aXl z4-brA_8C0)fJl9SlFwwlxWJN5d+nM6RGhQP22 zAb@TjY&1O0Ja;`Em@@B0+;s@|@U^ho%)A~SYH5LDn*OwGrAj9D4vN9dS19G=OucAG z&ks(kQG60E-%qy7kRZCo$Z+;iX@nL*ur!y-Y}p10M37+wlz&vH$wx1|7QNf5n-Eim z>j?r;0?>x~4!aMErdH&Z)iSb$!5PUU&8(CW&Q2rN) zIhq?`3vfgVF2)$Zw98ot)fa&Bl-1|yP{>d&>KL6?!7(9bbj%~s%m@Le>PHO|oD({j zt*_%2%k;<`p0vOfFm;OrEHMy#iVGt@OD-pvSZwro<03KemN$j|w1aJh`Er!EK9wH$ zS6o_SsKEzh+LiGgrU&-Y@1zFxtH~q12c}Wgq!0Od=FJn682?ymhGkRS6O>`u6Wiml zC1(kcl5%7BS(L`4KZ9sG!;O}-0 zwcHpFB=7ygMf`P`!*_^?v%(S2VU^7b-az&#__q_~PxKJQ;OpDV{U-^QTbsq0VqBTp|CwV(h1fh_;^r~j`~^Aqr)aot=1fPc<^3X&B~ zovie&^~@|CXdV9x(%4#?gvm;aKto{sQ$-9dCi+Jn001x&0N@t@*iTk4K(SYa@Xy7k ztfZn4AOIjR1QHYiItm0395fOdJOnBV8UQRFI4TJ=EHPGx>-6(MFlDGp;f9#Ihy5lKY}IWf2dn)Zx%5TcZFH0}^ zn^W7J8{=D;5?+v*T%Q?|pPg5e8&#H{(Uce2Sdv~`Qc_g;x4O2vqQ3QSWl>#qU2A=L zTU%RD&`@aDTzK3>XyQs@#Arg)Tx!Z#V)9aK&Tdq3Pg-SPX2Du!{ZMw(Ol8h!QQBfj z-b8W9QhD=0Y3F=H$wW)lVq?cZbK^=$)n0kyQA_JyS5HS}?_yiuXxqqQ*UWa)$U*ny zZO80hZ&m7GUFJf2PG3##Ky%qZ$KSb*lAf-ff##*Ymfg|5wxzzRh2ggCnXcWDn!Tx} zgSn2O;o-rFg~^$zvANZSiNU$4h1I#S<&~A;(Zk-Uo3WL{k(Il-iKE4h{rR=K&7G}@ z-RtSS+qJ!uwd04a+poiwvHgw3+pY1Vwd3oZ$&$%o9pxY zm%GcO+l#xG`}6ys_VoJn^7Qcb`TBJK^7Q)o_VD%f^|K1TzrUB+yMzD$@BqaA@GH8m zU37YQVlJk!Rx|B1^~kTu3h*ZWGV*J-GQ|+UvjNgmAi|t}FYr<@+TQfyeP8Fden}Dz z)UtwbIG?cKK`goxVr#(A5^m_6u{K+6no^#jsb5XksWerwutC>gJ*(CySbx)7#3`sV zjA1;E*=CHtTxm@Rlt7iz*GOSBnaVVoVxM-)zP|UQF7@s(fsyEhJnJjPb<$f1lH>hB zkOkg92vzv=2hl{n{U9y0$Nvqr(VdBCq5TkIe$f9({l6;N-$V$uxjzCbdGC-fciH76 ziX1)1z^K+-o|&l)Q?qD=rOy2DI;(C>4z?1Bf|f1R(-Qn2be&UhW>J)dW1D|$+qRu_ zY}@MCwvCQ$n;qM>ZFMx6nwgiWnTPvwo^IW$yZ1V0e`_5MVdV=wzhm(SnuC^5*EBrt z9koZ@mTTZFNQErWAre$S;3iEFXbfQqKv55|tCiRL8x=EnjTZu_DFbd~tZQZ$p| zU+>!U^K0V~6@uX$BC3AgwE>Y%4MzN*YtrO73g#zK4i##h4cKwQj#mgWG;lEmxT-t) z*5al$)NmSDxec4{%|r7rg-6^`rgC1@paMVs(WV!}qKebJqY9?SaZ^TH&E;(ad6MDk zRDFe-W}P?9s3ZKeA*Ugzd3KFmdj?@VjER(1ZQ5QMUz>Vr&?jwvaK9583x?!&qOj|_ zsx_PT6X#p6>LZw!BaDewLGy^?@i}U(-`BpBWgUKOOdfb z>lIv_kMv?k6RRu8BxsG{ZS{fK%7Ju=Q5}|&Z;PopbvlAbGk)_kA@ul}L7L;cu&H0e zM*?pzi04ZRf&hlX{dL6H!Wj{GpIgSX5DPLTUEgb=Q|Ht)^85`{{MI9FMl^RQ$Ft2TUk^^98lS%aurLQv6OUdRH zgX-lysxQ_Gdf*2}$(q3OF^i5ZrvuLkxvQvwQ>GB6(Ce_`;u#%OZtUGj#KI9eeGx`# zJ-r$jYWJc0F>fO6z>ty=v_&GMVdvX=s_5Rv&8U)HCc#evmZ)Ah{hu>{{$|F{qwTnb zd#%MkM?h~baz^Y{0145<=VF!KbNJ{)BDl%3h0B4CANG- zj38hD)()61kmuvkj!GqV_2Tj$1=ZT$kfZ&KWcMC2+O8(NVcvw!fF$Ey{r7&mE47J< zP%dT_GOV5nwA*(Xz>7A%SeFn$N8UmoOlQvD!+ltG6EtNot?Fo0B%z$P zAgY{Xyu(;qqfV>OhH97436#@e5riOqFxGE&Ax_^5MtDsb!Kd}Z7%Y2W@otAzs>WpD zcq@lhs99R+Sa%rmYULHo3|cFvSOq8u@Ot88FBvec;7*iAF3Ir!vpOT`QzLNLi(?K%TDZ&oz z6;GGUd`QqU!K@s2z_0E7m(CFEfSn40Rl@;->DHN~$5EQDzRZR}fVIoZ4YTK~xamNw z#er5c-%NihDXP?4j=vPwN((0AqzlRpvxVh+f60_s2Ua8VbPhx4U z+O@rBU2}rr1k-PZVa2GYLa$Hb-<*1`HUSorn;&_^sasimPl%HeM;^Ku&=-{hrVGrO&5~{aAd05huY=}pdB3{kIgxfq1n`Rf+ zv7R~{(T&G^>&~w0ZK12Jzb4H)|Gc$rbv}Kay#JuT>>taoldlK2#kG4IWux(6T(Hb% zw@43dyF_4hp|XZ$5fJ*m%xr)PXZ?MH9~I}MaIR-ty@#(J^~tvLd#{60-YfZK{cIJ3mNTGJ zb(q{Mtey3b=V-!k9VqlK0E&%m{cbSyO8W(plif4x3;tT0ss*k0bIBpXQ@`F~?^lm( zq0{^D_7VEvv0%-yZkQK&Yvu)i1bOBa6$&~B3MBJX%z03Z4!%d{#Q} z&HcUBXqc^Fcz9`uoqg$kU&lu^V}WvhBc2Gu*#VYcXxY_DK#;i95Nza&HeHwwZEP}3 zQIMIWwnok^o2-V$tnn_pf0_)ZDLDX$d(Marc#!cu6(-4bsm`+F0=}F;M zFmfZ}z>fpm`fl!qcq==rM}S5)#Gs4ATrin%n;q_ z(j@5!{DkE0cp7}SwhdKoK=ekpU5&Zksa_M~X9E)i30P^PaH5+0jl7@|AXq~=Xt1Hj z!R~G9RJkyXOac*QXh(itcnY>N!_t&-dwko{*0_|FO-#g00N+BNyVWbVy+Vx3jB6UY zLZOWmi41n~Omh76z1pks*Swi53wQAEDyvisyi=D+vlusaVLf{=1HXu2XNTKK?v_~M z7_$U&C)hi*K*EiM%QZEMN`rGzBsLuj*g^gyTtv2WCCu8|3MS?6BFXw%lHVqYRX(kK z^XCXokP7+0vBF^<*jSw0?ob}k1A|=%wLBPml|XaOMJ>03!Cb2eght+@*sk-27Y>ai zSe}8a43Dx&(YB^p$cAy+osg0RhZ`!NlBhPs$Q0qUzQ`oTMwm`VTohDk<2-r3T&*|! zfGM6AUTRU1V830#XnA0*mcXukUEUL01*Cgf=NrO^Se%N8{-f4~>^_B6GS?mFh2Qa- z?=&2Lue6k@hC%69f^%G2+$d`t7w7o;8u@%6yNKj1%)KTP>MKKorvE}>XVgpG=S_{X z@F^lW@XfBECQOPoSB<~ZEd6`s zvx>9(ymbQKG1+c4!=B&i=O=L!$$kMrI~7K7 z>rnk^Og<_N76UrzJsDeZNovo?hTupc^i<-hSk_qO{UP_rTODEB3fakQeW9yO3mUfG zd)*@yobLgw$*;nb1^@&%GF#;`Q^TJbUB%eN&A+=;Xya zbiZijnPr8@GG4tXc!|;$k8<*ds<+}(XBTmUy9+@gN7NVik_b@C+RB8T2omLU#ga9)$op*3d;Di44h{(x5n0Wz4wju3tcohRv z%T>SKBY~9vJu*1D@?KG`k~;O*!;}iVBD~7_*fxl{5fEzf71|4XY!ykm3YC14*YqZL znyzUElw1RTT0Ny+Rd^WV^)uX{u-KnjO}h+ueA zJ)Y}xDis2T=FZa?g-bv8H7tn1@9~8t*@Cf{#HE^WW{67VuoU?h&GB%%$6Xx$xS{DJUL0>BAgl?3qJ9Kp7?TUquVZ$70V9w=8+ znZPD|;DWAQZSA8Bk^A}4TE^(P2|pr8ZibS!@#rXtm^5%s7i_X3V{rwikkPyEz5#xp zK{sl8uk@bz=GV0&Ur(KsFXpGU=3iRhgY03CemM2}znMV>(#hBKg7)9KJ0quLwR
TGBq{UG?qmqql7TANiJqPR*;GTooLkk+4;zhB5A70}-A3H=JTs$~>)iVK1gd*+6cy>iD3$w&q0^z{0~w3>O^8NAHUA^7-Ndy+yVPUmf#oJn0sVwYap=#)Jyc#{}+x!wOB85zX7M$(I#rEf}Op{GJdSIS7&P<7xGmQBx5HfK| zI#Cblp)7rB+ANB%B3=P!N~edhkuY$qn7D*S5okHkL@5}Yg8n$lh@T`iQuobN%P4bNCdd6AY>{iSn6>Z@;P}kPjy1K|+zb5N?0fVCCY9EEf`ss>iYtuQ*K90g~M&68sQ0DWJ zr*0RVwOCYy5g)&ABL@1ME`qnpx=wr6162_mHg1GK8&mfwV@>2QVgkPggY#MSX29#- zH*^x?fFfu7FBy*sg=k|gsZWb>Hl4W9iW_~>27h7{oeK%FA0dqym<>b8SxhxyqRnn} zzv_J2RGNxS5v0|Ii4n9@MpV1)2R}GyrD3`%zNUTT`rA? z4J*TtueOhE4~|OEh&t*i$?ecj;p|?nU)BOG3S0w48&4&zGZ=Gc=ZZipa>2R+&vLTZ zSx7Aj!-?|*;kVHnZO~#*Fao;w4xpU6xpw7*2}1Xosx8Bd*}kw&C>@EY)Rw ztE93mwl`v&8ge#s@{_~uIo;t8Ep47t66127^|r+gc<6Ye6aJ{bGYdQuhH=xakT(H2 zRw$2N({`;iUYbIe}D*&^REt52y6R}OX`gB!> zeZ9X;qCo*K;f-DXFMw)o_A?;My(Nt-fqGn&UoEL-v@5vx=PM(RE*ddgu(%mrRBS_c zWw(QP4VVe)>@;?N2aEB3PspwpS+0*r1zCmPYU5dLW${Miau%Jxuq-*K+3Zh49ugy( zL9dJ#!zk>Jh|1FR0mO>WeO1fRmBnAUy|TwVB`MJxrik$$NHyh0#PH?JF+$!V#+q|V zGbDmz2IMMUN3wbpOorF%vR;{p$~(9vP%r$2oV73b`GUC`?ZZ?hY1uUErKHK9yGo zkQGBgiF$j#8;0AHfKWGLDwcVw$fk}2WEAYvW6L3rM&0$;Ud|e7tNipMMoG-U*95m= z$oXNs@~NU;XKlss0^m*luAJLZPDGkt5F_aBgy!Qqo1jxfAafdG0yFjFDmedgjj|9Kj#^H`%PL*>5_3f-g zjRMqlg!-}#Y@rKESHrsw>(cvA_wb&JW|&ZZugxur05}8awVLVFt)w)l&*z=Yk`*-8 zJX{(O>jF{SX(~)jnat8uupY9dU476zrv%7uNv4UNmufswrz%icR9CWr?VBPKYZLjW zgq%p>O`VoFMk=SDA|8LCWSqMawdNxH!65_14`0VDSsC|!BLDcKUv8qB=D0-KuT*Kv zWQOT>w##DDpZP{UnK(>6!?7u6>N}^awgjw3`@p8fFs!HSBwM;KYtWzvF7=A{&PaTiM)=6BP>O$!F4daj6OX3 ztb()t@S9Clv=*1oTv+dYHV1=B^XI>vm5!ufeiP zxVp%%i^JReg5IXtTj1nYR>x&)+q&$?-9Q=2;oBfdv~6D|o2w2MKofWnXjLnyJ(du+ z>Cu4XoGWZ0Tu?d%LYc5Jo%Bg0Y8)!&D=~;y#evs3u-uEV3klTVUVjP^|M&yd*suw; zU_4tWE%5EvU!&3_WEsCSjBJ2p%KSz0a6TXZH(EGFfd-n3X29x>eRF&LuAuT?^Fbg*cOXd{8)D1? zPC=Vz*O#PhQRTOEU9#}eTqqeaZ&u7kcCYMQxU%34hv+aTVK0HbvCZ^mqgeYGg$)+b zP)oR0bd8JGU01y2(j+8q@$eDavnUdc>5JdMK#EzBZ=cqZ``j5Ogzg z8>q2xV(ea_e@25?vLv}wD0U^H3}s71u9yPVsmMo=mHGr&;PTATPk@Kcjv2L-M1h6| za~GLtc=F62^1hwtf<)c?3V(Ew~a>XyST|$($b7ChO zgwQ0xf5t7Rb;n+z@uOT4dlL z;NC6|P@W}oONj<;v;lXHeL83+P);GNJ2izU)uGMS1@6>m)e4h1l zKP%VF{oWV!zc&8(`8=2E3q<d?dKs>&;M zjoU>GkMic(v6(aSuyQ4jQ=QRMQ;GSw;139NC`U_7kK9Z4k(gqH`as2zhMNQcs2N?L zrHTQ$LG}~4>i1^dP1M$k&Do}{k021Muu1TIo`AYGYE&x4eh^c63|Nh)epwN!UxF}e5e8ToVaBh1%5P1%B zUQBKdnZsElnn#ATRgjtLFS-tg!u;|{UbfmrvNC6-tZa$us68mHp8B;?MNsD)lo~{5 z42+~)7Mco<8X7T}BQ}t3=?#QRr@XwPGFUm~?ytUdKe%)~P?H(~$T-EC93UtvqWIx1kyz z>=C{<{*^WQqXwhs>^*|NXomqw{!|7%KqQ;VmN12ScBMQE=m4Bm4vr>~dT71EHUI)} ztAi#f79wP@J$JawR5w4FaaEH}5FGo{LtAzun@;${XV)DG1IFO4cRDKsyQSV2uXG{FiLFtn7*eEnMF7xooUe+CHVg81LuY8H3Qi+<#Llo-4Sud6{ zZpI!7yWiGGLdk??VoT&ea<`%bP@erNvrXmL6mtD2~31@gxb-zb{ z{rKqj*J#Uj>xN7n{&Rbh8fF&Zr@XP`RbN!t#KW03#DC0g&JlvJ!THlQW<#2@;zgk4 z*ok*AEC$V__CukWuZqlP)BJrKQz)NA)~$wE$3<=d`oXt&O>yxY;@vT0-PMM?*mgY% zE26+b)re$`+QD*$0)KUgW5`V4Wd7Ma_r`b7U*pqnYiX~?p*f0Z8lJZJrkr2;t zGImO9$SDxBgCgwS0YNK6{J?~oe0r~<8_nCdn~UHHs^W|VgoT4cb@x_J-m4lSvE;Dx zyjp1V?8eTSVsdrlkp5&c^MgaFm{m=-8`?v?L(r`HXrAIKz~GC7M#%t12635Akv$=^ zy%Rz;cn|?`{hU7a19i~66kG-!=LNdn<5Y=6+gT=Lg82#?fW&E*>|i_*g{$><7r*#; zUjO?WQbq$4BuOr?pXe?@3=3gWER+ZQ^9!GkIj~(TDf_+>h1nomCXQjmi?D?A1o$(C zgh5-}0lULHFstAk*F}6-*u}4ak#->fl|rC%hZYY4`eT%=EJKv@88e_Ab(i&OoafA2 zQ(nEn%3xG<$!y`sg$t=F&j|mk91GPks>z=h6PB1O9OX;8BXJQ%o?9KGFvQz1^@@$C zeJ$ELOK%zkfkXW=bBt8E1X6uYco$TC&xCakA4KIUFn!SpwxCKlMH4MDm8h(RaKIJT zgH9dE9QN8p2^Zv+HqVEKNb$^>5?85lumfUZ{??)+_*X73ry8t?nBG))<8J3nYF|%^ z(+r&ZCfAZnL@8Sz%m{Ic11>-0j_+?Fe+Lmal#KMv0eyKzndn)^H0OJ1Mi)S5po`3DqdHzz>WYHB&&RhDr^DgDi($AW{Du24R_bksjQYC;% zjNYi-8*a8??%FSPwShR5Y+5>Kcf{AXW9TTISC;#pb3FxmKnFOD)-nj-wR@tyQ?r(9 zvHZr3I=Ak5*A3dgtN>VURcl5b8l6)O%lA&*1UtZnADzXX-r!pu$E(N_3t|;$E#9`{ z_hOH3seihxJOEqm;(kN-&D;#{Jgm$;yqWwqZ;^Kr*4Wsz3JQ8|Yiy|!dd-)iYzJ@r zGJ{8H`by`Gyy`bYZlZwi`X;l@fBj5-H1--SUlm-;_@N1oryPu4z)%}#;yzS<6iwyt zbR5wDM6DXn?ir_}VVYPzv$eKur)tlzBNlaSJ4Fr+_L}zs$I_$Jf2jvKYvwi^tHzt3 zI~>9o;a6GOCu}F=^>45w3v$|^JnY?ej9IPl=o~kz$(3#gopxCj3>!Cfj8;+z6--~l z=h=`CGW(3@G~!!U+W#jPHcU{*sCIOXlhb)BgJHgX?4_l#wCh~*k6$h#iHkr%TPk3@ zw{W2CJJOXSMvgsu)RM!;l}`6p{#%bKIArbDYlkkycIu5*q>$ew@~fq$>hpAMkB^gk zo#9qY?YFO3P)uBx%IAf4ubnDP)7VAY#OA+EDueWqYc_(+&gCr?mQJjduBQF9kIVdZ zKHtmS1=ztgp6<8R4Z>(`w?cURY&(Dm(Wp__z~Q9J;0^gC)IQ|OPF;n8-{9)5DT7Eo z?<^hY%z12~qE<-!;yXd;_BZpPQQ+nZG>CA(;C^Ur0UWZJv_{wC@%9G3(4X%|ry!!G z6vw9tG07Sx*S7~Bc$x=Nc^!6)C=s|OqR?eNNID#*j{8h6`Jl%Rq^GaG?%7A4>m~dT zu)~h~(-KkR_)uOlA#CIWk{JaEZ~;#%IU43D>t8?(vCd16e%J>>63f0yjlzjmr;)*z zS3NER8sE2lR|*Pj(E>f!*OiYHwO#KObFTMnahc-f>NRYoAhs?|@f=AzxR$5aIzMie z(2*Kp{SJ?jn4?O4zw`0V+ThL~`iIx+?ASkV+=%_g0B@4|nr3%y%`1&vOIaiVybIa@$vBMDq&<_HZwBYpvgz2+uBb zx5_}<)jC}oL1u^1V`kdizvT_Tzz*h>fYPxh#AjV=-<|sFe;2j-D|Q`VtySMe{Cj6z zm#b-Z@^HXDZv@|99z=W7paiQ8rdQWJh!7l`zmP@XZD0JBR_or!Xo{YA2zpO!(@WTO z+K=u}^7_?9f)Ks0B_v0;?aJlK*4fDA-jXi(m91|p;fs0j#a3K)o^d;lXHV=?v9)62 zyd`h64|>0kNBDJfO7ueRRDtbaRJ4^$K@UU)hOd;X6KDu z9&=D$aozD~Op`B&^9Ard0B1(>-#VxQl;L~DQR#ft`?F@Eh>FFid5{Sj^D7w|Df!QX+83uLtO`!`>W^%5-bEY>!i z^XK}t?={Wtx{JAy{;fSs?wyO(>B!LpzSmyv-uVSjhsEjS+Pp>)CzkKG@(Frfv=4sn z1WzyX((G~M$5nGgvw-KZNPcr10xMX~nEj^L*j6)l$3g1tKd-1L_^)C3ZJHzkueXO| ztB>|d6UQUZ_j5?;?<=KrNBmBqx~|7X)$dK-=hxC3Klh3~K?$#K$iH!!h~uCu5X(D8 zI^7rb3VD@&pRW|b6F>V#?cM&MguB+}1g5X|3GJJ%QYeyxpI%T*vLdgu{Pm`gx6z|v zlkTx=mQIS_RzzaFb3Dc4I;ECrw+`kp@M05*-BLeRecZugAyLVqywyF1*o$M^zW+?u zE&jk%=#i8`T+}#a(l7Ywww0!DvA(<+^K3I1Fy&NOeaLgm9t~&qa6CM}C{k?saDLRC z)e&>NQcCFD)8ezSrLU2};XKYhf-Af#=^;U~9L3Gvl3YDDX8W&iOFOB|n5JiEFCJkVPjZn-wx*xle%AG0WpP~FlNaNmy)g3Bx_{% zxpOLO$Lo}@?#%0^4LIhTIjiTb`10t1qHQ{6foK7~`xu-x6*q_mh3lg0g6p`x> z&d?@0P*x~>PEtq@w|j^KK713&tgYt%TOugB1)FqJyP*>V6p{3i&BGB59p!nc;hoO6 zxOUe|)1-H_B1+Rk9mzQj(^!D8{7=HNx;NNUaT>qm9}A@tm*?kkv*)!V_r$6W*|mBT z>zJ&R$*R%xu6xRrM5?SJVJaW4scWk!JKLukWDDA*Kiv5-v|HNM_CL1b@@$Bg!09P* zUj(bRizk3YN_$av3}sH>;2RxR~^kZ{8Bwt=wm<@b|?o#HGf7PI)Rh z##9QN`Zpmv2p5%LXj+a4)B1`Q^>Dx^!c%i#a=<-F#JC}(bPD0bLGWi;z*+oDeR>w5 zTmt%w4c>4eS>plu6&GF&6jo*oExU3sZGyREDX&;)>#10n?4cD1m5~%@Z9J=v(u!iS zGz$nCb`PjtZ=|?Hz?cI&d>hG*;+>-f`FyDPUgEyN9yM?`$SYnJ6Dug6Q6K{iPc1JkfYw1T6$ zgh2;D)Mef`c$U=ZuW7l?FHi@b7^@|=+w202l}i$V;G5rMp4RG?h;d3AC|Yq^H&xT; z2DglIYZQ;3ih5~CZvxN0S7&N6N9WM7!Gn3XL5a1KbM(&t-fd zN7_Yd*}g`!S(;XzED@hm6ul-=m&MnHdQBO$;W-sLKGn$_%ongh+OpONnmdst9e0DK zmsucUqQ>ED{$AmO+OB8_;JM9#&IM6}Q4y3yL}}qj^*@hA%@8L7Kr9Oe5cDBgv7~j{M2`M6H)pzlCvuam}9&R2KzCz{VB*g zqbH7Ft`-Z!5%_o0!k*lIZCyqVM^U#kr(>Bo-C?6^)E9%wq9>U>(UgKj6|iwvl1rh>Wnb4WyXU_Gwdha=&=R0OR{{75h^ojBy_V)*sL%%W>o{VZjI`gBz1VowUF1 z4Z_Ym=g~G14$wSAUVN)R9I(k_z++A>tqhXxwn&dinO~ayiviBXUIQs_+BT7p3nb$% zS9Gwba4_#uSDHgG9!yqMOf=)3qK@GAsC1trt6(9;y$z7$6S+1dSFCJjHbO$fP)J^T*5y5^P0h7DqB>z7_%zWmVD{NTQ=a&5V!wOgKz!dGdxrD8 zo|e!jez}JL%t8(F;^l5|xXkl_$*k<`=QAa#9)mXYHV)}2BYs*t=Qw9ukvcgq%V>%@ z$ZxT}dcvj6ZD3h{Zj{3-A?beT-d)F7*_L#lAPL>vj}REp(|Z-y<;j!WOe#d0c5w8T zDlPErM6sdlTSLcR0a8HWR`5qL=j%FSu?5739d;0zJutKHbY;Uf?Z2i~^8lpNe}c}` zf{I;QROSr-(UH?o%Z?1@f%-eIOyVNam^1OHR~#-;vj8u~g*wOg`PMY#sf^dD6#0Xa z@o;zzV`LpdSsB(atE=szH;Kz(-d5?2O`Ti0PBE%yDWL;4U}nEGU3+*-^IfK)G&hj5 zmC7xSs}R%!LJCxtRhv7AMGeG8L1k`PQ?nT=v8%8&lR@N11Fh0qYt?aJC{(pet)-!B ze$iVxFI57{ZBk706GMBjmUkSN*wJab-Oz@e{_(<)nS4${L#IkXrnxq>+Q|2azQg&L znr$CYsP~RWGPQQ0S7oPc7O4$73Gcn34i^ns9jnhJoXXU?8gn(@-Z^jP){j4{Xo`;2 z=8FWHV zj5_|Cwx^zjCbK@CmvK882_M$wQo!yx{ASvW1j$?G#M{EzTQU7eC_qm$KF&HR z2#wA|7T;~t;04+$W|=VPMZ~CnwP18xzh)KFfBgIeMtRHCVcf;{X`axv*vp%p&~MwVK8bV-2UrZJ;Y*70;{ zb5rKTC?$CE9^_U0AU?YV)owX8gb7-l1p;5TpBd)qqM$avA*|JNB3c000~R-|7ut)Y zCQ#4a=q{!iijo}mm9$wwB&RkS$!;U?Z^UjObTZF89(*Nm~mr0)Y^Hf})1?08BPTG-Uw^Lal&}t@U+6mEEQZjJfUa zf^N`L>JFX&X~TG=bsfIZmGv=XV7Tz^-XpS{CYd`evc$shlAKw_N{Yo)11TyX?@gLN zFC~V;haI8`Fi3U?zeUqyh~>r|5=q==3&E^$0w-MGs}eV&*3y@!TjXuB_yeGuPLDJ> z<<|GoMS>}rd?P_I>}5l=+;>IOx*R5wEfz|#O(AJIZ2AD|S0PZ3AQO#Us;nXC&B3B+KPEZ#(`$SS3sl`pY0G z_L)dQv3;pE%b+}`Nq|MPAk_4FEPnqdG$IQ`(ZtWV8Hw2Cfl-KX@`hcZej!~J z4+8tC!5j^=7+4(MhR0)?mh#DkkPvCJCO=FQLOj&5_Dz8_dSuK@(F)4`uVlkE}ijBgiRUXUCiQuWF-t{Yx^80P4ZV z!6QMdVI5jsP;53x8yXmw>Kqopk0+jOqRLAU1(U?39PDTGe{L>pfW^MqkVfdd?4PZp z;S?f2MZ*^zBKJZY?F_J(qn8opI3MxvweX|GRtD^nC6YR-z(svU13-@v|Ar?7NJ6!g zGd~Igc>-G_QVgzXF_?@F>78OTfTnS0yl82oOd&x37N_MqAJSqlnqpk5w&wo)K#^+6 z&yB^IB86R%`?}ED!v-tVDXwP5u!@JHRI2!8GRW?h0O4U6p{m1%kui{VT9j&CTh%s< z3&TbbSd5P`i=twyB2_BCV$!sDPW`4)tfh|3u+(#DtzYGek>0rbXROLbW#Y6sDNcQ6 z8RMyU4Sih%W_8orbS_eFb{0my8Aj_mM2l+GD=l>!kP@|A@+ecSsBXsKGGU-~MSrWf zr0U{?sWx)EseKJ9(jEL2{dOb+D7|;5%~rgQNmB7PcCCyyUAHq%A^5p#gXY4#V=RPh zN?#!8k97u!V-0)Tu|hEd2MyN{Y%K$KXPU5wbsCqir`qjMDuI6e6L(KT%EMB}v4Um3 zqdN~ z%&`pkgQb2dm}7(L4*oc0e&}oQP91YFGDw@(`yLq!hxqCHscmB^6{pFOn$872WclY< zR5LpjOYEX)11bntYfEzg);@X5%Q_0xT+8uUZL9OeV}z*m_38CyL;+x`_@j$aLJD6#h9lc;xGB%ld@E95H>9 zn+F@gCF~GYf9K$I@^++WLh^}mJuaO zN^7>S@uN*cy9`K!^r|td(Cwf)w_w5XU69e#mtdrvQK4*%#FruA-X8Vea2baA1$I_h|2U3;ye}`z4$w9%uFC5|ihRbE|+gKIg6&L$hAg2 z(^5i0EBgxCrnt34HvCJJM&qqpw5azJO33^+jCU}v;TYdSEU20a<$-cq2V$mPlvLKh ziNR>EB4IFW*WS$!O=D3vn+k4K5Xa5y8oNLo>!no?@MGsl;7IR7$T#y%AN45z-Q38x z7p&dC>$8joVLqP;O5~kxaZ{RAe7Gk!sK&KNY1Efl9+FqI0X?vr;Mq?yC{rxLC`{pz z_oCK~RJPlUNOm8XEOUg?HhpIgcEajFa(+Y_4bcnpn|XA_232@RpL(T!}IdEtxjhr6^A@J+xg; z3duJn@^1h*Vq3dmrqNkdU$qkwl%;d#dDGiohphG7`6zlgtB$N2a0`p5=&mksm?aFk zF0r|IeEQ?A8K?;v{0i3dFRt?PV#&TtwDG9MSw${}cr5Ts?T99*mB3EMv0+Vw5-L7% zusxpyVwq6f8M6D)j~sa9?w~^lMr5h@H?TRg?Ivty`%Eq%o#V0AiQt|lZrzVPzEJu- zB2sJVsm1$Hhj`wbB$4Uu7itv=0Z6i)H+$hnGTZy=e(tzGo7o5E_FLs1rt*vrIoFFx z=K`_O&X#;B50XUId9XsYxw-(=%C-)R?HcnL4|R#qIkW)qu!okFR6J0fh_YWdjcyWv zBpm1MVZ&)0-c8CVCLmoT7iz7abt(y>^4W!F`h-IG%>(anT(iHP`~z-s0IKg(>X^z!Mk{EWjf~XBBWmAAQ z%T7%RO*!BV>pQgvMSI9W$|zVMpqf=IiFB!C&;@^|+_jNZGQg?N_LWE$$1@zmXq=%y z8y6qFbrWPV9SOc)A~^7$B%~ZEPc@;LFivByg2eXQ9j0UgbKwlX%6E1LLkYVydq#)@ zO~c&6Cgmswql!U9-JFUu@#NcZg?e)`Ae(4Bu8XyZ)xAwcAsM5p@eZu=QreuDU=nqL z^I)!*Slcbfo-L3sa!|4+0MR3WRW$C;*nM;Pi3Ej7=^t9@s0E)-eaG=H1PIVOl^iG z0+sQ2x3KJ00X6mgEogQZ_arOfdx5L!)3F-VMjboU4B!950<1Rrd*=NzP-(ow#kPU% zx35D;xS27?ph6m!G*3rzErcdqYtv1pq(6z|20qFR;u^JFZ&4aP z$iD{etcsT-WI&#r&XpgnxO6I#`%Akh7|(p;>fY52orc#}VzE=N{_>N#+}HK_TOpm0 zv~_p4Z=FlbnFMbnUinb@L&zTs{x)&cx{59m&r2T$G&>u+s?ZV&-V#4B0!Ohcv%nfC zE(Cqx!|2C0ZMLWEJmrswkyw#19q5MdEfHb^-O@}BSZ(4hdN>ZWDKb-nLFz)nDVV|< zBvXd;Z#2WCR%D>1wW`*s0Q&*5q1)N^#vaJpSP9pg8m#ucqR!uWqc2S~s$$i=WRW}m z3a)v|?r{C9ZJ1Z^%ltJ`DTa}n(C1v)v8@qM!WR1{)!1qcxwh8H31?yy%SUzf_1(n; zZ85Q>iz_?`B$GYpJW@yPt|M$#(;t&uT0@r&V8y5{qV<{IC2S*hn=6*lNh zT0x}$7`S46I!##B$n2JX8hElY@2`l6I($*(eOaZtGbd)2iqjz-CK^P!rs!!iYNz>N z{tE^EXmY5Q{{U4$s=vL8zMX;KGOt5HiO3>ISO%BV36Su`2?N4g-gE!Xcvq8+5=Q|% z7{G=Bd)&=P6hk^+M|*b`wu_V=_J_$V5+JpTOO#jQX=Q%NY2v? zF??EeL?2&=4yI<4pjA4MEIpsxjpsz#RbHA<&^4$I!v{5Y~<+a9r{Ocqp|2&;pyZ4$Ff z!SF+l3?V|uYhx6qq%wg)k&9lPoN19?O`# z%HrRJ_l__o$r{X7U3AZuSAIELIRTL^Evq}488&~oeHorxL-?XMSL1xEXI22-yKn-@ zYoduwqtlyc1;+QZAYll7#kwKhP`=2Kp_wBiwK@~6R$02I!m09x4;Uad8=QB+a|!yo8kDW!5J za8pEROVDUv??Hn1wZn)2zX~IBM5E1(MFg9*=h6sc_6(}+ilCuth`=dRWg&O!!naCX zivd5C%DG}(AkhFs7**A|Su^{=Sw=>ghu=b3;_Jr!zhH4jO&vv zAPm@9Pqct?<)fW${{X?m8HIq8ZU6UH5QabmV;-2>OutIf>mn2-WQW)^_0mmKD-2x= zqq&9Al98UvC}tQD^vrQ^*?>_7qKP2_8qywBr813;p8}{1=a7jlDME%INGhai64W&urn`ZZz`Ijur?t#wHJtF!ltkXVC;nfKHgY5%g8`tcqo$|fVAZqrXA*y zHyK{-qygs}%>ZH_z_$4qo|9+8dWuZOh;*|(QilClw4fv$!IYHDB+W^u%)Pqv$PUT;Sl}+>TlSd2V5@FBJkuF02@4%83Md5glW{KDRrN}FqBo|I+~V{2|nh; z0_Q1r@pG3@7%QIl<|oo#T4vfZeuGRS+0=Q3@hKSpb~%d;!MrM&X0uKx6^~6ni^LSCjd~3p;w3qLU5=%g)}3 zCkQrhdJp;5*eZrQTY&^c5Iu6DU6NkQ)sW4ODsk0oN13E1f#9@2PQwA?KbIQP zWK|>0n7>4FbTnIg3}C5{!1k#sLr_MQ=FYv(s70Ngij_XTDqo1XJ*+Hm6d@bO{PMop z{8@^^tQ2%~+8nm;igW3-wkd5@1l(#P>e8EPcD^$n%E}BIspQFl!{{84-ZPF2&?_L? z7=l+IB{481-U9dt1X;G~Bce6~(S*8d8NpI*a}-#IX3_ zZpb&L;lxNGw=d{CHn<(am+tBggWBrw+A*9j611>Me>a73(wd=RJR~g`C6q8Gd+9VY zRP8X>ImM`Wf{5&E%RJ;q0o_cJsmM($_oii5ukKYl9BBcPT(l{!{rz~_>o-IBdC0FP zb7GqH^f#(bGi0*Jp@VeJjFgonMed+s83Kyo!E|0Tk5c;3tb131pd!rq8 zz-KVrC}$?KAV;@zcCtd~Q#3Q;8aD_?ve)08azN5P$U?s*%H%uSJ83+(mj?d>n<5b5 z$g@e;D5Z2^GXJiQjFZ-kDN&{%`GU(K$}ApCR6}_a-Gcy9m%BW2P|jr}&n&2R5Undh zz773E_5cVV?lRYqt~h6x%#<*)+tr$?h7wP63(bB}k~v5|(Y7E;u<96e#UsON-S79L zY)2El6AuNmtaM_OondL5bjT9qQSow|*F%;=khsr9HG)&Y5!H)1HcK zB@+|mu&bQZ1gg4^2z28uM~LPMtIKpZTHQro3*6=l40hOfY4m`ZbMUGL`}uJHrvZ{6MN*s@N+LCCN}@=1H^6?n|F6IQ z?*|izbA>{_I6V6xQqF5Nd`L%>^bkBUy9Oj&+jMR#wV-EXdN@{OQ$=7+avuAruE}~K zXE0ung2`zmhcik8ybYwesix~;HQ16fW}nqN(r0LbRTOH)S~>qIGoakF~OjWm<<>*$Ejof~#>R)zPn(T79HJn;>JuVvx-?wp!w+?Ve z#mtnN(Yz^RhHPYNGSYp^*XA&n2VCf7TX86`6~I&0%etx5vJsTYpTvRJ!$Dc@W&(C} z?}=*EV|%=}^*+vBXQlH_1{`xdjIQQvgS^93i#XRLuKnp zEk=>!RB=^|Po!gYpx?xN<8>iXTAZ8aA5%kvTF3$}fEzbA2(Kb~C5a<_kV3?Rlpd^e z;R07la{~O%3xBiD;YLFsnn~Y6m*%G2vGobtmpsXn(OP)T#B8`QmpFe(4-9fvzRMt z@zNE7C0bGE;b_k0V9mwG}%c4ikWA zk$`p9uXuo>^>%=Z0qk#boC%U~*X#FfSAtTndZQBIqC6_0xnPnHK)8&=u{{v33+itU z2p8CMIl(8pfXi$ogK@Y&b|AspY zJb3R(_zb9*H_ITbg7kW;+3m5K`nImO3f6{jTqdUOOyrvX@}Ai$n{|K0k?h$9e`A_; zAo4GFYu*^+fZ646W26ik1ubaCmK*!)^y>C8Gkq%}LCO^yu(1j|m+;Ikj)&9$U|`w# zy8;X7%p_Ccd{lI6lWe}tN$x1)N~p9ENW0`b@~i=)ZHRP0xQYr@uDL9LaD7y1(qppf z0@Ny*6yR{7$f(59a3ByVm7wnp-AI2$q@hG7JfOG&RV4vPw#c(v@M>HMzuM}P2yI(? zV1k2L>f?w)+uhL;a~Iv-*E{R+o%Xi(_P*-%i8|$zIq;1Dnl4E>5~#7bf}L zKouup3@m_c;o-~%!e+3D_qYVe4NpK;MF2dfm}M4*FBjgJ&>#lsN>Y_aRiE1ot?s_s6X|E%0RF2Q zE~)88piu`2rn18xTLY!jyVSAc&T06Vse8LONptreGP`uRUED3kDB{6ZyWJ0aY4wR_opwLN&ncdO!J#lC(SZU{ zv2oA2>@-X0emqTxr?NnnM*4ICMxABGx_46 z?h$IYlbt@LCFOnL0`|VS-MeAihp4=EX>Hpl%T6CxqqLqzp7F3$ZKwrMo-4XQG{J)I zwPVZ`706AiGRhul8v&58(Y=Jw5h)m%f_ZJMu3(z$O4)=6J!8g)bm-hDIM1tROw87? zL4fg6^-|eTta{4qgMy{(qqsvJ`Bu?4BnMafT9uXl!N2hR{!BmKL;j^>n5Y*BEH(fi zL8}T-EQZKsmLS)FXs^>{iKnatJlLW9&O(Rw&=>K!r(BydRO@I#!INxFr?ot-`K=UG1o193{D`;wN!EMHYm(qW{7yZya0{{uxH2~H)cfhKR2i>*25!QE6s2K~vd57XSojVr&xg^{#BX&9uiP!_3Vk z>TOVqkV2wc1<>q+L1D%Pyso}V9HayNHT2+05twp^Fp#vCCL#6kSccb(d%?Xi6KT$4 z`ml%#$LXY71w4fB-jnnhn*?u$*8ct*81NJVr87AmC`^qO2?62KMqSBNuIH!RhdFX! z?(P8+^o2Paqzi$zn^44nOeeE0^ZJ#FlcfJ2|I2^<%m4gWfBC;z>DglyZ;r6ZRT}7Z zD-6wf*yIdND0z?oSh@moe=LDHcPA+|Jw9`5ffN>93ZyRy;Oh-xzTQoDCF}kde~^a7 zptk^aA5cRS$RaLLSKkap-Ay>tf*Uw@(SyrH&oFT9+E6^m7$lwdul=*Pk@jN!4LJ*( zs>-#$M$_ErI*DnP^Ve5ePtZ(l@KQehuG7t4l;R|r2`bU-oDmH-aAjnJ53eqy!qLO1 zbfGKl01`MwHpU%bWfO)ViI}Je#uyS35Lg)k`pa8?`5#sb{{gar*asO2s4Ez}uV~E8 zDmyR-WVnhmu`N5CyV+8cnKe>2!$Wv23ZT^TfXBOIGnMtMEP0kSJ?=GS;HOAsbHITM z$wDfd$^t$&1wLX00f?v$^vOja=LQ5SEYHdYhBzj?u#$SFGEJE>!cv}@5@2!xYFi{P zs`)3l7_l%j`(JA?d7lbwkn%YTIFEk8=%n+~7)&DyZ0Etu8sGI_`cmTyto# zvh+$inI4+6r9u&tde~v~fBomb`5W~A{T-a?{)g*l)Y-?`>-rPtlq)iv^)&h!w$?N1 zYVAl0*8N+pe+02_TVLrHY5b@BKf(6@{?lWMsHw-bQaX=}8rYBRl58Iuksd-dvVBAh zZJjKUIprR>S~(mja_qeb3G^-!y83?lhd?f{_gkq>6!%onA!ojy0l29gmy@MZf;Zz4 z7_p3kFdDuzTA>(n9a|{owj8!@;2f7_jmvACu5o~Ljs{cMh((Ni&IlHipqUU%uyfpU zFK<_i1LowFmLwOQZ)vWr7tN(zY?Km|qoFUEL4}LO-99QLE3IXCK%y<6zKj&>iMbVt##4l44pUk8P@_OC)qXViKc{>c#})18t~e55;rOz-6x}QXbIhM zhx;9J3xSew@#sjdjGAWO88CnR-dtcOUh7sr0i)h-Vf;A=4l8@AVvXGwb2teeTeW?T z%~bu&5et8W9e9;OFK|<5#%K8F&)B<8*&kJ(0Yg8l==_)|`G*irq1sFc9AMAd(21o&%y5;+->(n<>Sp1v(^lAr9>sm#hlh_-CcV=7UR5acrilB2V8hL zF_(~>(OEzzuD)1|XR%?QQID<`0cQsT{ylb{JI`9SEA`P_j6)kR?b^Ah-#nLQYM-<^ zCd5G1*iMO43(mhVQ%`#_cD4{mhx6*Sv5xG_l&f)9?8Ra{O`p-fG1h_`h%m-%Y__wK z$cX}a`bI1J!e=SZciX_eti}NQBmr3OoLK@V zb@w&9GLV2Q**T9x-&{MX&rmpB%9Jr0r69@9L~2vjRiD>7cX`H=8(kYp0%ib4lnnnw z-9KI>X%48k=pfku3}eDKfi^Btl_jdA(evy6izZ-h0BZZq%jmb?Lf?F=>5(Y3^jepM z`Sz=|$(!o|Ewe*l#1-pmfpE>dJ| z;X(~9jxLfe0?2zu0RT=(5<9MWgClQB{-F_KZgL*^@+=3s7S#}DP#!~*L$3T6|I4B@ zIYfA396O%i1_?J+bfbR=Bm%<(l_f~BKr=%GId&2}DnRoUw8-fTW5twWW-+z|Xy1aI z6UheMUzIXu9=SB=CzoV{cm+ z`yfXhMnm!l5ibl$1wVdf(VF z~Y5A58A|NQSjLuu0q2&{LW`s~P`8!v%L9zs-)qIoTVV0_JA(f@d zQI+HxAxOaDWROhNnK@7=q+#UhwS0otzL1A8E~GQbOetMq`SkBYMrbg}Iv(e~yP+?XIN*-Yg`BayB0|rV% zvqjPkO6MtgFiM;8;c+xWs4$dE#tiW$XtJmbNYcyJgUhDk)~I!g)LAkarzA2%lgrnB zViUk6%?ycx0pqHX>l19qHO!4I3=(9Z>H?CYwC@TFdM(M&+{w!!hG~;qor29_LJZ_c zp_na*+^lnFroPF4b&e@B5`?4)Eao_Qt2&uXkb=guD#=noZf+)`46mTKO|r`P18RJH ziu2IRp&;!SIMvOJqFmU^DJ(f*im`?ebsU`pgX%pBH%bf+{5xXj}>oASsC@&w=J^1yjBee2|lksjI-Yj*;m*s-h-Rt9I_ z(TvPcwR5)^(MlXokE(i{%BNsL$-FMqSiYL7s_CRmDyg)d%Z0)G$Yyt-w92cD0Q6gW zn8^cM4LygJ=or@GoZ_`SaF=O}V9?_*bWG+IkfSoM4W(uV$IA*H4P^$_>|r-ZzzCU= zK?+IjWUSR-hPLYj)BsiP$29G}6g zoUz3?g*@W{;mL!dbC!@5_Ep7Ebaqjy%)T*^C0sQWdLuPGM4=6kjU+%&8$_E4zU(6v zSB`-KE~OB}ilb?PuDN(cVZ6X0M?f!xDh|pQ=CKU)!hp4TAu>p$vcx!A9B`LJPd-5` z$A^c?AR>)l!J`C$5JM)E;Xs0jp+))9576}?)`t-Dusb!1%E^aoa@`Lkt;N7zdLB z3WKE1g(4x~>SXRsN8-@7Kx7SA7nuZP^=vUv4B&(Bj%TmCNM7-K>GxQVn*=GO_1Bp3 znO|>`3cT$60+j+i`so#PcQyp^EkVp3J@*!P4$aiMJIv8hGQ+xq5Xf?jOabXB7YrCQ z7kvY$Xc7UYb6gT_xFUr~SB`|IN))opn;0H=z1bHuB4AXob7h^DHRl^{|qL)prPyr$-W6OZSfL6gEU#o!{aKq7NDXNvaUYAO! z3EX#yB!Djz;P#D~WwV^KFoSBbrW^lp#Uux1u*tGgGJ)Tj`i}w9hzmBY&rmXH=6%(UgEl z&j-3eD(IPDZJ!69;oM@qX2io@RBP?~skNsk*g8OJhxVlt)^2g#+BwKRlntl%lDlL! z?cK9%pB_}_JesLafB9PPGsK3}K9E1<_KP6nYib{3xsAR@1k@r8rLyl^s84>Nr`gp@3?*oP63N`Hz4uAsST>hSVH*HI2z$~bbHh^Yj&JMF!)u( zDzIj&*2$`*;w`}(*f<+&9KK%XVhHgR@{G+v|HNJQNF{w~JWal)`#q!8uky|XVeZ*J z&&}II?h503bK|QM_Ap6-LIJ4v5ps|#GcrL~bxv|gsOlj&SBx1RPq?HJL39OuKoS4# znIVtPxs*2mi+~^i9tK>(jEiC;BH_-AxMdemnAN!{D$YrR36S_i*Wa3SU(pCx*}!AE5y*RKRsQGg3M=^h!2%bYg0coW^84e24jn_D@NnUcBHVhrmN zz~qu#B;QVHr8*5{g)QI2hAZEcaVr2J=QQotmZ|GQ2)B zH$BHOL+IMgCTY5XC-!?wE+Qy}JOrdAaI``a&>ZwrftH`o5uVW*K1AhVF$_;|S(Mm%S44dG^rgk-UK>4P;8JvsGw7@ znyOiYLQ)YBg!O`DI!ex<4c!80Z?1M{1*%WYcC%ftv~V4=Y_?5Ih2850DBnm-AhslOIz(!r(sO~EGRys8k|sY!#wM$rmS`Vj?JXTrs@b31uQ_t4srdB)C5Kt!$A9+3Dm$kzacXxTwitv;ZaTX~=@$5$Rg zW~bWECdJEW`X*W!J(E5|Z5WrT|O|u2JX1QQucLcij`1*nz`{Jv$ zrYGYsSMnlGKPIaK82u!km7gEBbMZ5hS27K{Dvnc4pXQ|5HXP18B&Mc96_k$ z@XgSm5c0XKjX_T=2F?N_fJ9tH+VI!&rjEnXDO-VxrXyjUw4uB6J5BTczY8 zz}+P|+0}!pf}BH~mYDfX{tWtzzrProd*|CAigD+n#Eou1>6&$~-k~E9YhJs5I|7** zTL@GcBEVTd|6bnq=TRMa-J6s$w&|hXBTdqvl#o}Rg$mPc*I<${J!rwj<^SxDH-mmi zGK4J0nSPEYxMiC_bo3^I-pFW?9_BeTJ;YUh?|W5Y(kqc_f}B_Y-xUl; zLmqDf+8R=y#>rvj5FN|?A#J4^Yn830QgY0c4Xr>~H)N}sX)AiY0_^{|NG<6(328}? zY&eT~hDRtc6o8CUenB1f%}$MnqJC1wfq#PZ7Dx*O(E>&w4oQXW=g9c0avs1oV3AE9 z2+RYP3X(>~b9sS+l8O(5->P2d9>OdKCF3MRgN6q|!js_zfEq^zU^oM`*@PlwBg-%} z70Z$^BcpgSVhVCUAI}E#&oN{G7u>)7`P(Z??&wS&!uiu9Z$kX&0 zx%bTGmg6(l-GJ^aLE5ou*KpuptT?UkGENn8m97KNsbwQqz)=Ytf`0&DgjUY9OHd0m zotOrPnFXx(21!N(q~NMVz6A~xqJWN8!>LNW1nGsXI{j{Ezc$FuwHsEoQ0u6*4rDN$ z2Gp$7Rx7tj01p#&avS2{mS6m=OWK&=1)tIeLund6X|E1IY7ec@}EmULN$gv+qRNK8UUTH{z)fX zS>U-^e9nLrq5w^4t%lAbcgWcTB%DH?vCgv~e`d0S%1EGu0HPnIB?(Z&EGJ#!CBIiK zS!a?v#C{%o;Omsm@i0W~o6VBTXgWi-S&#tstIzUQ}uX1BS9B?QQ!UA-Wwn@+USLX z<&#ygoTl`KS?BVo+%n6+Qv*;xl;)CJvRT2GKOO@tl7qh7cv`xnA5o!Q+&E(cwL4ed z^Q|lpLWqlrlF*k?Kl6n|EtX}bRk*QfAj4_kG4nd|MQn>Pg3>xB%8Ute-`|SQZgQCrat#4=y!g7 z^QBc3r=UlfrYiQQ{;mp`;LTs2zx#>)!Lf}`eW&^x-v$QDSyYY2c{3D2x-3TE3#rs( zA{Nkg1EM1igP+6mC`$rbSAn0xVtoAn)|AjJ`qQ78=p7tY6=24U^DscoOrV*MT`_=x zMg)2~Md4DX?=#ST*jWQ9I%)%LgadGMB<_K(g~IaoajCmoSVHMXuuEFW;UCuoEJ>x{ zey)+}j;vI<{3)5K&;PFWn{REtwDxD8{_@XS-~Yr{KT-b0iGTMe&a01n$(gz`O4TyF z)xY>zc;ZvlpBwnp_kR4bi$DL#!GHCGAAM}_Uw!AtANzFX%NIZQ*7{52OY{HnmEli6 z{Eb_8UmAGnC;$6T4gSmzU@=~L_YeN{>pwI1XFoMs{khlh!Jmo#n^%ANrw2d&$M!D{ z{o?m-f9&$&C#>&&=E5uJw?6&NpT2+kq3zyQ1vzC_iIOlFR|p3M6WCo=Ht;}}Hi6`# zLb@#(PX|v1YW6{?WFW}hz!=!c@s{W<49~)UZ@*c?w-B0kjh<38_1m8u`1lVtK2iSE z-=SX``>nr5qWkLwjBMfuc1%<hUiu08xm#a+3;q19C%G6Kd{j`P zp;t{I&Bo&7B~nsiO}vYyAU+z9*!x``#!wP*2Z-kuBVF?0)^y-)z9QmDz+!BZhv5h` zO$JWMOnv?>^cVk=@v`>wKe0bQ`uQKATKzX(`s|uxZ8u(e7h#xc%Ymxi{-gyX8dtxL ze)O4zm(e@_Gx~!+{?RMw_AA+!(Ofzuo!Fq@U!ThU#tGS@YS!|FTMNYPZz;X{?f!3zk`0^))Vy^ zaXwebsW~NA(Blz9$`lHPCLS8o0w~KB;sTm-IIejMhGy9P8Zv8}POzo%r9}y4u|Qih zxRu~7Y^F-5Vx}zg`Cm)?($}jmt$p#=Cx3eFPhSarGXD#I_d8#Qo9N?Lu70xLXV|~+ zb@Aih`SH&PpZ~+9PoO`41^wP1F8q}AOMm!}_)ZV7<99xz|NPi@zrFA?mEXAa&dY@7w4%@M8S^OTy>y{{Q2p)qnig=$&6({AuNLzm9(HPnJGm{nqbZe`)RW z-$9@HKc9@xc+A#OdlL>jh))<3F6=WVjbr)ePbr#WzVel!+Qu8T&5>7OPUPCFv-Zfl z8!%yow1L<5`=#o)z63mci3@IPeF)w4qUnj-pB%XeUsz~qU?7j!3jwP>{OT+k$s^{% zO*8`(%Mgz>U0c)R=-S)^*e`M6GJ=CQiM0nVe2U2d4~4{w#*nq~`oKK8b_Fk~TQ9pT8m-p%6GtD!e>h=+?O`(rS3Ee&yCG>L&>V7`^8OLl7p(tf+wcu|* zSh}enVn=}HrPmm#re^^fgrbZLx9Xc) zptd?{m*u56U@?cuQ-~`lRKxOM10XqP(R!s<_cc z0Ym}xs%)OzOqnoW@665ufe(-XHGyBFE}ziD?6PdY9cZYz8rEoPn&_eV9v;@!^p={- zVXlZnMo)VIeJ8iW%dwAK@V(YyJcA$FXVmF6pg{;lgTW}&Geluj=Rsmh<+jqC;24j) zv!WF?+|r}$Ayp1#q2JNrf`T@?#0SeH3Ilg7N=v~qjUSPje3qb8D9M9*2DR#Fk}~4_%&i50dUO zGbCTsT!AeV8VN{5EaZ-aTpUSKQ$szLjlpsB7ZXSawYsI74=9xV!oBammYA@qgtuUA zknk>nYFs3O!UE5@W>MC28Ep)bLKw<&Dnmv|ZyrhUA%gG#G2jr9VuuA5*aK42E_opD zCj^dCsMGTqK=)XOr>(=TG*#6!-vdhzG%R?OzR?{|E||dm1$!+VEFY^~f(|SjfXa<> z37Mr%13%q`tzJXDY}V?vvZWCfhdHN{Z#6M-PCRzzgZ{boK^_^OhpJ>K7+D<8(!j>CNV_DO zdXEmqqP|ElJ1B*?^g!zL^9*1rFwN6UyIZ^51oZ=~kS*)P(Nxh>BDpX&Q$XbR6-mvK z@KCYKA~_nGzdb*-5)wVGluzYcCB#y>kVoc7nWGEWywu{GJ1iSpV5V5%x=YUaJwPK8 z`R+KUdYG{U=fAZHi*a`%&G|=W7lv#?sG#d4W|r{+EAYMVLz zjCcj(Nq~@|fuP);&3Bi!>X80tYgp8wC)Ln3Y#5^ECzt_}Y7#D|c z&9<%8njj<5#3X-ZRIOpARvVsQcu0XZNqy*_tzmwb9?J%}x13eYWg3{Fw^e)ZA$%YA zJM&$Q3LxtPc33b3uovn$WU)Df{fNU32uvPz%)zBMZ5w^4pgg*!H9LRpHXxA8B^{;++7K+t^<(4 ztNU-_HK3OlhAd|nk%(zzK@6yVT;dfYO%S4{KoBc`!f5IPJ*HawsZl;;E2r4cpfLRa zt8zjDqNxQ%@^Q;XOp8cCC1OPILt-H@D%qUIh31V9qAH(P@D9x2*B`hh)bROD- zp%ia8PI{^$(p=EP$#IefPf-T~H41*p@k->xNndOC-yLnt9^rSpTQS44JYwpAU)B4d2@jHc%15VLo3f!>pr%?o^&I6;D$IlZ z40~TTRF{r!e5aGghq6bRsm%-X>%7g16QC|ps2A#)Ob+k`5|Dfi#73k>GYUo`9YNVh z(^re9YOK0N;EWERfTs7ke~qiHh@;uUb7PGTPPFWN@X)Xge{ z(PyYOWuf<}u56t!nrgZdiYBJ<3xvbocqZ=t+jWvNNVG8!98hV44g(4&5y_4tU!~()y+g*b0%ru+K#cNu#Z+0&UHWIC^Kbq zEtXi0Mw1EG?1opPs=Q?K8VRCjQ#^F+vtFQv^m}#2of9-7P=tU@jHd2pf~`p+A2x$k z-jGBhkPSrD>+S+DN`eZJ?lFUAP|97W60@M(yh!jx*aLhUCo_Z;mGW^AAzHJg_}oHD zXp)|M(Bw?#JbZREp7VPPLX}6F$D@o8`M4{YC5VFGdY<|j$3;_J-&^m?1R1y03$n~^ z4g+8>yPMGL20eS8w(0Eq@L<1whxf3tmxb=A)Agy;b@u-Io^zf~dyn?8<-9HUw{1NM zpJ6{qTXc-mcwe2qPOkBM_A@%=zU#9iRck|13(Vu&t-hb)?nK#qq@Q8!vSI6hN$i1= zx4Zp}eOq5}d4Le^ah<+a-zr*><^OQ1}FS}xwqZNC4G<~@WJgQhn1eJ~U^}l{Fm_NFo zvEVI0KO@rU>t|@mPG-3(*Ro0Y4HDE=HD;E~vZA*_W7UjxA~R*{T4eXJEB38$(^u*i z0eW9A^-$1i3tz87o$H++;w8%#63HGXWA%iJC-AC=C>Ydn!J*oF7YV|h;7_*)zQILl zIUM{UNWKIi>jpqD@Ro8(38X3_n$Wz#Rh+typvKS#?x2wSFNsNNp`b69YiW*`)YJJ^|Oi=u0gCGCb|c zjkr~4S7rR;Sx(kN@T0g&1}yulH%Gk7bp})#zfg*M>r8NV(VbU{F!91b!O$kIKa1MHURHerlZhR5-AW;m)J3bSUFkJM`Z(vpv!j| zEexq*a&t%-9G*Z#g^>dwAXUkdDoK?>WNa$-?|)Er0q-KsMsN=+M`kI%d$87|(g6@8 zk8@Pj7bFLRB2Q*WGVg;Vj1**slLA1+WTmv&W{db%03=Lh5(<>ALp*#@57v6(1s8Q+^Y+Wfqp|Yd5 zz(MGZc5U0Snoz&Q(u%ca&^olAp*NuE2K@|&AXqoM-7iz$Za}L9WJj=FfrD||4a%b} z=*g8%nDmhuDNBvSa!3=sp`?HQA6!7VjTeK1#V|FmNz)mUS&jz>0)|YyYtxV(BoULL ztH1%CvTP z6EY=D$)^=;rj(4XmZ0zfJDA`vpjj!BrlRJvo_FiAF>5OL2xedn%v5R7lh2rnsfGq4 zdIpKS$?+99$INIg4mz}23Vv8kCCH@azX;yYLTNHmr1>hJqj~5aplqq5n3)2-e2P7A zT(4=>nlMmlG8Is40Ve=m^YHt7|I`n~gBt2w;7*gtEPfQ}@_|0l7!3(RK} znjj@TJ?r%8ttA&WVS2?jaOcp`fP+yJQ@5HmEY2XNTBRq9n>sRDE|UDdX#UP)q_e=M zJe|igVoQ7wL5!q+?0LPrQSaF z>f8G*z^-u+AQQlrK%_4j zUlH%w7?@y$$QqjxgOSco$OrKvch9Lai=MZ*4Hy z5(gtcfO-H|3SX!}UW6`|bu!%4L+3YcIajjNYa;A*HhR|8X=+&e4r=XPuGXWO>2~jY zonFw}*-c=a6uIgr0012BNkl1lP1)%bREz6!xon!*q?xXm z1=FaSIgp>u8^aN^+%Br!)Gm{1#pmi#3p%jfO}6R|%YbPL86Q+kGg_jCGXM(xFv~%#ku?_0k8eO+iCs+`8t@XF-)E>Es}V zUJe38<$OyV96Rw`%1O-B0Xd388jy#XLL2{So!D1yKU#_Jt6;QFR+}o4W*p*2uR5%P zj(muWOuJlhB9aTDv1B*@kVHSET? zxy0D?Ei?r>O$Bo`ke&ER6JGEpCVEW&Ot_T4&v+P zAOs;~1E=f2kCUUYo&}2gC^J>08VRcGht@=uW0$AM)btfK7bQ}0xW3S>AWPR*n?wO_ z?}Ldr4zgldt^H!iS6m4n9-pno zN+zAE*;m&$IekODuNY_9-;Qg8yOeJe=Gqr^1)4I2GGo$CranO}#d(s&vWbXrC|wP- zM5&h_*U#T&vUZcv3d{(`rW?klQ0522YgspRQ1u8QqYXIw9fGL3Nd5KO9C zxDal6z~gy$7!^oEL)h_BqnvxuGzj6D(%Z*FT9TNdu-n7LgK~t|ddB**VYi3$Ws6CL zgMPI!W75)GbsCxE9&r-Uvw1_3e(O#5tkICXERDQX3Uv3aU#m~cIzsU*+n2KF=?K$L z{L2mfiDVt}D;A|DHB2U#%n9MLQiyfnI@2i0J|ps~nK0hn{|$Q@gJ$Z9d5Ek&7E8Y| zkUlEatg>-JJHFB_L3UN|e7#w@ipk-rlt7lQ`;46|1yw-H#S(55<&e=k<>i_RC*B}T zD;mPnc}y5qF+gHTgJTwUO%7rDfpr&`iXqPE*F6bO{Lm}b0niP7<#MQTM2^j}n@bm3 z@dH$Ui(-EIQ@nglUZno&h3Bu+JUMIryB7<;3fct%is+uZ_vCCvNxvH+6&k3Fp*r0f z61_x8v2s&eq{SoZ`B@& z<}8(F@o|pxIT$EarANp@|d0SZ*;NOfex>WC?AH*V+&F=c{jAU zX+s@_e92zs7VVap)g}XtMDaFgF4d`VM-0ELg<+Y5;Uh<77e5bEvQoMWI&bU4EAWNQ zfu}sSpMy#Hbuo0307!0Ii+GaR6j`2M#6(i$p_wErQ^rP>pWE;>S5*ca;KN~rq#F`~ z(hV8$uk6dJzGUitFB6t-j%y6QXw~s6cf{#Lt_L)b+0)}cyWg@)Js&XUglTUhHR4K=lCbZScl}J_1{w3O^lS@IF$|6c~jWklw z+Hl-Lg)Yw2C@ccY@L|L)5_SU`axGb3zBE1pQOLl+B_3%+avM0p1Brp`FHhyIyL&R2 zg?-j?W7;x#$m1C8N5w@c(>J>4J&-Xy1gK$c(2vh-3Y$xX!!V}Rb}zeLPCTSMY@jLM zjUG80P>Cg$EM1RZ0CPsiqt^Eg(=nk#WY`{7y!a%StjGJwzlrpTm^3-c=EJ_E~Ynl-Qhit3%1i8p9j*j(1r9Q^E#lxFSn9iuG9 zn_bHH0;5gvh!hxV&ulOJHqgE@njGl>k*GDR-wpf3fkG^fR&sGg=u-M!4{Aa9Rrp4t z&Zl4&&_gS9Le~!v_;lBFnE#!$zo<4LzJSjk+~_$&BTVm^uaho z+c|viYb=O|F>n%#l(!SlaN8PC*(NE4m0Vw8yVN!jor{t)7qSF+uCRR{2qND4dd&R# zM17=0Zls5UB-;02kqr*wW&G8N5%g-3Pb-25vrzY*E3Q0ew67&tDJMFS1oXiq$X&qv z?f3jogvZ?Y2`;wpuPtyBpdyDF>?@xHDNpUVv7!aZ?&r{{==cZ?f8L*4d!gb8VMc31 z2C*48K3XGv1n*$c!e#0Xil#*q7tGbDuyBl~-qfl!HY}i(?#5cbj zWx1Z5Gx^8>l#Yt$e=>U;NQx~+1+NZUJqXkb`;JAg)OAjnF4`DFAOfn8NG6n72J9T% zh~(~7>^qD-j)|l_v?-iJpN}M}2-X^hOfOt=Er+_h~EAsY!&8flMttA{mjD z@UKg;<6;f|+WhZo=$>N4nUy8v`%k}U=c((wiuG6r==(M|Osp;1`;LRo2t69_LGQjY z0R8Xd-C?&k2|*xQFWjbQThW{N(@$FeXf#hx6LU1*aIu&ESU_;$V(d)6p=#GeaRtJ~ z*arv#Ln3jfl@(lsX((>T&D1a`xnnpDvULq9> zoE=zFn(31xcm0zmFZmX9rV=nEi9vX&dMd-U$j7A0#t9CQsD3!wpj~}K_2?|Pn{c5VQt;hCD3$gz59(3RShYhBPfs=t; z4_k+7Mqc^u;^MoGzIgX0xZ_bNB|q<4;30apTNv5n^nrAo%cG9;OQx`~7yFC29HBUd z6G}?Dpw!CR+=rW!@^2GYq|zv-AMhF!UIxq9KmmBMXi9Sa^r0%Bk6=**LfQzc%R; z(w8&#mn#M4v~h%{GU|>s-MRrdrr>#nXYNE#5hFyr$~nHpi#xZWLSkLQHS8=hsXFC0RWFFttF5 zD^}!;%xITu57Y|Q!_J5J;^L=tXtZcg45yZuqD$d6n#JmRr3Bsv4VW%cq&LdZuDJ`y zDYhOzM-|Ffq_Rrj2H0D3B6rB2>-X`1N^KRivitc+JZ?Jp`|T1?514bheW=qvQv7jm zzRZYll*#6Un+ zLx-;?`6ad{ukp94FOYIZs%<6I!$)e`D0Q4~$0m4^bmKO$Ly5d05~P&d;eHpG#A3oF zuL;y+nF{c+4LlQ6UN6-FJJ2Yx^M#$pe5DZ)pdOk6wmNl%OIrjvB9FN-tyfK7 z#~rq@%5FHUF9hhI+SpMp#>Ed#*OKM3xQuwbsm)F6Mry$D*&-u$)745mv!Y}Qz=$P? zwXDcP<6QD z;pQBl$2S`x+&?NN?aVbaiChPokLV6B$zVxW93#R}D#k&{s`G)2Jd4B0hbjaPnLU0y zmduU@uyXykl!tvVe#MTT)dR~Gi} z!XmH7+DCio)asuq22t^3K`pArc8-SUxcC)rwVa#ZIzyTsL1m?h8(?RoH&Rpg4R>*m zJ-h1s<>7U{9+jaUUzp=|=aH}QwBs*ag3{GqlCpGcVF+xe0iI ztD45Bm5{&MKKYOw_Yqz+Z0WN@0u@*AHfde?cV0DLFK*$&ekH&d${BkvWb0Nl>c)*= zj~*O_;Btk!rjPsZl-^rAo&|V_G0=%bNF|SW2rM3$rKcvbS*i5r^!I-qjISc!N{@R5s5S>{4q<>z{i@?=~|Yz~pYt zxNC<8=~Ns~>Y6`=inM?x;wM3Srp6pP#60>^)DjtlABxCh_TEuqga9&@RP=&w^N=k4 z0HgHK_~{O5SD)xQYO$@QD!ivWkA-pl!@Gv2D%uYgmlBp14n|01JG10h6-{?WtPTu+ zTnp8ONTUU2%b?BJtr_%xDGe$X2h8d5Eiyhys@6qmFt6EH%dX#eiW5IRaB7dT=Bu75=zn;x+L>E4LdoAzRM#b>oLP)Veh~?B*im>-^yPpDuU^FQ;KQ zFEw8xxAMm6r>~xA_uJF&%sSkr3?BNjHPTZOE=yJsx?w90gq!2DKlbp%KMjYBYhJuO z6}Ve?h-eIhk|8OXSdoM>ai7;9=)7#;ztL-6hs^pv@5;CeM&gCv;sqP<^** z9f#M7T^8`kg_y*?@Edk-&4^~v+ZQXvtdX6DtRY?b7Ay3x3`^U9f#t#~GKUx)utnb{ zvyju>n539g+FA0MWxkEi+)oP=t0g!nHYt~V{b{q?XZ-s|Q8mXJaJ`TU;kJMPcaHQ5 z@cmjK!tLF)0^r=Mx>$yQxe-=BCDGYe77)siY;(3E`>CVCbYch@e(EZu36TwCw3Orn zG(PFcx`Zf+G@V-xCKPAQ*3Q2uPai^wki=$E#Kh4K-vP&lEHcmbP8^nmhqwjH9u?w| z;pu_~*Gy<~0v^(hn4 z*Y^b_7oL3&YegPEpvWe>TXXNGdc|v4(Bq%mq zXV<@Kx$#pq_cEz2S(X}STBIt8dk0AD%`Ign#sZDkWFXMuJFs;=|F+D8v>o@^i-F2v zghjB^mLnR~zkw5GHf6RIkW6tDoAlfm`Tz=oc=@1q7qo~9)E<4E){|8u6}~aOj7TE; z5{7)*6id?gi&5m=jbe3Tv}t};M+-?$7G1Msbr8{~)>s0V@v%FNGE1*+>JH$>St#KY z%G!Yuh)iR9s-m|B8pD3Q`4{`E?uYQMnntE68U)rMbHK{1VKrW&v(y))eMySaB8H}=r*0g8s+{M~>aoA$6n;`@ zrGL}_G2A0THv}24r%6*>DW>iiD>m00mWRJR+N4w7`Sm$dbsS##NH*SmYHj8dN5tCG zoW5EOY$|CMGuVa6B&<^DdnW1jZeSziTR=%mevDHP@(4!(@h8N zW9lOeo~85+<|A0I>bHfD_uT|%R*lq;(EB{DKSKj@ZCA(x4x_KAq46BMc|B81 z6C!2VB*J>HQQ?to7@A0ge|_3z1&(*5_2?WL4U zcZD_HKT);qRojgAvz_5(AC<4*l_PgNr0!vQyepC%BkW*WQ`Oys@#glWqEpp%6easu z+PK((RMJHCQ7YDOCwC-a!9kDj#PKpUyR~qNtwqWCDq74w8+=9N{F4(*KoyP?Y0wh@z?n$W0X{x@5XD0s)9XSB(*ypzwIN=tk5mLA2`KN z!9ni3=pHl<@0bginkc+@mif_hoWARG=qGSczBQY3l2Bl!(NDvy;O{qf>=gv5JH5Cr zj)<1%=6H$b=sN!1E9MnXq+vY$rV6BmlUCYNJiu9jkBjJ~p^KlQ8 z1@hBG-ZE%*{#?VnU zZR}UaXvQ z-X82d*T`im_<@s6|Ge9$)grahMk^?2;XOXkj!f-sWZrIpBYP?V@{vtdfJQI_WBzG2 zOUQtNs-AG+N8UP0vNEyIgE+q|3IDssADg#F8 zc?Hy?5#)ni6r|v?1l?Y5TD&$G$ok~4>ND%nkg!gc1KNid-@io^Sml;Vq6HSa)A0e6 zD54EAkta(Pg$~rm+9^GnGd``AHxOM3BMb{aRkHCWk=YM-@blDTeN))&4#)!4bV%&p zeWEQmit!9H2I{vSbG7|+V*q>5ApC;*85365FNKwm6o#?dsQ}Ez@}KH4_RhUR;?K8q zh3vgl#t?WtJ5S}cC&@JiNf7G1VWwRYuO`UG6`gSNg>|!*N?%942cV!6=(1hj*t{|M+#1^Faj_3=GWUI#?-RL;8+0(z6zKMr<%SXC1YjX-=?xHkN1fns6QH zH1>`VS|XjxmaDhalEs7^w*;)y9yC9_AAk1i$Lr#anUztU)s}aUFWK8_EKmsuiP2iu%C`8sGo_A!R}Z3 zs4UH$d_|CpKCrz+@h@4@QW**rs_xSFj(4y%gu4|)H8r|8-_~&T-pjbuv#93$t0#-7 zhIXR|Y@l!Fu!P~^hl;f%`EjDB$r|ub`B>vgdrG5}txwl}URgm_{nZ~q0doD{Px_0> z!j$=RLNt7iN@kjqq?tmAa}O{i>Ky0&soz|@aNgCOCatNC+oE8e@zi*a7tW?5dh_-^ z=3*e$QgCGYuzZJ-D@elI7->LgW%Paxv3 zTk+7zCIgjab&|Sz&TI59D7wBo_)07+vB8LYOEM0AHexvsn%HkYvFw^3b?|5qlVMi$ zR<1;$mf`Sezl=Ql^zu8?*BhICg8a~jl>6i%p2;;_hS ztI@#Gv6RkDE4CR^^JY@ybDhi9aFz5f&jq!xnMfmXcgD0ywog5>)feZ~gO+LAZ`7R+ z!6(Veglj`F?+r=kA~~d=DzO~I9j7bC9_cN7*XW;Y?@H_I%qj`kSweH$Y&I+B?soRbTvHVbdlCsAkfyw z**n7!LIO@un7bteF7WSA=zc>9`3DpixU(%Bia`8dNHo78b^a5Qvx~dSpQQdDjBfq` z2V!Lfb%Z`t)A`@m?a^ z007Vm0Komt(Mk_E2sdv>DB{nU@z=-qmtDiH-4x~n-w-qa0RJ~TTM_`^zoHG?+UD<; z*RNU=XqfX@b|uUFZ}RIs2k*; zhz@@JR#}S$0K5_TJJFzrI|!(on?20-w<`YCw-0doM=X#4z@O*u4fRSI0MNB_cd~>* w>>UvTZhu|!yTEM!&iY@Y$Da}TzYEIx{}P`yRWUICR3mvfpbwRG-uP4c5A^QZ4*&oF diff --git a/documents/cz_format_spec.typ b/documents/cz_format_spec.typ index b3601e3..f1a498b 100644 --- a/documents/cz_format_spec.typ +++ b/documents/cz_format_spec.typ @@ -1,39 +1,65 @@ +#let ver = version(0, 4, 0) #set document( - title: "The CZ# Image Formats", + title: "The CZx Image Formats - " + str(ver), author: "G2", - date: auto, ) -#set text(font: "Roboto", lang: "en", size: 9.3pt) -#show link: underline -#show link: set text(blue) +#set text( + font: "Roboto", + lang: "en", + size: 9pt, +) #set page( numbering: "1", - margin: 0.5in, - paper: "ansi-a", + margin: 1.5cm, + paper: "a4", ) +#set par(leading: 0.7em) +#set block(spacing: 1.7em) -#text(size: 2.2em, weight: "bold")[The CZx Image Formats] -#v(1em, weak: true) -#text(size: 1.1em)[Specification #strong[Version 0.3] — Sept. , 2024] +// Styling +#show link: underline +#show link: set text(blue) + +#text(size: 22pt, weight: "bold", font: "Roboto Slab")[The CZx Image Formats] +#v(1.5em, weak: true) +#text(size: 1.1em)[Specification #strong[Version #ver] — Sept. 11, 2024] #line(length: 100%, stroke: 1.5pt + gray) The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be -interpreted as described in IETF #link("https://datatracker.ietf.org/doc/html/rfc2119")[RFC2119]. +interpreted as described in IETF +#link("https://datatracker.ietf.org/doc/html/rfc2119")[RFC2119]. The CZx family of image formats (CZ0, CZ1, CZ2, CZ3, CZ4, and CZ5) are used in -the LUCA System visual novel engine developed by Prototype Ltd. These image -formats can be used for storing lossless compressed and uncompressed pixel data -over a wide range of bit depths and with accompanying metadata useful for a -visual novel. All bytes in CZx files MUST be stored in little-endian format. +the LUCA System visual novel engine developed by +#link("https://www.prot.co.jp/")[Prototype Ltd]\. These image formats can be +used for storing lossless compressed and uncompressed pixel data over a wide +range of bit depths and with accompanying metadata useful for a visual novel. +All bytes in CZx files MUST be stored in little-endian format. + +#show heading: set text(1.2em) +#show heading.where(level: 1): head => [ + #set text(18pt, font: "Roboto Slab", weight: "bold") + #head + #v(0.3em) +] +#show heading.where(level: 2): set text(weight: 600) +#show raw: it => [ + #box(stroke: 1pt, width: 100%, inset: 5pt, radius: 3pt)[ + #it + ] +] = Header -#columns(2)[ -== Block 1 — Basic Header -All CZx files MUST begin with this header block. The header contains information about basic parameters of the image, such as the bitmap dimensions. The common part of the header is as follows: -#box(stroke: 1pt, width: 100%, inset: 5pt, radius: 3pt)[ +#columns(2)[ + +== Block 1 — Basic Header +All CZx files MUST begin with this header block. The header contains information +about basic parameters of the image, such as the bitmap dimensions. The common +part of the header is as follows: + ```rust CommonHeader { magic: [char; 4], // magic bytes, ex. “CZ0\0” @@ -45,11 +71,12 @@ CommonHeader { unknown: u8, // unknown purpose, often 3 } ``` -] -This common header MAY be followed by an extended header, which contains metadata such as cropping parameters and positioning on the screen. This part of the header exists if the header_length value is greater than 15 bytes, with the exception of the CZ2 format. An example of the extended header is as follows: +This common header MAY be followed by an extended header, which contains +metadata such as cropping parameters and positioning on the screen. This part of +the header exists if the header_length value is greater than 15 bytes, with the +exception of the CZ2 format. An example of the extended header is as follows: -#box(stroke: 1pt, width: 100%, inset: 5pt, radius: 3pt)[ ```rust ExtendedHeader { unknown: [u8; 5], // Set to 0 @@ -61,18 +88,32 @@ ExtendedHeader { bounds_height: u16, // height of crop bounds } ``` -] -The extended header MAY be followed by image offset information, used for positioning the image. This information only exists if the header_length value is greater than 28 bytes. An example of the offset header is as follows: +The extended header MAY be followed by image offset information, used for +positioning the image. This information only exists if the header_length value +is greater than 28 bytes. An example of the offset header is as follows: +```rust +OffsetHeader { + offset_width: u16, + offset_height: u16, + + unknown: [u8; 4], +} +``` == Block 2 — Indexed Color Information -If the depth of the image is 8 bits per pixel, the header MUST be followed by a palette block containing the information required to properly decode an image which is encoded in indexed color. -The palette is an ordered list of colors. The color in the first position MUST correspond to an index value of 0 in the image, the second corresponding to a value of 1, and so on. These colors are stored in 8 bit RGBA format. +If the depth of the image is 8 bits per pixel, the header MUST be followed by a +palette block containing the information required to properly decode an image +which is encoded in indexed color. -The length of the palette corresponds to the bit depth of the image. Therefore, the color list MUST be 256 colors long. +The palette is an ordered list of colors. The color in the first position MUST +correspond to an index value of 0 in the image, the second corresponding to a +value of 1, and so on. These colors are stored in 8 bit RGBA format. + +The length of the palette corresponds to the bit depth of the image. Therefore, +the color list MUST be 256 colors long. -#box(stroke: 1pt, width: 100%, inset: 5pt, radius: 3pt)[ ```rust Color { red: u8, @@ -85,6 +126,113 @@ ColorPalette { colors: [Color; 256] } ``` + +== Block 3 — Compression Information +All CZx formats except for CZ0 MUST have a block immediately following the color +information which contains information about the size of chunks in the following +compressed image data. The compression block starts with the number of +compressed blocks, followed by a list of the sizes of the compressed data and +original data. + +```rust +ChunkInfo { + compressed_size: u32, // compressed size, bytes + original_size: u32, // original size, bytes +} + +CompressionInfo { + chunk_number: u32, // the number of chunks + chunks: ChunkInfo, +} +``` ] +#pagebreak() + += File Types + +#columns(2)[ + +== CZ0 +CZ0 files are uncompressed, storing raw RGBA pixel data in a linear bitmap. + +This format is most often used to store character sprites, UI elements, and +various other game assets. Use of CZ0 has decreased in more recent LUCA System +games. + +The encoding used in these files is a simple bitmap of RGBA pixels. Decoding CZ0 +is as simple as reading the header to determine the width and height of the +image in pixels, and then reading the image data as 4 byte RGBA chunks, which +correspond directly to pixels. + +== CZ1 +CZ1 files are compressed, storing raw RGBA pixel data using LZW compression. + +This format is used to store text bitmaps in older LUCA System games, along with +UI elements and other small image assets in more recent games. It is most often +encountered with 8 bit indexed color, but 32 bit RGBA is also relatively common. + +== CZ2 +CZ2 files are compressed, storing raw RGBA pixel data using LZW compression. +This method of compression is different from CZ1. + +This format is primarily used for storing text bitmaps in newer LUCA System +games. Its use outside of text bitmaps is limited. + +#colbreak() + +== CZ3 +CZ3 files are compressed, storing modified RGBA pixel data using LZW +compression. This compression scheme is the same as CZ1. + +This format is primarily used for storing backgrounds, but is also used for +sprites, character graphics, and general files. It appears to be the most +general form of more highly compressed CZx files. The compression ratios +achieved by CZ3 are similar to or slightly worse than a +PNG file with a compression level of 5. + +== CZ4 +CZ4 files are compressed, storing modified RGBA pixel data using LZW +compression. This compression scheme is the same as CZ1. + +This format only appears in newer LUCA System games, and is primarily used for +storing sprites, character graphics, and backgrounds. It seems to have replaced +the use of CZ3 files and CZ0 files in many places in the engine, but not +entirely. The compression ratios achieved by CZ4 are similar to or slightly +better than a PNG file with a compression level of 9. + +== CZ5 +Little is known about the CZ5 format, as it has not been encountered in any +released games so far. The only information about it has come from decompiling +recent games which use the LUCA System engine, where it is referenced as part of +the decoder for CZx files. + ] + +#v(2em) +#line(length: 100%, stroke: 1.5pt + gray) + += Compression Methods +The two types of compression used in CZx files are Type 1 (used in CZ1, CZ3, and +CZ4 files) and Type 2 (used in CZ2 files). On top of these two types, CZ3 and +CZ4 have extra modifications to the image data to make it possible to compress +them further. Both of these methods are dictionary based compression algorithms. + +== Type 1 (CZ1-style) +Type 1 compression is a dictionary based compression algorithm that has a +fixed-length block size. The data MUST be read and written in blocks which are +sized according to the compressed_size value in the compression information +section of the header. When creating compressed data, the block size (which +determines the compressed_size value) SHOULD be set to 0xFEFD, however, it MAY +be set to a smaller value, and MUST NOT be set to a larger value, as this will +break compatibility with existing decoders. + +To decode Type 1 compression, + +== Type 2 (CZ2-style) +Type 2 compression is a dictionary based compression algorithm that has a +variable-length block size. The data MUST be read in blocks which are sized +according to the compressed_size value in the +#link()[compression information] section of the header. When +creating compressed data, the block size is dynamic based on the number of +entries that can fit in the 18-bit dictionary.