From 2fe35c053f6f106895e87ee646ec00eea32b605a Mon Sep 17 00:00:00 2001 From: Robert Lowe Date: Sat, 3 Jan 2015 18:00:56 -0500 Subject: [PATCH] Created data structures for planar buffers --- 16/Q.BAT | 5 --- 16/lib/TYPES.H | 11 ------- makefile | 7 +++-- pcxtest.exe | Bin 61553 -> 61565 bytes scroll.exe | Bin 53817 -> 53837 bytes src/lib/PLANAR.C | 78 +++++++++++++++++++++++++++++++++++++++++++++++ src/lib/planar.h | 31 +++++++++++++++++++ src/test2.c | 43 +++++++++++++++++++++----- test.exe | Bin 37978 -> 37990 bytes test2.exe | Bin 37467 -> 45671 bytes 10 files changed, 149 insertions(+), 26 deletions(-) delete mode 100644 16/Q.BAT delete mode 100644 16/lib/TYPES.H create mode 100644 src/lib/PLANAR.C create mode 100644 src/lib/planar.h diff --git a/16/Q.BAT b/16/Q.BAT deleted file mode 100644 index 5d1b5845..00000000 --- a/16/Q.BAT +++ /dev/null @@ -1,5 +0,0 @@ -call hres -vi dos_gfx.cpp -call x -pause -dos_gfx.exe diff --git a/16/lib/TYPES.H b/16/lib/TYPES.H deleted file mode 100644 index 039653f2..00000000 --- a/16/lib/TYPES.H +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Just some handy typedefs that make it easier to think about the low - * level code - */ - -typedef unsigned char byte; -typedef unsigned short word; -typedef unsigned long dword; -typedef signed char sbyte; -typedef signed short sword; -typedef signed long sdword; diff --git a/makefile b/makefile index 0a47caf6..ebc15e33 100644 --- a/makefile +++ b/makefile @@ -10,8 +10,8 @@ scroll.obj: $(SRC)scroll.c test.exe: test.obj modex16.obj bitmap.obj wcl $(FLAGS) test.obj modex16.obj bitmap.obj -test2.exe: test2.obj modex16.obj bitmap.obj - wcl $(FLAGS) test2.obj modex16.obj bitmap.obj +test2.exe: test2.obj modex16.obj bitmap.obj planar.obj + wcl $(FLAGS) test2.obj modex16.obj bitmap.obj planar.obj pcxtest.exe: pcxtest.obj modex16.obj bitmap.obj wcl $(FLAGS) pcxtest.obj modex16.obj bitmap.obj @@ -33,6 +33,9 @@ dos_kb.obj: $(SRCLIB)dos_kb.h $(SRCLIB)dos_kb.c bitmap.obj: $(SRCLIB)bitmap.h $(SRCLIB)bitmap.c wcl $(FLAGS) -c $(SRCLIB)bitmap.c + +planar.obj: $(SRCLIB)planar.h $(SRCLIB)planar.c + wcl $(FLAGS) -c $(SRCLIB)planar.c clean: del *.obj diff --git a/pcxtest.exe b/pcxtest.exe index 1a99ead2f9f3f8199f08031f468fe6ac2dd72c12..e13ada6699a6998caf703c0c328fb26139e7b2ce 100644 GIT binary patch delta 7241 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 delta 7719 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 kZf&F=kMy zMyg`iSgTkcz1CV$ipAC^2nZP4YJFGRLc#V^`><;L?!DGW@BOW{&p8cZ& z6JnxT)iy=Gq^<&g;d&ub)FJ;!^)z&rsuzHL6IhI}F~1unghSBJk@kDg4Rcm6Z(g=U zA3J1(6rxXVM=95+#`V?ZYaldk245gN z;uQ(P8{HV+9Q6xFe=iA1{~u^iZd3QJpPnFN#wXx=#7V7hv_Z9p@bbl^ciFP$#^wbV zt`OO7>FE-V%7QM)+_D99wMlzH*P65swA-XR0>UxN!a>im^o^jWRXENoNc6*&D1VX~ zs$aEo0XLM6hJw@(`3o8jRhe`P@M?<&USrZ;;I$SFe5OhJfV(Xk__<7r8ShbpXzT*+ z7We8DV&#^bs9jA$y|REppyLvQ!~J3MltQ@N$sx=NRuyvymx2FGOqLvSR*hP!yR~Xd zaHdv$5d2)}Ig@H?3R~SDtktS1;Ctlv&!oDJR7a>Wp_#>$1jbtM`{kd`qykkxIfIb8ZpvN|A_M?I~Sq+K#h+5@u51bSug3|_OvXJO>1 zBiA|T^?EDl#c6E+jc`>Js}_N;a$c@gX(m}-6+&>nlZF#s-J@&GicBASwl?opiO8s_ zmQ=L0Ax(4#d1kQz*vfHc3gPpsx=4t964PGPfvWrjg{u62C=jyN>tm>R^g{5+P6EP44w z%Pw6Y3ekj1QbPkW+7&`C*30%A!6KT8-mhy3 z(by5!P}GKWtYcRH1!}Q3{c$UssFsF0Ehr)C{jJN*gs?!uv|hIjEsXj7^_%0AI6XGl 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 +#include "planar.h" + +/* creates a planar buffer from the bitmap data. + The planar buffer is dynamically allocated, and should + be destroyed with the planar_buf_free function when no longer + needed. + */ +planar_buf_t * +planar_buf_from_bitmap(bitmap_t *b) { + planar_buf_t *p; + int plane, bi, pi, x, y; + + /* allocate the buffer */ + p = planar_buf_alloc(b->width, b->height); + + /* copy the bitmap data into the planar format */ + bi=0; + pi=0; + for(y=0; y < b->height; y++) { + /* start on the first plane */ + plane=0; + for(x=0; x < b->width; x++) { + /* copy to each plane */ + p->plane[plane++][pi]=b->data[bi++]; + + /* handle the completion of 4 planes. */ + if(plane==4) { + plane=0; + pi++; + } + } + + /* correct for images not divisible by 4 */ + if(plane) pi++; + } + + return p; +} + + +/* allocates a planar buffer with specified dimensions */ +planar_buf_t * +planar_buf_alloc(word width, word height) { + planar_buf_t *p; + int i; + + /* allocate the structure and populate sizes */ + p=malloc(sizeof(planar_buf_t)); + p->width = width; + p->height = height; + p->pwidth = width / 4 + (width%4 ? 1 : 0); + + /* allocate the planes */ + for(i=0; i<4; i++) { + p->plane[i] = malloc(p->height * p->pwidth); + } + + return p; +} + + +/* deallocates a planar buffer */ +void +planar_buf_free(planar_buf_t *p) { + int i; + + /* free the planes */ + for(i=0; i<4; i++) { + free(p->plane[i]); + } + + /* free the structure */ + free(p); +} diff --git a/src/lib/planar.h b/src/lib/planar.h new file mode 100644 index 00000000..6aa8e260 --- /dev/null +++ b/src/lib/planar.h @@ -0,0 +1,31 @@ +/* + * Functions and types for a planar image buffer. + * This is meant to be able to load into video memory faster. + */ +#include "bitmap.h" + +#ifndef PLANAR_H +#define PLANAR_H +typedef struct { + byte *plane[4]; /* 4 planes of image data */ + word width; /* width of the image (spread across 4 planes) */ + word height; /* height of the image (spread across 4 planes) */ + word pwidth; /* the number of bytes in each plane */ +} planar_buf_t; + + +/* creates a planar buffer from the bitmap data. + The planar buffer is dynamically allocated, and should + be destroyed with the planar_buf_free function when no longer + needed. + */ +planar_buf_t *planar_buf_from_bitmap(bitmap_t *b); + + +/* allocates a planar buffer with specified dimensions */ +planar_buf_t *planar_buf_alloc(word width, word height); + + +/* deallocates a planar buffer */ +void planar_buf_free(planar_buf_t *p); +#endif diff --git a/src/test2.c b/src/test2.c index 5b3d32c0..ac939e57 100644 --- a/src/test2.c +++ b/src/test2.c @@ -1,19 +1,46 @@ +#include #include "src\lib\modex16.h" +#include "src\lib\planar.h" +#include "src\lib\bitmap.h" word far* clock= (word far*) 0x046C; /* 18.2hz clock */ void main() { + bitmap_t bmp; + planar_buf_t *p; + word size; int i; - word start; - page_t page; + int plane; + int x,y; + byte color; - page=modexDefaultPage(); + /* get the size we want */ + printf("Width: "); + scanf("%d", &bmp.width); + printf("Height: "); + scanf("%d", &bmp.height); + printf("Color: "); + scanf("%x", &color); - modexEnter(); - start = *clock; - for(i=0; i<500; i++) { - modexShowPage(&page); + /* allocate the bmp and fill it with 42 */ + size = bmp.width * bmp.height; + bmp.data = malloc(size); + for(i=0; iheight; y++) { + for(x=0; x < p->pwidth; x++) { + printf("%02X ", (int) p->plane[plane][i++]); + } + printf("\n"); + } + } } diff --git a/test.exe b/test.exe index fcccbf075c9f2b7adc20c381566b5532724c4caa..4dae76db4bea4ee902435dc7d92efcac58b7faff 100644 GIT binary patch delta 6491 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 G@_zwKMoXCh delta 6587 zcmds6d32Q36@PCgWSb;2VGGd{Mv`JoqDT@L7LlEVge4&fAQ(wz`MzYxY|acxh%tk# zfj}TUt(s#cEqf7X;BlOKZ`i)nYvdJ+{YV<&^&J`@U~xY+e5AADzRw z-1~d?-TU6X_ibO^J!Cq6$n^NG#k@xhEH2_>#gWCue7!igxOhZu6=Uaxxu%GJLloB( z^CP0Jrg+4YOBl-%w^xl4gEcmOOgvDNH^yaR4FB*mr7B<+%xqrUEKb&(E{_7Unf?s= z8t3NB#VMS*eL;5zGn@PPMZg)IL9d6Uv3~ABN1iHPskO)4U<=t{eui_#yv#JzvmL5Z zS`Vo+E=8iwa1=;4d64Z&zymo-vW2@gMisUetj%->ES3HNgl9Rp#~F1p)8xYKkRf$5 z)09H$0e&MhIbyod<@H3{nQ6K%wkzJYc6gg9Wta~++mx0l+YKwyH_33mmfXaF3Lq*W zHcn&EaUamW3{2CINv)Rv)n!`8*cEmsR~JCcR<4mo*BlX z{!qy2Lu%HWKLlJ$9+yda5?#>HRPPM?$(f78ax%CexFJAGq;C%_ zsdLb}-qbzT#MBzF_n01q4Ge8F1f(%iH!*e>*wd!7z)MdNnzUXh^~QQ3=lXgn)cE*v z(Zs}ZAvv*J$W=d|odVNjKi8bem_O)Ix)&;{bAwNOdsC_?sGo2hHL5p5?L*USvo?8c zeTAuoY&d=MDyewe&E!BPYNs14dDPY?Pb#16KGgt{*7iWtVA~WC^8|# z-s%xD2`ii%2dGAy^Bp&lNf{6NA6G}Oy|GF#6<_s1!xpw`bbQ{~{^Surh- zOsN@=-%l9T{^uFi94BG>gMju0!j&Uvq}?9!fXwFEnYQJLn5i zd1V4hkxp7**ghgBH6DJ<2MU4s9J?`Z03ibq?=|Ga41tB>QHjQ}fYKdp2+}Y*2^%LJ zN&7yx&r2EfaCl9^!#duY4_wn!R9VtAMhS$qoq4F2kkRToC=QSKEnk_SdY7hRG!^&ZD}mg zAhS=gtj3mt-7L5&Pvou|Klkg_#OISzh0cR%&tb0p{GvrSbkqMhDSw6IGievo|BsT= zmMvqMd&>+xmbjWAo9#TH7yuYkiNDHLlClDr;Pmjnb24u0iqI zla)@Gs$vADjIo*1WK=!z%_&T+5{tyK#D*1dI|H=icOKurW^7__qe@+hcS`jhO}%REm#c4t%J(y0mg?s;_3y5&{8H;@q4GxNWvPC| zDhG3A?G3R8Y>vZRb$VzM=;a+LXhOF2dpwRo4e&U4Sq;iry%j z9PqhYr`{-?jfDIY%i9TO+HEQq@JY)bsaHSmrasSzo0_MT%RXI@|7E#0OAat3?`?gu zp%V?+Sp`|L*Xy~`(|4L@E}=#nCyJYlah}jIeheMd*Pu8*>(MM5ccNq2W%Ab25{ZTt zr@zJL4Ript@pl22ZO#?-uCcK@1o34Kqg?rErNowNaOZ_2gcWH;bOG9jT20T7w zX1by7+Mq_fJwRp}DjNcAL7a5BRLznXavXJ4HA@#U6UJxbn?dD-RquQ)o{&I4Z{LQvyyune5~psc4o#qP*+X z?;3nxBDn*Nr>?wkW#-Yp9=})8JnMJ_~kP zcC&=%;bDby<;uG988VY|A#cn+n{cU>#ZJSXIP0roUMx}?Q#b*%`N<=v99FgKGDQty$*?#QoU$D}80hf&vb*{WvC)mV7+byRRUue`lX`uLS^(oep@(xcJF$?7nVznVIE;BFx5xRe-U6LTUta;0G!GA(!#d=EynwHUzT zjut9SRU&TVO-jR+NGHBKV6%wJp&%W(KC+?aAtATH0r-CYGYEVRLV&{%$5+tlsTXg% zi(@qXFBsj6P#?@GvnDy|i#ze^1M8uIsXv11a88O<{UMkOIhWy2Jq9+_T4q&W0F!Gi z!YM(6IE|NujE5Wq-SovyPeH5(ji1}8x_QSXbR_4=Z&8Y*dI~nGtg20pOy&`3q*+KH z9_Ch3me5y)R?Z+M)r{CCVyVSePFplGD;`WOEfd_K%!_kcp$nO#fYp`=qoR(U&@REiy9SY>>%-q zn{HHGlq@JwJetnJW*JHeXUeP?#c`M$Hc{{aDq|pqRh$Dpf+z^d!KTrw<6$Uf zyFFJ%C`zT}B3z1k?0fz@_P%)Ry`#~kPnO9jm^x^C!p78sr+%&W?3|B zwoLkc2mxPNP^s&(a8rRqAJFJ?nf%zXC_pzH`XVI7rHZptVSf_)HjR$arx6J*#}%`l zzIo7x4v93j2fHLfpDH9$?+i$QJ}YP{icfJz>*Xd&-wY(Uz^6FF4N4nr{`9dxf(ygW zF1)oEJ&=|)))%oKE|rW+`IB)^d!=3216UkwQiQK_Y$wd-L5Xc=+>H$ z@s)sXq#EFJM%tl4cg`dLDs)ejNWIh7NCBaHm;{z9n75C0+gf#CDXn~`uZlK6xSKU(gD`B(_c`&&na+9xS=~-EqGR4bR)+A*RoFZ+eRILppN?TnL2hWb(H`>BA3jyi z7NN}xxhjrsF5#bw3!97hRl>ZblDCU#TdKJbu`PCfQak|qv3L^aIfbI!o*TeO5dS`nEW+ z&2H(N$XJRggi>n}A8j4O4~ewxcK)g;2K|Sq2DOVe&}Cu==pOMfs70LEeltHPM(nWj z^J3zT66n-{e@p~He=qieUL%fx){0Z0JH;i?qr%!x zI0gEFxCA;zSa+77?~I*x{Lx?y=*I|i>x%QI_#Fc}NdSd}n^Y(0jiIpz zO{EAfv*{g|VRU8~$C+`vGXZBbP?`j=lz;;P96&^@rZN~Ic488`-rxUJcc($`o%=lB z^Ss~tyc#6^{Y?eFWAa)^^-a6;epHVT9&)=Zt06{ZNs?w@m!Af>_G4PLY?bk4%&0HfrGs7 zTkEHw(>bb_T^Box+ay~fypaQXEw>Rg((JVA0@ZgO>ToVU8mT4nK7aKT|+IrX<<=|ztIHf zYq+}g59{wj&F@hoU^c_mtG_C{x(rvBzD;Udlb?6*J@+X&^-fO99k8koM+3PUSD?}L z6-Us!F4g5-s>{7ppTKE<8XO)~e-o#T8_+jq47cmgg5>h=s>f&7j>9_}>Z;GZyI1&i z_^-(oh~er7aax_R*J`VO-=b9y-plb+a1Y-5Iaj~mqE(>ALN#j#?;XI^e`3)J2k+g= z)&Je1-8VRdgbY`pe284p-Eu)*c8>a_4GwPi++LwSjh<-s-B#VrdCHw~UU$pqEuZgn zb%7vBO?Hk;YRVRX&pd{s6McKa78fV;CNGWPq>2FB_GPy1 z4n|2vT);Yy2Nl~n6BQTm)mm3^*~Eri9oW&jv%##p5Ug{tbxexf$Z7BQCyJO0jlx2` zk}DwR1>|f;i`Jr{)VVH3QZSP|m_8N&?U(tJQf_;btAh*j6zdLhuyHYxtJ?(Tyt#0D z2$7`AZz>MIuTNp4w5sKr8>GL||q4be0NV(wC4tb@caozB%aShN%fAKXSV=j*y2?)n6u z=j4hm?*&WkZRZL76il^eZ4=5S6-#sURG;)*KZg*9i00JL&Sb7 zms1ZG>WB;BAqIHxhwuPQ_b$gjqtePgh17)|=ZV~*2O z?pZ1CoV4V;oOe2mpL3n(AQly;ueaAydnW(dGWGca$S^N4ir1r3D~!s zd!7*5Cc7XfAP1PUy>`i2&u5m``6Iwmpwo2;Sh7Q~c}|ZC>Y_`gEOyhhpwj6+S}+lb z2XT{Km#|$R)XETQB6IHt7KTLm@peOcyvvZ^)eQO1ZHBz_lJSbyXYn>#&UMOW`q$vwc)ZOB?Cdq%Z<%Ozm}stx{eO<;h2c5=FGllgOENjP zJ=@#J`*<#d^NZiX`6u6t^WXI093nnECWLbm@rzQfCgrtBOD@TI7sG5BW3uH%V#|v` zwq$Y}WSu?%zhw5*sHa9fPs*+~rbU^+yW*$}mWmX8KSUo|{$iN_sG@tlE@+F;1#Om!xUen=3jJkpBLx2=OTB~p3QA5sOd4R!j)tAB@=m|Oc=wfs5dAB! zFtLAStlVfJK5mzrERS~^a+k3)o^yY+_hZZJ#-%=FL65dMphtrm5yI{2rsHEtZ~Z(j z^+;z$_dH42I}e6Ox4-pS?JZOInUR8_Z~V)lsYfvKS?%Ai9ry6R9JjZ@U;}TvcHq2! zIgl+#pyC`MgNlJVgwt$}5KF}4sOYVs1I8~cxr|kyOT5*7&W)4rvNlc7*U?i&0W%x6 zRd;cg@_8`xEO}kE_Q`bQchx-cB6MSy=e-xLTPtEvYD5L64-D4Lt$-F|b#w7ew%wlk z7p+<=5B2GVeOL=y(iPC3WAH(bCgS|FN1SDh2&qTvn=D#qEQ~ac+g2UmERPPUKVZ?m ziiIk+4}5kl&y~;LPrBO;+@Nhv@zMP?TXc&Hc*u8d;g8>Yb`Av6M3t9Id>u+ zbLvGb)Mz7HJz!`H05V1~bE(&#ZA)+`U`?&KKdd0^pvJC$NzdyN`UnOn?*1Mq_WqQu z)(qps+>*K4vsi6aXtm=p@{+(ioMkVMzFpdMtQF8=!*i3>+#S`2B!S!WqV*k~1CJ9@ zj$G|SCwd$$`72by@pJoCulk zkaGRYvU%pb zWRG&&Jk^0XY-NslyyuzhV<$htQYGjUY1|kZ$1J{^aIPJKFsA(GeI70xEs|zj>anv2Lz?ZkW zgYi0i#0x;eNlTE|?{U=So+bbD=dh{IbryrhsSWS};0wsEcI|E}>_2byS zzrr{;f*sm}{fMVVI)Y|Qhjx1$v=lVOgoexpcYjZD?_BCO4YdJ12KD%c3B!9JbK+3! z^f_SiaE9x0RUAItQ5kvdWrB{~o&_p^oEkgEc;ImcciR*>(*9X1pu&^fpFO9a^9uXBT{Q;MTfLc&TBWzUGO)WaWuQmLvJ(V@qEi! z?Fu_jUFSQCJ35QIwDW=tgA_($fYd=C!*#xVBGeA~>gTWmy2$wfzBN=Og|zC?ARJ&v zK=Wa&iHKGc5$Bjsb`2(4%_)>k8X*D9-wxQ}1<_}=pglu!7xGQXL4=|Q zh-l5owwA9Ax~`$H11g2`S#T6^p3nqi`O{_;gSOHkk0ml&YwS3>tZp0{Ebc*k4GEzr z!#i}Qi8gG8)iHhZ44g8ul7YRx(8Dn3f38nCFxL_?TOZG9&+?!gkOmf#vT<0#;6Wj# z)74?x;XpCj;cOcnK|5T|4Zw9N98>eP>=ejs8i-(gzTj(a#Gf+>^ zv^X$8`S1ablWhS(6$%=$Ba$tJlg;|*;2{0FaW+Lo1-0ZCM7d6DcyHW}A*Tf;UGi;{?kyqmHt$$-6jsflY_~l~3+J~G=D~igBHED+1-*Hm9f=MoolJ;+JaF5G~KQB~9$)Z*Ng@mI14ca~&iv@m$ z1$dumNQd?3IbSWebaPROb7g_Jwsezo{txFTC#R-4m$^%(tk|%r$XWhyxmdJmsxzmw zOx#dfQtq5zy7}R<4eQp6&Ku`XaxQ=Pfr9d)o16Yq;BaZp}*JGefth|+>SFl zo8H^T)h;&vlk0umdF79FZeuTC*`FlO0SMBZI7`wFTf9ZI+!W6G zEOw887ZZmLv)u``S=KmbW{KOr?F%E|ZH)3{a<93&@#)_Cn#+anSKQq@Ps(3QX$h7c zwt*J;Q~85mbqmg(V%*SRaNdgt^46T|AIAusm|JK_Vv%baCLykL3R ziZ7dG`akPyhP>=RImS|NaN4CY+Rw)1&^Ax@*3IF#o%{DBaP>TY5Y{RIg!7d zzQ1z5bVU|P_~Rlfr^=Pq>#FWDb%c8`2|L=N(;F-9BYD1}=jf3W-uQhJ4l*ZHu*Q4l z!WDlZ4WT_dTmnoPP#WdYz%!|%%6L+XLGVuMzaY)>&!A6ADy>mE3bQn|A=OAd0L2Gl zY(FJBGKQpB-AU5WT5D#dd%Wj>;HtI$s6ouxenec9xwd>p<^%2(+YNC^>Jj}5$*#9% zmbs%m2Y3_;sPLHnaeXwWtr-n#;xHo)T&PM1IWgiK{a~i(c3^ap-k`f69xt={RQ*kT zcxJNur_7)F4YMjd2Q2#b_i*%i@ZmWy&sS+cVWQZd_iYRoe-Q8$7~2hZ?6x^KSvkRN zK|krB{siMlxgthtsyXZ_wDqQ(k6vxl9HRm1L#YjZMG!6Z0_Ruei7P!H3aLky85NG4 zmD-*$-uE3+mV?fe^-Wn6Ij^!dWyQdVSYTrh(qacyEwFMJ?GfW(a!c*0r&14S^)~R^ z3t&3<#)t%ZKIHY^`W0Rr3b%l|CdMVudV{duUJtL=)sN%!FXQIv7xgIWt7G(!#-ujr z4Q9vy=c3dEc{)L7QoFV=ASqD(b`zgUYJ;|W3>^pJz?@p^T`A|`n!#%8(xMD}9oAcy zr=HUO(_m-lN~uvEGv2ZNlzZTN6CCnrkocC2Nj=?f9B7!Swsi80gJuD zOYO**fOG7SusP!$62?n&bzi-e)3%RH_3LM@0n!BVH&@yDWKTT>xydyUvfgG8&|-UI zwvEg2th3KcRhHL|0;nm5)Fqw9S$tVrfsN@O(NW(hueN%(S~+o1ZI*qvQ;gYd6K(aJ zQ(HO)Eudl#V(gL?>LjJXbAG~XZi0InvKOeJoT5dx1ig_F9!01A4zz{#fPp2V z;6>c07)u4iE|0CvHd4+5w=hp2i~wjh&xz6KmDQAG<2iWZyn8O;>Yfo8=2>cUqH3P| zhS~i%_dv|y-70WZ>GCbLRu?RqTV{_yc+TvYkcVi4Vc;{=EjHXu-wTv(GW56bRcz=7 zu94&1fVaxViT9@(*kFQt4MT!Bq_b6C?RX9mf2jr0CbHCfHFY!z86pnY{-dXTO!PCYNrvuaqT8!@*hW@qo^=PR{f1Z%@F!5Wfc5tM0n3&CE zG%*@BHNxy;^()v6h=7%~!&C^K6frr=q%#s&_7D&Qsr9|eNnP+bU}E6`v50)e2`ImW z+!ZoGwuvb)>ir=6I@`xMI~YDKzJGF3HNxrvLa4ilY_RN@vNe*DqIkXxfZ+v-kHfO; zpuJ8EGRWOTT0Xaf&+VR++bc$6Jf?Gse+d;rA#a%Bfz%_>bO?2KR+zTDqE95kdWNMo z5MA|)QnS`Q(svK>$nUjbV?j=V<@ehACtVA@{!WXbfrR&_EY`}zE+Do8y!}X zzt`fs^6NnduDp`(S!z${0xG>m;812utTY-TU2F^Wg>nPuyP|~b!2~D04a@nv1 zj?*Ua8_?8IYll;ia(=${+-T4=MVub&2YWx;w*3I+8U-&k072}QTCto}n>5N7ZP4=` zsMV!*UjH?mn2hRf_uG1iRE}kLNhhU4I2wQ?9&>!aNryX&{Y=&^zBeLhwTFOUes+*N zt(=q#w~I1oPy;iteODlTKf^;shfI_MDkh=J4AA0QYycCvy_0|pR{%q^(341eKahum z5_Sa&OiZBn#qYw|cQYIn_b~6HXr2;kMx!bAH6p;2R>PejSH8`N$y=@R0&B7zRa^VHt?B#9 z?e#o|5Um1n`HJtK+AwLUpnnzAS5yZivc#}-3sg-|DC1xboB_eWJ2vq?rbaTo-8`bV zS;BLZnufQSDk6k-97{dGF!ZvneKgYBZMY{As-2K{rYscg&~PB{`1T|2w(SQV)yO7T zI9NZc-{3aEfW>|D z3}1W4UAcr-ZSF{Pv;c8ZGtQWzj~9ki}s4d~zCG{6py5-RS#_E5Sbcqrjmm`gG& zrlZ|k#lUIRW)Ee`b293{5zr%9R!erw?Xbmf0b^Qg;%b_SVN%Xhz#p{LJ85=%MwV6l z+UPIeVq^>Cm!~(ot@17UVH%_R>1cw*eGDt({9EMUw-q`py`H&~#ih0VQ~oJ^?BD)7 z-YJewZP**bbzb!PQs(o`5iM>Ffy!EY=1OXOFX21RB>mfSe}@<(H%?O2ea-T*d?!X73rCeh&RKs z{h9`l{WUyukvJ-Iq5G_7E1%{*>DemGaDU=eEczkp;nbVwZ(HPm$<{Dm{~HAaBn8&; zX{psnl=i1wkdFC(^gA8~<*oWff3`yq?NT!f`J>B8V}+o%hYxBvC(_Z{EC&+*19w}+ z$zD55FF89PZ^e~|UU`wt47_}6h-0=N*g6)vFLdngc6jZAJa-3D_m2kjze8Q?{{V-# z8$a zHiy@^dfpMZy4-GfP1-Lf5c~AUV8n=$q$qEb;B!N!V0km$folT$?~qp7pqU&b=KG;M zOhnMe-EGg|IlS4J&}Qd}Hy|(}uzkCoKple{hxB==iTFSeX8?7(ofN&$PXI52OuTIE z1!{1H3vF;XMC0COd#L>`yfg!(EeFNz@i|=BA~%`!>2=>Xa^naqbp;*#^x}4Kj_^-wVP_7j}HNGaXN+f2)51 zwpNHwt9u?k9bT)jKM0(%ggKc3RCa*Vz9ENqnD!$x^E zzt%nbM~VF>A0mLP`mwAfy5N8QS&p`xX(aaANI|=8d8>%!3@Wx z6Y^Nk+&uRKIGmvG!Gu=nkYSe&)#V;TeDP5Om?YtFFEE4kS++MUq&eX@R>X(6hLL?S zqhJCByQ^b%veY3FoZu^_jnw@#*$uI6eKMH{=s? z$p^9P+^$sI5BnLSA>?2)*2fv=ug&wr3CivEKS2TzMft{aY-`2d>PuYp639O9y2Q45 zTVoWAafef!>#6?P6nAuIUVG;WZ(ch`$g+wzQ3jC|$@^P-smAFZy?dV9=Ff`e#UXVS z?9LV9D!#XRe6s{!mf!>PlJ9L)olJ=(_-~ii?kQAE{ zvCv<`@Jt0f@0t52*=6+vSdnM~qocgQ{RP&b)P1Ua)O~X6G7x^WN|JV zOXzxh=TPv7o4wWNr?|(ZHsIPAFoqcBNJ@ZpumZA=eiVkcOO0f2RnL-LxWX5xT|j5_ zl-*YM&9v1E=2pjItNF+dK;>83l30kc17Gk_E<=rmPHV+?3aK#+vC4DbU(>69EZ=RD zj@~J)v4Q{KFbPer^U2)y17bfgB`WrDv%!-vdSUPb<3E7x^`@ZyBP6c6W7r<>G=#iJ ztpV;{dxop~QHyUm^_%7XlYc?9ApQ;x!|E>RZCCGe;K>N7>IuM^kudBM4cmrQ-st}v z@>`PYh?M(@)PA%Z*=Z^Fn3UTJo~f%iqE(Ke`(__eC^q-g=ica#ysC7Vx_xR{au)YG z1~d{a4i9Jr>TvIDz%l(Xa&TSe0Yhu234vyE&t$_q1SkPOU=<3Am_kHi|kJ0Q= znB5I$!kl&5HM9QJgz?B#-;Y7te~F$|qX{8-C#5B)DNcQqFqHf0(crx}*Xcp7Pr+QW z>*RpLB)aeq&ki`Iy$6JcNCT*+F|m?;lW9dtFt;G5jcb5f7DGPn@wLfIPCv)*la`#5 zx&|E8wvwu$DR5v#PhKWw;b9E8Nc=GI zy5&C@jerTRb+tUlw+?8*T}o+5m;PrWZ;#YXitja?#*n6%&b+S9ymQ{XE-2&xx7Fg~ z07;+Zv_o=Iz9Ts#RSE8iIH4x*o+l<@%S>!wX=V$)_Ye(WLURilDWBA$5q8S&V2Pgd z{jxV?N03p83l+HXf@2k?|5f0G1+H=H04Va;j!iKT-<)cygIE}3i#y0~f1dO9OcZ~J zQ@Y(4oZc#qg&GwQO*Qp7(8jsfP?fk6cCBwuCk}kyde{?wc!8-`pouUw1x~HmQnlaP zQ&c|Q+q1lUinnKec`{~p&o)o?*%LYOeKz%L`mZY!>u>|MUHhsNHl}YB4INwuT#d2>?dHG~-&t~`Aa1Gu`fI&|y{f*Pryg| zlNG~ADn9Y{xZPeF5X0$eWdgZF=D_q0{R7?Q?YXbqL2~(f-)f^`p0}q^JmT$H3-A^j zX1@tn^cN}-HH8~>$=kD_?1Hx^+c(v~l&n4Vl4 zjV}N(2>9mvQyY}<+YB5RqPZ1*Egb&CEYqE{qjf9@4)wWSYDOM5y}2wOx!5zfzK|W` z{nl1)*<<4n6S+ga+aa&9rMFbvB_aEkAlp&7Si0LWso7W%M~T~e5Wx9Ja@!C=+A2u> zr78s8tP(O-Zlro8w}3Q*R}t7{=>V-tQeYaF@|r}XK6a-cW|6FXYx))UFG>5~9Yg)} zW5(imxl+K?h|5S-R{hP;PRRdj0j!7FF7_csOzwyGlHj-U;x}@lgy7sc7>WE*znyoN zScXc88Eb5A3!6$n$WK~hm9`29BGM9ox?8qd2E#>4Kjxloi9#eyipp3?1GXYGNP$sf zX0aS4Pqj+Wd1`mf0M_YMOqetanZ)YQJE+$k?nO= zxTurfFwpO>$pxHm_3RsxA>MCk`=1ziUy`^!lY4HSbu$)JR~K0*VO1H+e|AmJ9i$^ww=Q* z3%Y@Us~&SXh$FlDF~%4=R_~yT8n z#%LQpd+!vb0Mt5!Y0u3htcrYA?$K3!j3zdaWd{`Mf840gJj=v z7$)a^N|PO zRXJwgi<3Lb8Me6D;o1ueL;4tZWe~W_bh<4r9j0mTL@x*RjZ}}TJC+?SPa(GJ#ULwTL(4k=SpF_9nF^`CV77q76+>1Rh+mBRD zXI{u`)+=3)mz1~XP+NU0r;ViRpo|m>Mg{BboPHtvgs^?-aQ##L4((S~lDpYR10CX{ z;N53~eL0Q-KJ^}69#UoPJTmTZ>XF?ZH{D;Qy|imP3Cia~dsvIN)HwHgI&zzaO~|BV zg3%6tJt!z@kv0qJe`knAhH`|CxlLE-yy5=it2& zq^pez8_p-ZHG-5i)0%q`8Da_p1_P!@J%aleBe4GVr8X$>8G8F|Kt+Q1 z4RmQ7uV0c5vrsPhP(QfKFErWwxD$X?c;#(g9hY*R<$$%{A^{o0x#McH?YjkW9<=4- z9Ly1|;RIskFeyUu_L)evb=BeiN~M+3Z)ibRgxo2I9L&eqfl~x^>}Z(B>3i|T3Hn=z zsyp=7yQCA~nzi7z^PIoHHz#NTMa8#O!=gt#IwRE2Hp1^yD26-^?&=l@y zOhgF+BHOY$vScJHW ziE;l4{_Ccs(#@QCA%O0*vy|`gNiBLSM9U9$VGC<}y7e!p>(7S}G(V>!>Y0$ShLe!Y z&NJGc#N8e-@pVDEl6nNH3%Cs;HHk3#EzoUhvqs=~PY5VSCz-u7a7C-vxcjF2K02 z5`E@OLt@DSOMY3-hq`TL?!v4EOJOkJ8Zu6w+?AfBTP$7gCR#l4w^-=r1fX?5 z>56_Py{D{eThG0g@-~?In$#TBGf|wr8+UJBHhfV%!93t*WI&em(%sG`*GU+Yu1}ls zaSj%xs}&JW_&F>rzPfHHpE*(NUxVwXtq7hk={9nE_0Q_^T4ifpE(N4;m>uNF|L%|w zNuOVX=t5pM0_x*&ODd<1V!;P5ml;no!p%ujx@bw{TIF(ez!o`fmUP(C`hHB z#swN2&*WkI{@sAPjkh(n?`R^*J;`<2?>gxahu7sjg%|->J-K!$+bOm=-&k^9zv!v{+Ufqx zTYZ|VKDF1$p%G2SlGA#dxB3EC9ltjvTz5flt97+!mbPZSt zo6QDmI&MDo5}>e3y0jRpxB4PiJvCygi+Wq;a`7aa;oSGn;H_@ss)u|}Tbq8KMdKqu zyQH_#J|UzN5PHI1I}boovh=?$l=TQWFxx;EG1i?8)K{xLcP}_QTBd z%4CGcag(F-qO_m#sECU4`&~Hckl*{55*4%M1p&Ig(NLA{YRYzyRW{YVkcu4V$($_S z#Acd_nP#w=9M{j}(ErhyZ}Th_9Jpy5F(oceRgJ^VzPc5B=KAt6nTyJEkpo@fsX`7k z%~OROXo~LbFE zg*wWw#_P_^2i@mf+t7vAPgeLdSBe9Xu|13o(o&0{H|w#PF86+Pw^;Res8Vq1Z{fvI z{Z*I#dt@GwHD$LIu+=GIY~~H_e(1ux^sn&c&^vK&Fa{;7XPt0W_rYk5^JfcI_Zid) z`iaaGcT`RGaQ!gOG`j0RnoT;nvnjP9{V=GA`)5~NNglj{)iF>1XP@#v4a@p?>H%-S za3}3-N|No+MacKU`y#7rLjoDPU-J9#mRNI8&xd*qOaFRnU(dO$=jZ5oCjIN`BT~D5 z*j!}Ua>Qxi)Zz}0R+T_kf$-wa^oGlS>}**`r#0N}>cH*%A-*xa2k&*|!IK8X5^is_ zr`)N3b7$?)+iMb+=%14lnAeNs7m~C=jYMIFT-fn=_ZoqcsvD6G^=@?_9RgxnDcC~? z>SfKIfLMB677q^yJ8RTCI`aaJ)+wFHhUNu0m)>lS8CxBX-T;pu zlh9#k##5h+ri0Q&Z^KwqvTLj^{qK!d&hP4hvF-c1H>09U9I%Agmd9thdq$%*MZef+ zO(o{5;z1wyQu-CNC!nRy&DY?rG$P>eJn-zoR0ul;tiIp&GV@h%;7;n+;VJG>5S!%e zxa92kPXBpWETZh$EbT9NG{eHAIQG$|ok&aoKpzBT93CPSQ^#&0>*NiqLe*Q%1)57<8eQ^Hhb8Pylz~Ry`eTsfSz69jl#W4IUAu$znqQi3T{Mo$xDH= z%lhKXQt?ElTl{$8ed2 z<@aUgl;4}Vp!}Z9`Qj=V7xXI-ZD^;Pka6(f-{AFB9Wzia6y6ffFKh-mPQgj9e&b1h z6AuaEYk0p28EpC;1O0`}4M-y0Z}{3UUhsV__-0uF$Dr@Pp*uqpBiV_xBz`#|fD@?z zj7=4I!Yy1l-{L)B&;)l3oIuVE<=sKX^}TXd9Q>xdw%hQ=@QS!b`xMqS?Y~dqG)wz@ zMgXVcuL1D0ICz%h!OpVuys?E4_Fn+&gaaU3W;%d{T_P#?Qm^K(St{y2XL28Ga zsCCip4BvC#R>p(Wh^#(f_~Lk9fXgf||F_J|u*e6nyP)n^f0o6{NFU943WaY?iY&$b zE>vexY;&}Xcfzs*@4y6num>BHn(J0ZHD+69QO&9zPt~v-1Tg_fXDkDxir;M3BFXJ66xnQ?5{S<0>q9A?uKr(z>cHXn@y@l-o4v5h4&5NGq<=G6A5^64#Z+T za5j+P45?ha^@p_XWlo%MJq1!wLBQ?jmD|9-;0Um=s~t(8^?^(`h*l8rjk%h+LG)*? z!|n%B@)6;9ypPpo44Gl|HB)ps7O!f(Qfcv>4`i+?kI7t)VG9i3m%XUkWMr;&k8H|H zz|Gw(VV?UYhNxO1MH^BOQUHSdJ1i)0zRs%^zsk%OU&L``@y!W9C9%GBc-3KLKwA+* zUWCQBl1A1d8*MkQ-dwuw>dk4^{8ddhZvc~%zyigWG&!+Ij(dNi#S1UARZTa zwRzuy3y9yU{v#vHQT9B+$Sy!QfpvWt(g0;YPxSI3ARdd&X5x5%` zOg7{I{08D4E&8%I`OQZ3QKzN=6 z);D~C%KZysZuUxA6#N@>i#@VsNbG@!Z|yu``nk7oohLh6y(c*(_>IPap~ewhu%u}H zL&Z?{*aPkncZx&iXPm5zmYe1M$wxY`Jl%OkJ}I{(A5bz5mW^;HWVBYsB`b1k@`2P^XyDRfS6ki7(_$A1?!jrXi3rbpu?F5z zS6b(UXP)jW=PZLglGa%$PyvmFunao}6U0w;cvj z-@x!QO?-JkF0nY9)hyG}R-S&x2DQ|s{eROk=4Ned=>P*Lyz-B8o{4P`h0b$NuUmRc#8R~aL1je9cN@nm-VlL&NYCm>2Nc8y|Nj`!kPjY|A< zjl9%Kk-^Fsd25_p>e!i`0H1yAA(c~9UQq?*!>1J0s;E(lYEx9ZqB;~cT2W&ZHC9pM z6t$nC#w%)nMNLrD0g5_MQ3ok%qM{B~)FFyGR8fa1>TpFJp{OGjb(ErxR@5WzvzNl_;&YORd&gr>M6o>TQZTUs1CZb%CO~6g68> zZ&%cXih75l-l?dI6m_wpE>YB_ikhRScPZ*JMP06_D-`u^Ma@;zm5RDbQSVXIdlmIQ zMP03^YZNt4QS%k`enl-%)CUxGt)dnxYLTKAE9yE$U9YGc6!k$xeMnI^D(WUhEm71` zMcu5Z|E8#AidwFyqN2JLwL(!V6?KcEKCGyZDC)l}YL%iss;Je9x>ZpivA5&DX zqW(xxw=3%7iu#12)+nl^sI`hJE9wqKty9#Uiu$CYKBcHnE9x_f`eQ}?iK6~gQGceW zKUdUe74JYQ3WFQPjPP`i`Rh zRZ;(@sP8K3dy3kisQVOkzoIIN`o5xmps0ih4j%4=U;*Mg34wRYmcn!(3*Ra)pgAd2x(kuk{k8kv#;crVf@IgOSn=8; zWoOE)l$eyq6kA))@<@^(XwRxC2@tH5hO$UL#F)!Mc=>>Tzel832uQpUFz-Uv&7sis zCB*e8!-*S{=e0M!z#A8QdAeuLCBagb?CHsITi=Y=?Vg_TWr=SNsyRxxY1dny)s}yO z^B8A{r^i`leKSh`!qYvd;;jB@O&4N~pHWKcRlKu&uflflc4iR%>44v?xi45V&iWL# zM6aqNs&{tVoMP)7t2kPYFSa5o*{sFm3oy>4IRDx6X24D!k_mk`En2&IKMaTcFlGKB z$7fpKonvkJ?AjMj^!MdC=zAiiAsHQ7zHIr7KYs1yS7`_q8k1?&U)fb`oju3u<`wPh z4|YvMGLs;AITI01T*6m&Wm?mfvIO{*JXbvhSmc}MY1u{whL(?)PPBXm<7F%&jUQU% zv|=m&k>{g%65LI?Uk_X#fla1=ZMNuN`Yu~w2LbGU{zgNLsksFfNzF=nTrafBw#AAF7Vs-%+^!E8B_$`B|>>nWrjw?#R zz(uZf%-a(KYrUb$uDymAQSy||*4rAbQ}nMXVF){n?)CP+sUUNBg=N0}we?o~vP>r^ z7Iw04UoKZT@WXv|6?+<8_4siLL^be31b>z)y5UmGbhGV7`LL`^Kb4VK77a6FKcJiO zJ}U2%9J4aLUt z0<|xJN~2tW_Bb|h^t)tIa;4Lh1F#~?VAozWsdN&)F*7me>uq=&0v~my6r#8HIljG&dj+d*gEUjiXF<~OZd;aWzA^F{aO4}h0$c2?BKa3TebBSi*Gym>ozc>?@?~dbo^%4+iU5i z`*LAAy_GA-ony%pLy_KrzDFxJ5G3;=-efapk&f+bOroDZ8kkhOl25`<_xPb$W*GD5 z>lesi@U}T<(t5rKQnAO*;X+7Vb=MF(-d1;A#Uc$b=f+}7Wcib>;>ztg+M1qKx{wS- z6%r1*(B1+#7eMfC*ZznQETr$xh;~q}WFj=juybF`#cOlDOelF{Hzq z_BXr(>E8!wy-3&jwFf!<^zvo1qqs-mLNT3s4p(@x`FWy+)ZS8lp7u+Ufy>m!A4P=| z^`!Wkq4=~_-M9i_CgQZ&^v*8I>$}u(T8i-$d-CdnjH@(L1WMtDc13S*ANLdo0(DF9 ztCqN+hns3djS=)RYAj{KFZgkjL+r;cj<8&h?-?Fus`k=9(9P#rg4ZoV*~1u?#K1c* zp3ej6SIX}PxABd-la=DrN5cn4_Cv=KCs-3k$D(^d@~@$0EaeVke`jts1Xo8DaMmmjG-T6Gf_apqk3T^`5oFw&Uo1GrH*}>SX zBedDjroNJM{lMvdxIMT>6U*uU0od@~w=XZS{4S(o4h8w$nsvz*+-Lhkk=`Y8{T=a+6QEu*?ET+YUVk|O8C!WeF1%CuEZ z4zIP(FLiG$be7#EL~e57CAQ;Y%CJRqNy=l*#i;nrSxMW!8T{{hK)tDoD<7q zxXSPJnON>DE-iCbmTeF>l&r%V3!SAU8y|K)R8m^$T#tWZsdIfnN#VvK=gbE-Z+328 zyM@hHKJNQg49-?oR8WZ70Mz$DZ2s5?TlIkr;--Sl&cXt*U@G_BA0(l*!yBbdILpN{ z_gc|iR#eWpHkK9;$Wu0#Zoto)l)E=?#&4rAQ@z`!_TE7pz~!{%-%CKeNNL?62l~ z{-~XgxI_8>PLUU^js)jC&qlmPj=x{p`q}41-#dH?u02gh6N z^xYrdAxLi@di&5|IWAQ9ufDI{vA{(>3mk52g#Rp@C0ypvVgeXZ^?yq-h=MhDthplr z_(;S*!i41-Y<%Bl=UBODo{zOzqoSe&ixF?1U~}*W>*=f=h;Qc`ne_S9?ew{2Ha-&{ zxr^hrE?DFOtK-r9qqX{;IBrI;eg@}6=|(P^e%}0l_($_Z&h%f7D2Eq0g3iD^J&RMqfj?}c( zMG1W^W{q8lhGM;@fu2#lv9x3z7iH}mz$)z4==^;2NSnb$Ir`c{b#_N|{%xhD8#y~4 z%U70`6>^n;GC}wZpGSG#60dx*1G-W1ws3l*gs3OPGh!@mhM@X;XdKnsqj zO$8fDfN^49;pw;pZW^TJsd2?`pwoD65~hFPVX=r?L(}u~&}s6|@xeRNcsgh}A!YoX zcuwOh>HOt{Y2!ab&oq8LJA*l4M({a!dU8S<>(60Yc3kC)++7%dgqD9`(`JCMp5`BB zrCBEn1ZjL4znM;NTIPeC}I-V(0ag7!zkPY>g%D*UvT%n#I56WWTO!5R|x z6O@Q0-{Qvc#eYKK7&n|R{v!$(KufGce@_o0p8X3-g6$_LU(2%_H$1R<@zSgXt5Vaz zxg-bIac*cDfwav3(VWXzYb~H0=COT=uORDkoVaN-I0n4?q7^sQ!PpV4*lqT$X!^4- z06Xnt>mLJ&{7tAzB(|FV7VL&Gc#0=@~lw*;*ACC zI3aWV&oC92yo_MI?Vc42*g6mSfDo} z_!b(D3kxl5MR*N>7b7-@*1QL4$UgZa3EQ$9KF>8hqyE#6@Fm1;cw*|F-^h6HZ!^h#m$@Q2h z+K3;DWL{{PzHuw8J3+mitk51SJWLK6lioa4o60#KCEVy z6;$2^8zf{5*?tn$dM!pP{uM?Ocv@+)jV6yUk@jNcu-P*0Ivp`1_#9y(QU6F2sR7Rk zJk8q7n^sa4ziBWYi)Y~D*HK5XryBl~=>KX<*Rx7%RFCZ%R>_Op*!_{L@<51H%7}{! zL%f0?IK75h%7}7|Q%vS5BW8*N=h)0=6Y6+WI2hbV0jn?Sip^xDFh8sh^Mh$!KK&q} zf_1_SU^i3BH-@_f^=rUlq!-_MuCgQN;fKD?GU!59(jX>wO-CF5q zg)fW8^?V5(-pzbD$?8U)i3y%aR!jIzBs9S@jH&tHGqp0wHJ?Kg#e~-yw~q>j#Wrs3I0lDOq%YfZ`OJLai63tKen*)boX_`?T6 zB7lgf4<86Op`J~@@xMI~NIu>VVZYB%av|QiwC`Mvc|Q7h5bMQg0r-#b51DugYwV}1 z_!3f7#R{hTQ}oABZZ*6!K1kT>rp6H&I$>gtNB74|PGk=K>$%5bzKhXz2zL!%^*wWM zEGSdQKbD#LH=8gpX_L#^1$CI~W!uw(#VUxenKa$&N(>Z3$ z9S5H2rP&^famEtdv3xo64_BZmjGrq0AseOuQ;P)%v=A{$%nB$`<~@YCzK=L%{3b@6 z*D>(NF(YCbYrr>)uqz8UY{D};ABvwqx8KLS6~h((38g(T!(xm7h{6XkS7VA_M&Yv< zAKLza(l@9Aa72*7h*4c<@?m4kukkXRu@AD1k?qU!3??rz*b*^*Mr=VJY^Fyu2-SDS z-UF?OH6EcgsCS?3x}*s9^~Nwi#XT7N2et%lG3+t$53wa4#_+1xSIi|gGgqscHEcnH z9QzA%kz)gb8|mZPMaTeP6&G>_;gw?k5Ia3C$X%!}DcD4kfuo9MOkhw(ZWGpL16C>i zJ7#Z)O^!?8*J4Y_0oqZ1J`xc{1)K6WZYX&OwF$h2>f|30Ac%LBB5XsRcs>I;W&Alb z;%P1UebdH2i2-WNxYLB(XamAmYG&t@C3g_4G zMTj9YCh5a1amaUYJ3a16hT8;w5ypY{ufebbvoPEO5a5-Oun={wxF_PmtX)NMhDeaB z3FP9n=$98)W`grl2%J8C0w}j_#Q&)vOlLr{hrv?(B6{zNdmTe-_!Hkda^?C+Lk8nM zH%GRj_o29xY~*}|v%V`QcW;Kd*T-BKxTc@UTx9q|-?B~KhOwP-EBb{uY0Ahgs2QJU3n5p*zM{BdZdzTK@Xz^{%VSQ;6$Skvz*wp8&m=wI6JiGIaTpzv_NhcO?; z;kNhNPV;fxSTMH0QE*bQjYs*rLAl!&u2_6)4q|e#I3cf#$)Se*355Fp^J8)k0LozW zrV7PjDHrH7jXskps=_04c{}owz@&#y;}KX!?1);^c>FIe%E>Q92+OP}Dp^}f2}}}K zvj(Y8ie#A&TQ(v74AK3XjeeLtr3Ih1Y@+zv%y1h$%?duPr@SSk)f`vBp5_FfHWzG6 zP2+@l|v(TFhSdZ37cn0DM6iHKB=gptPI3N$i3Knd2IwOjCi2w7K@iqYmV z81q!WZy94I@I;K{pAgo+t17Eeojd|jpYKzZThQ32Dt9tmgjFR?7@;bEYPR;N%3${h zRT=COsVa#%LaOpVFku2uu$USPl8fNZL_8<(MC!>;5SS5OaR#0vyke7(AzL%V5FjO` z~9y zjk21xpxrWD0s_#-1%9MeQCej*D$9&uG zjrhJZlV&#Y^F842!-R41zl)Cm122kR2l^ufdhu)M>WY6XzWDbjtcial9(4^U{s_a1 z-$UWa_+6+YFey&J5XKnK%)qeI9pUV-P5MTBTYrKwfxi=jt~q@W2>Tin5>R35LU@uR z5)`*!?)T%*_h%3X&qW{p$lqH3ktay^ov4#DTWv|q^rV=Iy1zmY=$BcVPAxifcM z2dJJs1_}1acL}yJOfWK;s~O7;#!Mpg;Hg~^n^z!EbD{CGey9Yl)< zY#mVi910=|1U9gi1`cCbW7;nQYwTK77+*1e7%+dJDSe?>2+lDgS#vn84Ns?pYQAr) zH)ENG0T~0sTYV(FRoVyxy?6#X4H!5XmT`n#@Dc$?P=1%JMG@BV{DD#szMyr?F#ICM ztsLkvm+cc(lF6chWwa2--GP4sHwsl&pfG5e2rxa0s{_+)fa+cp*^Sm^7!7|sP zr7QC}3%mZpI&LW0Ai`sVr#2yCHUu$C#Nw%IIm^D#6lPUE^7;||Cshu((;RyX2bsNvLOVRxc+;aZv1G2uj==Hx|Gn<}70pLp{y0fc;9i3jfQo`~~cPIhMbe z{V&JRItH(02kBX~1$5#pv-@faOY>P}IUzY8E;`fMoKOkL)My5Jc-UX18L*rYD()*cfMhB1a@pbVf=OOPI{2@p@4Zc+g( z9BK@bYF+3#*ui=sg30P%D=mj|mx zj|f(=2{CRWDomxYv9!D>pNtaJJ{s;;R%DLkmPSGY1+tc)`7qQkpGIz^`#!}*WtgCF zWEdPYpc-}CP{+V2rr{uLY2=i+I#tf_#*GR=onKhWYH4g=W%+uySXf$F5{hAQmS;kZ z#lh}YX9Q-KZCbHuvkUujm0YVpi|NuZTk`Gj1gr|6Me;YORZvK~%?GcV8=xBWS{b>4 z@}i=LsMj}R!&`T=AWI)s{#R+&9~;MUorkx35+gE^WXX;zJJ4A?*^)>}CyA06>td1O zks=*ZVns4mVz=ufc}Ftj@h-e$B>mA)@=u{?QzMC;rZJqtFxpzF3$&Gurhm0S(Flbd zq$$ue{i9Cn07il!PK+Qe613^}y|=SFdpZGby3!qY-}mOto8NEV%y8Z6Z#coiIM%O$L?M(?KvRUSt2i9LmDt z@|^L19#dATeaDU8j-EISB;8!tj*S1qn6p-|86Q7EXc;+LvFAfy4mX+4J&2(QWMZSb zT5?f8Mzu09Bx|+tJ7Z|9HdvV(Tf`1Ge~U|-C4rCjvrTq=R*jG^gG=I&Qmt{kTr{);7x01O(S{qR7PX-qisf=o6q@I$7R zl~PIilyBuCPD=)N-r)u_8~=A>M%W$$dVT^`(7Sdhk^q3?2eyJa;pbP;Sz_}Fg={<$ zCLst=`nu0BhIYmE-YAB_aqfXNUvxNWq{ zufvY@UXMi<&Q5{^%g^yCqoQJJ1W=_pA zvddmTl}ISHSQP~r&y$vsi-AG~FMC=m@>8~6{v_rU8u;AS9|X(REZTT~q`T0XBnGpf zGVYTxUuexGVwNtyJz+E4ZwqZNl!1vhHCF2a*JvaT!PdMoH_& zQKyG3?^(+hU?vNyzA_WN174)bNNCOl4;6w58mL(CHQi2J=o}lg z4Je4`a>9IN|4IWJ^N@r|yjZof@K$ zqB0(>7fuaM!dvHvB`@~5ied8Rh%E=W3uYiz^pBieQ&_tz)gU~R8F0C-TVB7zN-u4;K3>!t~9UX|!+Lc+T@QpI=Mh zLkR*HhMIGvV!R!gQHJr3_Ckd7JdJ0w*U6D$WoCH^+cj8c@aBA**OrWB28WrxI~{)y zM^Pw^l@Ymie=H#&5Mb{LkU6|U%Mnw@^ppL{16BwLXep=ca}Wq2F?B&-1y3Mrj(-3< zz`{Ba1Op(#;AtX#y2&v*k3+T0ZvS$uq15K!{HRWwLV-gobIl~>`#AVshy#-kB!m2q zn(7?81DNU0Md>J1N6$>1L(;wjQrIglHjMWR`-lM2yps)?77T_H=F#Q}Tb3XMYTB5m zok$m}wE4)|6|n}VOO4U9<6;YX_s3-POCfos%DDncEFUK+I3qo~!7E4N{N*?h=p?o5 zlB-HgSRae^Vndo1dnf^`>LZc5`xnf)OgAAaqtAK$S$_lM9hJ9A)<+)s{=MO z#CTu76$E+ULlPIDw{}Svmy75F_c^+(Rf_c`3=*tX_~Fv1T3LFs{$tld5e_LSn177o zr5=Jno40PJu9T3^N$a~27uwIF0D+WOydr6lli9%waPUJivnVcB3dgyPY?N^~J1 z(c#!&&s!$!W)P*`u>^f?9wAZpnUu{_(19Z%Cqf)x18K8J)E^2|sQ8w3^>AO>4D zBjbO@sbUy5(Lm*JOu{%vbwa)6bbtGFB*7AqAuz_G3|T>iqc!G)!%sgFlJ$lt_>rI~(53hl(ORlE_gN~;h@GkU)y71LDaMxr4W zmum~f8R-`M$6`At7zpXcV0stny;8xDC7s^ek!T?y$uUK_5YZ>xpe6BOFvortg~gU= zx-}3wrbVQok442m|H(L(jptz|T0GGO&TwW(*{{Q4tfem`D52I3G%>r7zIX8#lOA|E zdGt+=2^0D;9#ZByjGo`@H0FbN;&DtKzGT}E&jgNp;p3PbwEH*v=pJ+HM@^F;XToC_ zhNsqq5}h04nKGf+Ls~q)r7X^YDxS9zqI)ii$EJj6kM;1xk4p$oKk(E{L=F#Q@Tf); zE#&5T3PGCo=yMmp(8Jy1+*ckym&=B`!Icp1)8-a#hX5AtjTQosukbt=OY?@Q9u< z-0YOty<+-N011ljXJOED_@vD8hm83Gs>(b*&ceI9U4eTV97sA1^8liAh^)F4YBKnM zpWm`wWLMiRvz|U={vx%WhIVr4)SneKmBOKRRM#o+%$nE0v&X#Pucz$`1Tx@H87424 z!fsF`@~^;o$-J;}J$+eZVM$(in2uBmn{y;Jgmhqe|2+mv>as{KnFWulxrQIe((CJK zh0~kbFgjYILnjQi*&r=0$!*m*U?OoC~jpFW7M|#W!Uc zo@=hH@dJW$!4>X$enpq2ctUV}N6JB9$MCrpmA5i0=exqmB~D}h7N5_e9^Hsir<|(O z$ZqPyg-n!bm?JL!&w_Jl5d(djBKoZ{?ZqGDErpru_&jsVn4T9-uI}M{K|+#h@^^xB zSY<|6{@FiN~m`K=`fle{DbGrvo16J6hoQpCFpH zce}Rn%eU0zPlb~{b@lD?uU@Lj33Oh5ieB#4Ib9N5+}q~+iKJ-wR|KciTAiT$tC!;6 z7M!kX{LW>FxcD7t+J1_zXuJud1%66!dY`oih*?zr6N1ydjH4GZh&#oj0PJg4;o=*JLUhsJh)1t=Ti(bP|(OYQD^Zbe~ z)#;4j__Z_WlpNO-uM18up)qenVR@rEy(GAJ1I<=Y`z80-l|F&H<`Gb3a>db4(Z6Sm zD8?JP6hA09U3c({0JY`DjlI;lzd8-h{pLf2}2JGTm}4!F2&yzoURjNVCFiP;_UJK6rCo< zJnEn}O(z7Wd!)5JJ1aQ-BB)VFd3>q-FAGiw2;3Mkh&#>QZwfA+4wFXsZ`?BXM$qH= zDf%X~?#041riS2jJm3{7F^D_GuM19ZgE1#t;6E3fjs#m{rnW??>cAaU%hC(rR05SZRVH$CLBCzv*CAm$?f>= ztIs@6qCC``4QafN5Ke)~-U9x4-e4}*-{*PVo_Da2DU6Lh)6?721F78keT#T9P4OgO zS4A~FPRDF)c>ke4e|I+Tr4LT$z0QX{Z>Q&VA-?E;4tMgzJ{i|Mkx0hbO ze!X{sf=0c=?Mq&|8^1#1ch?s9wal*?LnBGqtmkdZ=BIjl^80(Td$QZTG?F>rlP^f3 zkjN}_?n2^DcbVmiQjXq! z6t6sN`^#Hbg`F*mC_22TC4_0PEukH#5>;dqiePY0Z+17UL%MoCmm6KkJ<@Y~-_(Ap z)*h;cbd2S)y-*ja+nLMVo!gH4yRP<)EFRiD<@xL0#&t~uQ=GkuB==49Uxv^_yU#=I z-}=9)9UUl9wJ|fdYInAI>3Pqa%w)zh*$g$$??=`#gQaSGrLV?k{2b$aUq8?+ z6xgt}t!9waek#@E100bTe-m`gllh=N-Gt+UbVKmR z{uHG7i2>2oNlv#W$7{bSK?gr53036g)H(U^|4QGj6=;?6_nP1+hniCEXzgUe&8hoU zk`%=mm7Nn?qOQExR5U4nvzksCOxxDBEn7So8+i2||6s*oYum|AR%?t%z0L!h<4xCr zxzfzqJYH*AuA1<^wl>4#ZFT!xTrFY`XY`13{iO(+nOQA;+CEi^vnog5*BPvqu-6+$ XjTyGSfVCMcfS9S#$w-NpF`WJ{-$<5( delta 19182 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 -- 2.39.5