From 2cc9402f4de2f15e2fb5da939e25aeb7fbce60db Mon Sep 17 00:00:00 2001 From: Gwenhael Le Moine Date: Tue, 19 Mar 2024 23:35:29 +0100 Subject: [PATCH] 2005-12-17: Updated to version 1.40 Signed-off-by: Gwenhael Le Moine --- DEFAULTS.BMP => Defaults.bmp | Bin 75510 -> 75510 bytes EMU48.EXE | Bin 253952 -> 258048 bytes PROBLEMS.TXT | 7 +- Sources/Emu48/CHANGES.TXT | 130 +++++++ Sources/Emu48/DISPLAY.C | 16 +- Sources/Emu48/EMU48.C | 293 +++++++--------- Sources/Emu48/EMU48.DSP | 18 +- Sources/Emu48/EMU48.H | 13 +- Sources/Emu48/EMU48.RC | 87 +++-- Sources/Emu48/ENGINE.C | 1 + Sources/Emu48/EXTERNAL.C | 124 ++++++- Sources/Emu48/FILES.C | 2 +- Sources/Emu48/KML.C | 23 +- Sources/Emu48/KML.H | 44 +-- Sources/Emu48/PCH.H | 1 + Sources/Emu48/RESOURCE.H | 226 ++++++------ Sources/Emu48/RPL.C | 29 +- Sources/Emu48/SETTINGS.C | 10 +- Sources/Emu48/STACK.C | 646 +++++++++++++++++++++++++++++++++++ Sources/Emu48/TIMER.C | 38 ++- Sources/GCCPatch/EMU48GCC.RC | 70 ++-- Sources/GCCPatch/Makefile | 6 +- Sources/GCCPatch/PCH.H | 1 + Sources/GCCPatch/README.TXT | 4 +- uninst.exe | Bin 51323 -> 51363 bytes 25 files changed, 1382 insertions(+), 407 deletions(-) rename DEFAULTS.BMP => Defaults.bmp (85%) create mode 100644 Sources/Emu48/STACK.C diff --git a/DEFAULTS.BMP b/Defaults.bmp similarity index 85% rename from DEFAULTS.BMP rename to Defaults.bmp index 89a8d5ea9c1d2c301b45ba7d8be69cf5f2b49e9e..fafa9c390af795764a01aadc82238bc3191fd879 100644 GIT binary patch delta 2874 zcmaJ@X>3$g6n?XG-n8XWXa~AX7n^8Vre!Hhq?FZ!p;&>$Xh3KSvK2aok+wWY-q0lh zMNueU7Xq>=5Geyn1}cF-PUN75zsCKFdE=cH zRgGZW1PA=Z87M4nFsXshiqmaqRBX68=oS3(YHfV3P3fIGN_yvhnkT2E!Zmd}T%(5K z{)}wgnOcMI2c=?3>2@(*oSp?`ng?4Jx^Q$_tr$zE*J8=&H1tg0CiIt-W}$Y52O*Cg zMM@&snTb6!rsHmblWaS2aApnJABHP~QcyIjo^)P@Qj&z5v)08iuAD7!1#T`nV?k5d zh$KZ)6e+AIdKk@fGjVH9hE)$M5+2T3Y>)AZaSLgju&)=Or_(1dv>qd0(Uyblo@Ja%r7%Mg(Y2KPgb^pZSKX%imodPlLffp zsG65$xC(5Ymy(*Osr(D7L3Avgn`Q)|gh`kK2y+m>EuEMcic5{DaHmQv)~5@Hv7pN3 zP$^p?bnYbED}S|OEGjB8o~M&nIoWU@A|+H-j>Yd4SwjgfnI^arA)rpj!YWr9C9GjO z7zM0pcv9I5MT+7PP@-lj12ue7)hiSOO+tB<6O<5{(n29EB*GuD%$+7t1JY=KH(`k|e_dNcDbfXaY2sCjFJQ6M(-B@Vj0@XtJd1KySor*5vqfRtf>P8M7 zs8d?!vJ+oe!uq=0!BmNAggb5;_SfZSP@Nkqauau`27~yiu818Hja7&BS2a#Gh?4sJ zAtXaBL@A?&_%u*cUqt&uP)YS*z3{3NSaAsu`&xZ|Mhv)6iD~X0*>u4Df2HBB-E@tag&Q(a{^%1 zraT92v98h<8ymz)p@jn9*zcS0=-uIH+PpIG@8)Y3tCv$Dq_xE+8PI&1vG~UqrM7L2 zP6`{vM8da?Z8p|ay*Si09Q936m7UF#FsixA(BIh%S@xa$!kaBC6C_EJy@8&V zSvE6m(X$UaO+j?-=rGgOJ@&&6GaX!z24YoxB!)l45ZJYIuNhA-q+`J`Cl>Eog#*XN zv!So_V-&JQEjpPc(VadZ`T8k7whp*70VqmzX2*RqF;~Ebkcs_a1Kw!B*90 zs!Bizzl^JUcEoACflRAJYhrXx*zYx_A-PRsikHHPQa*3fC^A7oL3^t#Nj#TundU?% zGcw-p5O#PT)v|O7JAEko2T&&L)$D|hWV{mYHaY^=_UZ}cd<$`2F??=ZJw`FaveBS( zrbg&?iRd~#Yz8gbvx+DoJU&=n!MWGhU_4hT+54(7onAb0Mm~*fim{0mAuq&F$oQd^EiiK5rLJ{x2Qq0@WjdOZJEHdjSuQc33Ex@#C?Kz`6qV@g6~e0_Tvrea+zfnQ@U0p2ze?a2X1txVChM_ zP1KQ$TU}LlqonBJ>E$PL<(m9C*naZ0L@p{x@=6j~+vwi%I}+$lp~5ivS0Jfn7`FKH zFz(bcEc08%`oyVR3qiy_e`Q}<9>eDU<|f|o_$@$FaY-T9?}X{}2-sRO@oY^3?wroC zPz7T3>35PiW-nb_1Y&t@T0lR&JHbL%0M0e1c3VE_OC delta 3045 zcmaJ@d2AGA6rbI0yS+B0l%sd48d}&wDThiar%4wIg2rHk&@QnYg%%iS%ZE5iTTJ8- zgz^d{90CfBlmg-c5-Es@vWYCP7~&+z82HB+5+o)DjSBdC-^_MfihkLhdEYyJ@A%%E znTJ;$53f454~|jfI#p1c9HMOFBSSXWmol$6F#2-@PMGdM*K2f_X!<;-fJRY zUIN(41tg*SAcZ4@19<=!QwFA>4Mka0GIF6!_kTQcV2piZBdtt)j*OSo*Kq3 zjcj{JP8Lf^QF00mANQVZBi))H@U{wfLc4A_iM)wrIHEDq=ffn zC2m?ak>$50zDAv|CsWS2Br2Pf#|}-{RQhOAb=d!~$vymEpWGE$`IIin{lsUG{;au` zc50lK7psJn5SBp=Q#0uM(o~1bP(t);>71}6M6*02W2BmkHhA8O@N-HB(qm6Xw3Jcy z)H!iX8Lp5KqQ&y;ve7*Z6vTRwmar=?3vgJw=Moxw8V%rKo927&`9 z!b>G@nQ0R8uPaOH8yCRg;RH27yXH+zF%)*-f^JAL6vJ>S2K_c~bT_Tx<(~eKTWTQ} z=#au!+Fb5Vwz@`>sN6YpxxA3JR;2fl7F;CDf^sTel(4}dt5sAK(gkl?vLUg!mK+6; zX_mJjMW7>PJE9w9xPbsYtnl=8DPi?4*jZi^mb)@QA9`i9oV z0)#&l`84gtzA~Pt81V$t)|tc`0v(qL=WW2LvkE1pMxAJ3=|z+RS+E% zK@8;&t8$Wr!DH!@bBVd5sM`GG-Zmw*Zl?((Xhm&yk{neGGoK55(B9hI)bIwAYdVx3 z;qYedu(8bQwsfvM?9FMn1c2jEEKGSWIKkq&+&&B`&r=I>LV~L6hQ(OqfjToBgH2`5 z0lHH6jBxmo!udPu3t|u&!@N|Voh&^f6u3qltgyc}C)KJ4dg!U@?W>Pe;(C4eN=S41 zyFRzOu@=yRL5^Cw9=+Nfqj7HtTC_T+KiA$6sJ#rEwS*S*e;s?zMi1T|K#gk__#dsg z66Fw1p;Az52@|QL`80F$kI&+^th0!M28;M6Ow4PvI9r;=(2yptX}P6|oT_lDDzGoE zA4YGiUqIfa(f-c$lVj|t`;(2WHbJeMcG-i13OCDJ05^!dAIRGu^5);RWw)K~yc12c zEBn%{BN;Sj+d_2W-ScVS4x|U$7Gu}cHiEWyX3({^G&;Y1wA^31kWN?IGHG^mk_7!}hi7`}sGy75pFS2|Bts3t12phVP$cCgX2Qnz>Kv6l`uLr2k8qn!&4L00a z;}Zd8JY5D6;UQzN4W0HMD6ZfR=Ox7)x6aaMx-h-=a>2Rs{8;lRflL>=kH#DvH=~CK z#1i%(`(LVuFYJL8pwVL)NX#b;!zZZo;EbMtruwr(=Ay`)o&sbZrwSne(`oskk*{); z0TGmbIencWnP7zO>%T!cZmF-+{X^4bm|ciSi$@(Ppz=8WUWf)<_TWMTMqFL!(~TGU z`9rZkc0C*D{^4Cw{A9RsB$d9}HiDj1rtN4;`@HR@Jr>nRt3!7C)2#_A50JI5JL-mw zLdEUR)3--U61eT5Cv_9s-F8K#vF(*n!l_V2;{dwWnnd%C#bSUT9ZRF1+owAfs4D>Q zHukrq3H-9Mb!5@|$6iUmgz?i#D2kJ6I`X4=&{$d-3#Jr-U9h8LI=y?mf1<<+^Y@{lPPNRCp$# z6!u+K=H~=HZkXVgy9I}rzR3#nEdfq~dygA0^=zgCCLua_W&~B8T`1!Vo!#jGPa)g6 b6wHiHM@qvZd>cKJQ$PA>l!L@jP} diff --git a/EMU48.EXE b/EMU48.EXE index 8404c628722c4ce8187ca124ec503eecc1e2026b..c5c3586761d2fae0244a697b896b03825b2ee844 100755 GIT binary patch literal 258048 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 Vz_bLWB`__4X$eeA;D4h8{tNwkLGb_p literal 253952 zcmeFa4}4U`)i-{VY?1|by$kGWl%P=-jRuq&s9=)1K!Bi8caxA{LBLAWZC+ayb`{%* ziFdbTGj2;;e5!qIpX5cK`c_+PYx_%3$tHm${1F4lAH}wS|28hx02+cI`+m>N-QAnb zCQw?R-~0Q0Og?w-y>n;IoH=vm%$YN1W^VuHS}8@6Bpt4BSdyA>r#~D29sVbX&lg>> z@gnKv5wBm_lvMosm1WNFuFQI1#r@w|anJX%?!D*x-@o6L^{sDbt#E%o>$~62D!j8a z>wEVv|MvAp<4CIt`s=%XzI???U)&VAez~FVrj>X<_Tq_~zO9Bogu7|OKW=)Azn{73 zaom5o;p9!1;lAxJr+NI6@80Vq7(-!fpCd`dNjfR?lzDa}&LK%o8kLlWS5Uy7#Dj16 zQ?ewP@Mt2c*wkl1ABsS9;(yEVMDg&46!^mne~;XwpZV9t*QZDgJep4Gn#F_uJwL$n zc|vuFzw2G!Ugg5K$3IicMP*g-jwH#Fq-EEySbmS|9!VN=BSNX{Hua8MqRuF z@Gl6ptMTZr`Ljt<;QAFSSKNy*URD!mWyj0fLGcjvtG}-(@D&BVqQF-a_=*BwQQ#{I zd_{q;DDV{pzM{Za6!`C;Kx6jPvn6LX2F1?j$Ih0jvhbf;Ww3`Wo5#$S+SfJ&{^x8- zIhvLKb(fq!(={r8jw`*1hRUJj+yE=KT1yv{*Pi+oMwAt@hsJlcr(VjEB-yhAk!nw^ zwMml8uyo1Yxq(H>=B&0X$s2Hw#Jl>&3a!(bvFzAvDX-Oipz*z`*%aXo=CT&~i>*bD z^5DC_OqR-n`|-<+PaU5vu`+zpjj>lrj<7{P8Ug*@uoh%+M6V<@czb6{ovFQmM}N=j z-B&oJ8cE9C-Au>_|2!p0QUh|g27iOM;E`hz@^)RqER;<}l~fY87yv)FujhRv;kYs5 zDv*nfHz7Q))it(C3h!Y?!n%<@v0i|jRc zfrKA>`&>56G7iMQM^w*$JO;w_di#7XtIa(YHDp2M zXt{{(4BogRS>mx-uwnTpv!$G!DLtF=?X#s_ALlQ0r*4{pM|M`(8U~;8Dn0)Dle^~o zs4fbx)q#IXK=v|~hYolT@_c>=#0TV4i0D7m`3>1@i*FQFB-_>6lYHViwoN&la^hJq z>Qtpece^(LRHwSK{f{Og$OiQG{0!BJ_)14Im7-2}DL8lPtUG=9bsxm@bg)JtViW-r zW?6V_wnRK#S`z&GFR1X1#D%3*5?UhX!mYv4z-<7txuQfIKwEc@w%(9Kp#TrgEVP=d zvh0qMpc{EKzH=`qG;Iee0d37>cZBy1syR|P%v@grFFF(}2JQ{szJiw55K^b6ICGq^7ummEX{me+8klRv3 z=7A0bT6ka*M}Y^Hg!gk8NKKf;rA~4ZMuSolW|7p+QOK`6Y*|P|2v$*!46SSdWmW^; z&D{zHLLIEOyz(g!nlaX;pQ*I#^17-&rC>ImLLprY?CnmF9AuM1X64k#)iTTU@4z<- z9f?o^T{Q}Dc^)2-2R@n!02t2f%V?ww^A0qvLi=!~Hr+?f#5m;%RA!kqBe?K#X6d5$@q|DL^2>BC z2cqBxWwRkP2K<`gT#Numc&~`V3Y_S^s0by_d`|5Bjqd;gU|rGJjR#6H5e9Cl^^n2N zfjI;)10~|XO2T`2$(#i$fTIGygnHwf1Of5-cGVu{Kn@!m97st72uQ+#*Z~AtIh=(m zkoN?T@wvMRc)eve-dm3tO0)$sXbVL7{He60-a=h(Zs6uU@{@toZvdJd?V<5g0q&Z5 z!RhCPI2j8GbQ8e*v! zZoPRA;{wW| z4_x8Bm%8|3RZ8pHZg_{*Op%4_cM9!>b-Jz*PDuF-l5XS z5qAGWNO32{0CHxh%>f?mNPPhB&{B!==t&$-nn_v^wvenB`4mw;0pydr`^0Zp+a>}4 zdAYt0_og=x-oo?STCXpfduRPmd7YFazgSMw6X!HKKBtA0Q}^JUo}irmem*%(Nu1M| z_?(=S)1kpRt)-kkIiH-e6X!HGKBrZbQ}5uM)=^I3^T{bIaZcv=oa!hisdrF4Jw-Xm z2tQ{%WhBnY5}(skl#^+2PR~$ISDa5yro=g29G}zklvCE=oEj*n8_p*ued3%hiO;Et za+)$Yr)MdrTh1pZX+TbF8nvKktIFW{?Q8U)#+lK8%+O!8Qg>lS<8}7id4KUdGSf80 zOVvbml&HWY5_Lus^@>C<4oq~Jny3&s*Bf8wiEciOOmesSEH5E${SJs&H1r^n3*8D> znC#ARYC=+8nMF?t(MQ@587Q_o4^ecV@#Sc4JW-}dRM|Ke+2wAn%uC&ggovNJ+h=S- z+)CC>;7gouBE3*9g`63$W>-WBcOzjpPuMn*d?b99SCN*N)VU)r;pHOX#xBHfvLQ9o zvzv1Rd2f(V3LsevNvNjT_`(GkmxS}?tCFx{fMnWCusc$hBY~FiSE#rxC+NnbL<((f zy-KNkmd!||sjVzEQ5hvFct<4a1mRCY!SY$U5Zii22^5J^y-YAPsjpO1^J=r~Kx(cZ zv98vSQd)ablp{&#`dWi2xx17@Nj}RCK;u>8d=Y@O)p(T_kTC|R8-wcBkCFieuv&x3 z0F%2-;PNalkFk4Tc_wH9X))UM(XJkW&#s_~&YMwmo{2-ps)Z6m2WX%(KSa229CEig z*9j~R48&rhNH2Os8}*3F(L&OPoL|QmXdisQH=ahGte-TTs!V~3}*Saz-oa(~+ zdU_T8eJLAnhaQI_=7wwErPi=|Qj-k>KlVUBY)=_%O5U**WBijw=Y6(v6zMO_dB*z> z_vm>_z>s&k`Yq%HQ(&8p6iIGJr00k-iF@M|Xr7!vk{Lq@A0L^9Ep;FYM}U9Fpe`MD zktZU7+VqondS})|8#vgqiYRX+8>hYMLDa`Oyn6%dDHHd2X34_6ky1EKu)dWz%ScLw zEgr$DJErmA8a>>0>chQ+;}Jn z?+f0x0RpUm2q3DWb~6>O%@hF+*hJU(kIz^e2!YeJA5xwB=lw+KA0e*^qeNk=cLx>t z362}LbPQm8=(oM#_c}x^2aonM!)s)W2)11cIHXQjIG+;Vz|L7!Nf_l?ngj+)S9nnj zKaoLjWF|M!#XcyU!b!5{YXHMu=4fyZqAVkp7d~h(cqwO}kt|LyI|RmYNCR?-0(%d| zZF~x30<#&^!Ug|X#7A8}<4rh*h7KpY9r$ zuXm5CpPQ6_k;{}Xy9_blp(61N3yBoUS95VWBA6_vEG*RCMKoX{`DcY8C^&GY7fE$EkXrS~)W+^&G%)>c1K0XNkEa0QkoG z5KbEJuPMb797^#1?0E36a_+4NTV4b)oq-Y|3yGT}|IW4GYVm@0RaEs&6xwPc`KAwB zmZ3sV9zYY$LI@k5N#WG!Xso%I8de5E79a#s%y@)h_6h5YzzwovIf%T<=P<1gg2Z9V z^P&j~867POqEk`WI$i+cMhw5DVEI+NAlgC~Ob4Fwn#R$@52g5>Y@z^9A#8m`viBDV z0Tcq(LS|sr)*3YBbb@tY#-w{S?nSbv7&nZmN#;EM+`Zwj(tnk_=9@?iu`>m{0~jO{ zc{3*t1=fuBw?m1Y+bjS@!{3qZX1TLDwam z0t1>-6xdS$Hb@%$FEBzQ33|~(#I;iUiRXG2Az2hg86hOZi=J3$uy}EBUL=u#UK77u zz+4g&Fa`)1y~r#yGA3L^PZgK_iRVgs-qF%yFJ4gFMC)J>g22o|9kjm~#*R0_4yWy#kOfsMOVIkW!p)LKo%IX|3fB!0S4e-9z-MCD?3w3S>sAaELD8rj8A~FxdHE1d0jvy!g>m#k%4kZZ!ZCn zY4!%0HsBVYeA+sZybsCO({nVP+P+bSVUioy#&Taz&ynOP4apW#c7{o=ifYb5MB7T6 zJea~>W>sn_O|v@lN?lU znE3pl;Qy=l-H_p7%iSigtBQ;7v z5z?NcMg_O?qWjT^z@a6PMrj|=C=+olwMw=0YOg&;SQY(_Fx!cK`?9f+UU5zD87^2@ z0kt6KWGD-;g7Q|ppKWKo!C&-*!||<`x;!a&DEq&p{VaM>%S%an_U)3#|eRsVqxzW$#6O zh&gE3(?zV*Gapd$EM!x6o8lQaBB?QdhyFV{e|Hw6fjH)Cq~Q)T1^}{>SvKRA*NHhy zb0v((8Llyi9j{Uds_+rBTJ7k&F&FCUlbY_SvX*d=gl;t zam8wF&(LT?-GUXv2W=3R2h`1k;CChxPm$(AuQ~f}MJfD(!jXEbeV8Ua4D9vbFaM#% zn@ks4wNn+`kU;7vHlEvr0uN~t=9LDCOe9ahmSS9^x($%(@SngK({yA%q3LWq4o+2B z`}x;(?lN^yq)9A>zdZ5NBC*g`Siczc01r;dF1A0oY82N%;xNzMD)itcnk$-Na*e{2 z`^*BG(5OC!8kao>QLC{zG1pE&{(=lzX*8vYFu@~ww;B^4=Myjsdr z-ojTS*$7nCjONlgsYL?|}NtM^n!)drlM8gvAKua3Yiiy&q#5 zGgJ2b9pAw6_fa6c&SXy~0&)YDY+jn*T*ECntw)keN&$|0rXiv1`A>?oyK+WF8YH0k zA-n%hy?@S#N@a%R8sW2_oYg_Inw_?juqsI%Qc~_gC19>(mnyBvzJ(vM#a8p|4qHg) z!$YU-6U32n5BlsUD%sMs83?QXOKt#`Z8lF=$?i<9GTR+OXK_&AooS8*C|pU^cbu?2 z(fCh7!G#~)0=Q+c1H!oov#FUV*8@~83#op>UFRew%6;R>8AdsxFL8bw>KK@wjVCP- z*5O92vgfQ6UlGo@N+&!?^bY5DVjnDA3E|W4fcJywhun{S(}>#^;4f@(0gb#Z>uG4@ zzG1N1U+su;*x>djs-6|BB{AxR-wqqU437)!>&aFY-n0Haltw7x--Z7V!pT5JICGY% za;!f@qhImvfey;xs`1VI+-D@KUOp;xxv+UljK)$Gzvp zz0VczP6_t~!eb2#OnfA~7g`RXsjnydAk_M75JyU?^i8(n0k^Ah^A)@a6mz$-&gmwX zQ3*_%Szx}Hq(f+|U+421X8QB}1VhAQ6*^|5!eaXN=DaW9KZ9~Xg||CbpkBBelnQQ^ zftm95G7CkP*R?vFD-nTQqWJgStjNrg^0qXJ&ut}67d~^}D*ipd9GN1c8P{>}?s)K4 z0eVI@2mX)>ob-?aLd7jJBSB&g-HhwpcZbRgDF0Zf0ip9kwgSpF7HUT5*Fx77P;Rl% zOoWaLnF}Zrw=n|OiqO<1awLE==FVUbOm5t{LgP|#H7g+T3`sJNR}=WEhWG%+{G^E2 z1hGE!BUm%I5glqXx0~}JaNZVF(lW>>Ujdm5d8mQ7!rqUa>4(4T8cN@ z@!sIXb71+HVTq}Bq%|-;z)&|A(y##n!U<~$NxN!rZk3EXVTyMHy{E$M688ac3X*}e zYia?R++8w04d_wTQU8qxxULu1E1|!A7P$cvZW?$rop)U^6c@q{Kk{muwES9|^kZDt z;Q0pJ$HL$zrD^|?v@ZjnlT*@k149PArTXVf^8tHiwzz(a=XPACYw(WiH+09h(YVgy z3gUVl7sGYQjlf0H>5?EMb;JE7r>rHoa*j<}jH?0H(n&Vy3S8Y&ZBpPmlykC8+JP(i zdgOp~?y53^gYUWro~sDsvnu5k;7J;P3jqO>qwt_4MM!u^iYL`W6Je@* zCZ1H^OgyQMnRrsYGKEX#G@&{S~+`5$f^oxdF*p|7y8%ygj*d`>WumW^*CFac+3B$IjTp;7DU&P$uu z>4N=_bU*qN1+LOpIDFipD!jMcNqrZ_V&o)1g5s|BwO_x*Cf$ka`?%_H{THq_T+Bii zrt;iCh0so0pxjEUFWy8`f-_d1aqDJW7I1r1(u(^N*iEdU8hSio z&}jD?Y;3B3I>31Q+#`MY{1KIA%WHe|8hp&@_8WK@JLaGHsnTk=m3_lEovqgSR_WM7 zdfx+j_xqJ$BjtxweqBlHq2$Uiw}<(f2&}IuAHOiz*AcFQ+iCvRM$ABrSq>&(Z(*b` ziXATv@8t#vnyJNe%cn$3vR3$R%Ii(&N^8=%(v}Z&r8TjgaHTy0<3H<#f^3RR;R3MI zsjCf>A8mCb^26jT!l(w6%{GByWPX_@6R5WUo&sBTfFnq5#YiJeDKWR=jfC)wo5`)X zE#_7{jY7Fw@kw$ZCT@th6;DmzRt&iRBoWL*69Kka5aF*FxpN{!=dp(%0@FAWM`?ly zYi@1;Q84^3XUAmE?@@-*1r@e_=npcc+eKH8 z6zcphY*tI}UbIBnT-c6BeixJ2rI?aA#tlU5ZFJeZexX*d{@~B{(QpXZ)8JFJHQ+`@ zFoL#Z5oZvPf|I0_y`}UgW7ME?jTBurS9O+pvvU-YG zsh*&w^6GnbzN8pi>;S9_}H+dY6S*9&mxfm zyK5rbAPo-H7LI%_@mE_fL5ebHJS?~geUWtI!Mx9^^>x2~2`wvhrMyXY1YiA5vNUOm zvRRiuqV7i&{*ZoBx_Fv*$0OZ6w*V{d6d+W13_33<;po__R-l1I&`B`aPuL)Pk~c6r zaBPqu0X6{@n@dW9*K4t%aDfdyacus8QC!@}`H~A7IdgPCs|4tDtLUWLga28nAr6HL zbm)nrL#_&6c3mA((Lr6AwCGT{K!=_&5n9=v&dE{;xR%I$d{)KfoQLi?y!b{Daw& zZN2`70C#UBo4Ew82H;Q)h3o0L z=M@Aul4l_)92mv>jP%m;EP`vMkE63tl*YiX)Jh`VP`kWMcm@k;f-AypyGES=} zLW`M^mPJIeqvsGU4K)XEBqZ_Rq-74=#OMevx(6%Mj1&OMD2E^O@#oQ-Sp3xB=PCT+o0I>#m*!S&!=n-s?N<9Rk| ze34Ch0oTp*F*S(mTeuo=b>Ir>myEZp1Yo*D_r9;aY{ugUgSr5!at_mBPZOrv-Ay z*(vnKB<|tRj{!Uj-mxkhyKmANPs(&aTB2!>W@z7ssnn-*WMqXd@CpU_&qo($-Kkp}XA2|DBlcN~>NdoWOWyw_=S-r~~W2XR9k$ zIDq*|TknKz<&Z*yb1w$8iUE{SNwTP&Q+pBG{SWW3NyWHEp-ho$v-lZ_C&*B>c5d8&yW*GN2FC3}AZqE!}LgbCSS5mm?cbJl})4`aDxvQiYXx@Fni#Au0r`&)=n}Dor(bayzN16@Dkh=j>&KIe}i+wbCPphne@YNjc zD`hWDWmG~sd;f!DO`}KeLHS2@cq62N{cT?Y`ps|@JumcCbmz(5Gr$OABWe>-=OPp9 z7rsRm%Jwk17cI70#rPnvJ&~6PIWj;B(C`2gEhgDRmBwoskg1umYOKuVqizh-$uCxh z$1Tx;FMul@PP))~ksXw{KvC{7MGz<}!di zAlIN52IN7NhcKQqjScaP{s58#R)g3=J(X!OK17RWbM-Vv6C*=D`efzi(go;FO%)D1 z9|_agg9aU*_gDWdH&BlOb$z)hcWce*EUdlgYfEZ@5RzOuNO=jlq)e;$khS?n%Y%*E7v6g)=E6-pDDo_kEgZo!!Mn?L4 zNj)D{m1m*A8FrTLKtha%l|V9b$>*<-}qHNZaJ9n|w0IX>i zTpL&*?!6?24W+)oB<@`esrr~oTAr#TI|moGqq zGD^TD9p)3A3xPYWW0(pK1$&L6u-O!bodpiMrokF%_0J7^1J#%Ni|0u7=4_=W8PmXZ zjubrC9FdFa9Le6mqaXNnUk4Ox&*P}v`Z=_?-HIp46L76$pTVs$%XODhKno<3R$KT& z6lV=S+k+pLiA| zQapdc&U(Y>Iyg|& z3fPhC6OM_wUvJoD2Q@NLzg%4QJIVhlBI5R8S?ht|C7U&-C(=^ERJf5s;hRQufxO{N z28qLYuMF$;r(ib4`9LXj^D_K^%Se*OMQkKSBu=$E%aAK@SO}Q#S|rU7e;Us1OeGH{ z`pXT7TzCUgeW2Vn)m4xDo*Y%HAV}9CJ1q5}RPJjNn48JzNyUn^ETm9PX))ypIVeXL z!j$Gch~9!2!tfNzg1c#*xSQ9Cd&U#E%bq@}a!WsyZ)QA$Uo427_CPOolVJt4jwa{$ zxKj}G*%jqZ58~T{mvM%r^~Tu_XE7)Ms*=&Yemt!!uL+g*9UOPC_FYN3OsZ{{q{}70 z`Ji9-bHC2!Hw2pY-2N@ouEROoPabalD4o{m=6)Q~5f@;+S^vYAuh8Wke>ek8FbFA9 zQ678{nazP)&KD`{^A!hJ*^3!i$y}9;FBSNbyEUbK>@L4y9GZHGJ^1E=WVl{Jb)V{7 z1ynKIL;$rKWwV)zV0YdwDl9Tbpln`9gyZronC!~uf(+aExbqQY-~tRn&V4=Jbf9%q zE(uYk3;rCMDX(q>bf%JnrKoGX3P~w`IsBtG?o7^?<9Pmoct!4uF^*a+lvCDTjrcOIAj|CQ2_`TmXcl_5t*7EpAxk2qRO=?vGzmO6 z>6AN!u{6$3DqOaPx0J?pU!uN`>NWN8d9*&P1M6cwK17Par3BpRoY%$bgD6H?jy}FB zh;V9E%+ypxp;{I8;3sxf?(_N)%i`;Gw?^ush$?d~Hs(NGw7>(&gpTA=W-L@I#o>I0 zbNJ;BZcqUQGs%M|u5Jk9bJPtl6q*PM>EqBNgr^TG6LXunaHn-ttwc5v19c*MxyF|^ zB9w^#Ymbt~t@K}Cs=5$j!ipFgR)kl%&$PVeMs(1KAbTXVeXd+2QAqGw*+bKmP%SRU zJ9z8gzs_VCjYbo#GkFOaLpnLJ#$?d)5-Jdggq1SS;^}5Eh3u_{<^Yd|=MkW+*2CNC z{&a~nFbqzcU|5n~A*C;(`yFHjT=8RbGsySkj*Ls(7{?kV>HwwvC23RCU5TG8T|y%-jqTvJ^@>A-h8l?{T4!5e9zQwSjCt^&ht5`suEl|6T0E`-nqW?VUq^vboHRr(54 z0EQO-L%nw9O>!ez#fJ)rU+A*Xhrt;RHZYpa}->h>#5?OTv=@nh- zr-Z}qs5^-Yh9=a62jm`fW4XK8Brl)j{g`ZiX8sKF4_=-FrfNck4Mv)^M>-eTqX&wU z$uSj6O;8!=1c-Yo6%0JQKgLs}4AA3xD`)U=%|qW2n6t?Qp0HbklyK~V;LjU`tU(}) zr4r{r7XDH+YMLj^J9(d1ljjaMHNZDUB?Urgloow&q!dEcC(Tl>TaA(k?9i_xgj`Rf z*vUU;C=m@pHCWOkpRNS+?@_0}TM$ihU8{+ew`KLHA}oNSwZSMU&vzcrIIq8YKYyJg zUW1Qa>o5MEl(Pj2hnQ_Y<#*6*dl9?AcOAQ5=d04O$Mn7*V78qwEaHg!?nKi}P*Y+i z0ZOUe*|6Lu@qxJ80o7_sY#=_^JN+o6GdNluh{Fx@JCJE&P>Pn2ksA;L)75jDX+j@* zKqmXHE-&Ps%)WcZ`>|^@dwasAeeEM;Zw?&Xy&tbzO{s%y7-&i z2tfGUu*!t;k7%g#8ec~}=S&d{YY$%squNvusp&oB7rL_P5Zx|odXsKrn>N$U(DX9h zQk!1Hjopq>FT`24vjJ}qLlHv)H6}DlvK%1G3b7&_PmKFU%oBD+Ws4#2RJ8(}VF|*= z_>#fS?$0i7T7m) z>}v>&!%mtoF92i|6+n3g^y$K_J*KUD9Pxc~2aZPNdPYX`1P>V1oPe+l=&`o31b{9_W=Uy5-a;^vQby5o_~3v% zA>f%aNExN!LIPzJLjXQ5C<%URZd4hChAJ!(8Y9H5;AGQWn3gok=(t8giu7M4fJqRs zQspNcj)58(EKwJzj&i_g8=W?t9)!>;q^y0i9p!c1TI9+pifz@&l~_R}B%7&2l!3`C zoPhW?O9vHlz&A~9X>p&>Ib>5&)>G;#sgnyuQ5o$kc_jXg3Xuh@e*qUE3l?xoGn#2-BliQ(OQj-Jq7N=}JqT)-VOG&X9^+z4 zkq@wRf3!RAvvbon30R>!(Z*&v6W^2qGe?G(f^$%{6g^^dMjlv1J~xS06&T6+{OOaY zDp?zh4rSOJhjMlQTy!3YS(UWF`D@f7$&Z+Ql!&g{2h{N*_|BbGsZ?9dNp3Q;8nF3; zhODB}Bi0^lT5t?jCm2)+?F#DZOzIAd`=A6_v3DrsE~b6aZedO;2Q`tu++xf?G7;Nc zMjhk6Xq*ZWhZ(Ji0(jWcu^5!mMp+n%Vv9zheJHh2?h;X!F3~ows0f2?7xs2ebyCX6YI zaE5F>oa}H?$BgJScdBn+8eRL#U$yvDD#8mBc)3czvc&=$y#^Z~n?=}$_X8U}kp>tE zY>++0JV*AL{A`Wn_YPYP-^uj&E6e;g>9w`^;jCAI49x5-GR!{ogpEvVlT7%A`;;lT zLpPj?IkoBGGEX)(&&vdnGPzloZ$GjR8+brXT7`tnLbhUY!zyxGp>Y zB7*5EY+Q`Au*qb$9@3#7M8Q*9vEPmr{K7iwN6+-^uDe+FOuG`+=+QQMGr9YgE~zt7 zm2uxpOf3rpC|8mHx$;KNS)4MQ4CltylU;v+M2q-8$1EFvn~yB3xIa=%vqj5U6Q-+0?>X- zpuJs18w`^Lym_Svt^xaS#vw{+80XC8!!Zt3eQ*KQ+5z~NmO+-4u}+o8WqFNrBrPAS zU)uyG4_lvXz>TMvfE4+9`Dg9c^n4vLlf0$?QDZE!7vu+vG!Tb06K|m0X|g8+k?ND? z&ZIZgHSO@-0ksINnwv>=Qo{p?%XZTDmIv_&qNUHACy0jC0U=aM-@(fcvR;t4tmfUb zHSPCezQh6uS@Nds9C5qD=|swqnMfpWY8TW&=rV+&BBsVFXgYNJx-@{w_5@Ha*ry&I zaSjA2U&4UrJsWvnOuUM`1+O|voC`IX?-7|J)J~aWateJ6bs+#lnNvAM#%IB>!%~LR z{RLEJ9No7dVT|suO(mjx!?~b06ahb#?(^{&NB5P;m&nP`%BV@AB-um-ho}O1)1DGe z^hoKjK|7K5A}wh%&xHdK5~a)*lqB#ag372wyVC}&)N$D$;+KGqsMz<7r~p%;Ra4|LLD7q~6x{|rci3Xrw_9}vr8@|W zUD-fsr7UlP#7Zi)J2L@0bhEsv8?RKGr6o=?g6yFjif5KLb>V}f6zv6z4e_BQgsBEf zYcF-`@D3EG4pkjDo(nI|%YR4zsjZHCptL0r8Slf3c-TTVoLLIiJxfig`3pRPb(7|i zgh@v=K%VK`^XiTL6sMEAn2o1IoMlhVy}PjV5wpZ9O*uIAM1XHoAq(%l!DfmT!oqGpSBG}Gby z6zIex(p1r9yiu2qNY`q+3^2>b+O5gX>lz97&k#39F|!1?Q9cb&`r=uQN^uG}dkv1@q zrNEQxL{yzz$H`92jTPqthtjg0D>EB{z-waxSP=+_jJmXxPjk-OKV*-878McD{si+C!J25z_wC z+0N(j?g)(}>EUd^bBWllGrSk6utr56RW;+~#-A_7-V7h|ejA$rRIsjK3a1r8<$dc@ z1Q~Fm4T!TAkhs?M-Qn6e602~L0LI-XI2@tihz`rM8$IL2$cS)?4qs4PR{|%L#LT)X zf^Iyc<_2qn=Ni@w9;mJ31GPv+xE@P9ObKEaprMB;XneG5OTN%1ozsxNEjsEz*|1+bvluMq-(}OHfUn;#Qe|E z!xHm8YgT^h$}4a>K(v--l{l9HtXfB?AMB5S`f)Cdl@P_TmvszJelN7?g@VN-cOZZ1YNS88(+ZbEZ| zxY3FlFn?yvDP1$UP9fe)S`82JqMD-jV}^Yn-;lW#SC|z1nNx+-spluqlho4LVx^nOOScT!4NVg;L1y!EC?xqhV4jZ@-jAE6;)a8B zCgJ8lwb*D{o)0MFMU%FH&`vO)UKA@@Hx+G2nR6aRt4c=U7JxUcYH$iD72m2&mvWLso36)O6T!!kmBFvS=nd_z@nd=f1ZfHWn>5Q1m3Yw|R zH4%@p=df}3R60tP8A~;ur+Q)7R1Ic|FEk(v9uu|Qt_$O=tSDzyrKq$=Ed(D%6Tuo? zXbxzy8Sq1eOd8ahRT3Ctg)#EN{0)ZI;Rwe`po^tS<*A+@HdVu!B~cQ5fyXbO1TM5A zEeYNONd}PsBQG;CsM4AOPKEFFm&B#ph3=O?1U@)wIAS+^8YA0hUlQ4LB$Fb{6T}*j z0c86f$T)~>4M$^Wef(vi6~&1d`oGY?w6%G0BDCTK$Z+CD*zniU6rlOm{E@U1mTO}E zDA$#|(d?sn|BPTDAM`HfI3xf zeve0e;6#BZn-~{ytl%q&zR`peO(XzPCh_s0^kDMbgYg84N!ab^zT0)9`jylAh=c`1 zE@3weDPjLi*1M?272kb(!%acrjnpP?LNVE(_wVE#v1ulr>qf&ufNj3mDY&az#|jOE z)+XVog%rPTEtwbpFKMP$UB3QK%Mrk7ONy0YT zwe3DKFB;ziwKl$wA2JteyXvYGxQ_6SwJZ25Sj*86FwI$lpUj{UVs}vcgn~2Hv(T5;Lz$S|cpXLH6G5C& z7EsR;<*)kjL{ruZv%#gDvRbNo!_Dt-{%n2|H`QE*2+;)8!Y?#9GS$_aC*({!ku3oVCu?9>VZ9v#M3L{uOWHxH4i@v^zR~+?9gK7^R6Ou8D43fi>aU5kc zvc&_qJzmP8CW1uB4U(=jv{Xj}mQ!idTUH?;v>23XIfHVqEI}!W!lC&pQ8EZ*ddsW$ z7@F4d041jageD4j&L})HBDO5U>&n!Yg%k>OIjz)k-3iLXj0M6#FZiR7td2u=IQ8k6 zL}CAcX?4Ja$~h;GZEjN}9fQHJ1CYB|c{hay`bzsfrOq-G zHX<^`&@A3|K>I5UT|g4}tV39KAdWrMu|#|UuBDVw(G~9t;0?I1BGF#Ky8(11Hh2>h zk{nlU8Dw<$CLx>=MR;Z@9Rfr0ojw*|^B(s|d{o+JmX?ODAZXaz4Ins3d6NNWVQeOd z@+O^$)Tct)s7)j{LG*lSwhLfFv))4ZaAYv=f+?2{kcf8-f<#)$KB&Wl4`Ejo`~$yd zld@LXq@O)vlb-pZxVAkC-@zK2l=nC!KCYJ$XVU#P>AMfur2Yr7e}c;5Lr>E8rMyXL;cvGVc0q?#6@mCEQ zpIIKjH}7tsQSKX!g(}nNJ(g2-Bqf`62za%AFs8O698Qr0s@*YEIUdSUGw(Rj-$>+O z6H#|{s+WzPJZA9GKyEp>o7UnEZyRu-nMecjMO)~w8r?Pi2a-zJ&INxOQB5J}jHk6O_f$bar5c8V|Mn%a>*VV-h2N&fLKQPmyk){qI#o>O^9 z9S@mMJ}f`$<)P#}`2 zB9f&dVpS2zRuP#*h#>P!WIGjd!GNr%iaZ_Ma2&IBW zz%Z1<1JdvcgpyPNM}1m4$xiS2(0kUEdgsagqfWA$Q_lKsRwpj0GkX~^=es6~5i<82 zA}v_yCIP#Ib&EA;sH{}!Eo{+%L*7~`Q8T?cm-refnlZFd^J`ZUh_u zfFE@ZI@;MQ1yol_n#$tmwzAK0gu@rgKXiLONmyC3T3L6awnPrk0=R1Ndk&9UKK?i5 zQIjXR^y;eZ{(56WEW^gQ3}^5{U09jwO!dZR0FRo<#$Uw&CX+oC7aXA+&F3-!EWwU* zSyRD!xPRkxRW{_SvcaaxhC)>~6sfXdI`;$9dOE@jEazH24tnoZn>u!3uR}4xECPhi zc>-QHT~rwdZwA}K^Z|x}BS13)WsVpAC6ToXZ~2G_UXc<06s`5(w0=g=`9 zKqS?D=0QBlp8O%>ijnJu*FMN>=EIpUcn>g1j0%P8j?nr8R}WPp;u&aCR-x4no*u*u zcx+;JqPD3=RES|GTC;3$4ei1x&dzpm9YWZIwn6a0DAAVETgvu|3Bt~k=-+68hSli= zy<$rKB$^QU+(qQ*|J~c?E*IR{}Pg8?2fTW1i)S%V55P?zknx+P= z(WyZyXLRuQ?1^gW6c;GY zn$shj$uz8b%--t_z>qK&^O-SUySN!!s_9ah#RWY_7Iv%gq+Er)`?(eJ z4RSw>SRtbgv?{eKnLG`wJ^5FFZYU@GDf35`UbY($u?5Z9nzq^UrZzZdYFLf?6dsP5|XQRqhR;3g5BGJ{QzbM{j%Vu za$Eg)6L4l-zdPY)0untq{pYYC0xxAsi1#CqQ!Zp!2JwTxap|K z=sny(@=PM6I&zEb?hSV0RYjHsbU^GZaVfSfAWn;MDnI&6s0f5VS>`ZlLzcPv?F6)@ z$4FZx)`X18VWZMIo3?;)DDR$7+U?l6i7Y(GZ;x;kI|ox50pDq52n>mgu5IXQ-Tp5_~l>!Df%_38;10?C}B8?xNnJ?+wL1z2x7W zko*nrP+f|Z4u7TE)vR=gu+6X6u%iQT1W{fRI? zz{1B)VMia#s#s&wZ?Y$kkd95kX?TVVhTsw`ccBCh=MKP)SPcaK5$EwW4dA^KnL`ym zMmaKhCv13s88UIhW?nE-Y+JU7f<@PeL@0OR%y$mT3Cua+%nIx_0|=K)I1foUa5U3# z!eNyy@Qx@Gg9*2hT;mgRjgWV*(CAGJ!Px7aaf2{S4cibFH?mtdoyIu4J@A3y`KI$= zL|DJQ=5Tt=sT6t5l|U?3cRw6TE%+QBN5v9)eGOTNmRHR`P3!z1Rm{z!JyQ~vE zThZDtvdyLOytXm+`wc&b^@;OT#HIiDa0pLK%lbW-umwTKZB_YDIeb=WolLkm?AZ5R z(>A#?u6cMR;-6?TaauR^NJKyqhk^oPx>lX6jV&^Wt`^{K6&Es&(G# znzj_}AP@)o%2}v35JXiOL$ym@>90g>)9iJ$p6RIVbJ|G;DjtN^`K4SpJwFAp%{b8j zKG?CgblFgC>Gz11xc(bx4pW^|eGQLVm5T$0e#IA+@>P`VR7%@`>GJ`878f8l&h9RLdQKDnA+7}0s)&p_!)oKGQ>$oM-d zMa6PU(o&;}_rG4cp;-KEgrt#WF*xOJs4{S-=PQth65SCo16C@;vucz(x9Cos&NDqf zS+H6akQ&IaNRiMO6`ync0b1cH|0G*ujFLTpp_ny^N}sUfg2ra%)5`hDu2ep&ET(W# zTd1jM|1DUAT6aYDgKr~CsuK7IT|mvoDcFPfIu(x z|5g)SOv?}w67>Aq2-?mdFboXZh5guxmsIV+95S$WVjaVf zLyISA?Loq}*5Cxu)uF|A@u+QJkp}ax4J}B}lbFZQLKXDqIkY$gFU!QVj~`krLlzMY zDk|HfLyM;fPQt=p=#Wp$PmsLi7V0Aym&{LO^16J;oEsKK$-eO}LH5Bt(6FxG+9BOw zOAWRv;g%Y{k_(oa3TH8LiS&P}<}+5beMY1C0S%1p$EvFwAg?v%=F9F$4TXfZFv8El zBgTL7P{hs0w9IBuCLbF{)80nt8u)B3yjwjl;=LiCUwkgsJ!G*eDGr=;DPKO?BQ)*bzsB3^ofKpe)0Uce-k?6{~O#&?=mRTwb8_ z77HcFt1983`W{-lkg(Z!4{|f@aE96X@l&XFg^llPL)GrE_E;^0CvyGNGB^yd136sn z-EJq(JW}qrs4O0xH-?f%#>iV#S5Sc{^|@L$TPEz@38?B5O$VbRLieW_hb`9&zl7-XYg&)i7nDdS_0{wz}kvd+~sMWi_ph{D`@&Iau*GUPNq4CA^3`smR)ry+cqwhc=Sj z{8v1p{S)6O(KgXmFHME|qZ~_ONF_DHdCd5XV2IMtJe;I~>hF=u+PZo6Gs&_sp7<-N> zoEwIp!a>cFNTE&Htv!$G(1-?4)1*+_iq@dE>Hq(M?I)%US-SIOdwsJGTtRG)+kYS1 zpMl3vM3$W|+uxLWK5QR?0ICV;Nhzb5BIVu7l=caw&QCQNieCF1Q{}_1M;)H`|GVZd zqbfuCe%_x(=Pw_|(d62GBtgUYh@A8jH;mh{2;d@81l=Q8s}j(WXwMBpxO1%#!afVn z!&)N;>xYTNyNS=~YsCB8sJet5c)^g!!k544D0!cyHob>iLgRf*ZV$f%D7FGC6ZZHo z;_UIknvj7y6JjcwiC5m$LGWZK?aA!*(kh)j`1oEBy;w{kJD{!|$N99{N+49<5vaa- zE>ycoWgTiYwCtfHOf(C|5}?~tj3@&t&3-|ZW{>Za&8Rec^&V_>39g9s%+%@V8kD+w0VU^QNxLOP4bf-o+CB+nu)=*11ns5lFB@yg%cUniX)&GMe z>`Nv~%@}=RQ)QYaVBHh;VaGl4v)%JiYrk%u(xdYR>dlwcRfOH|)TL`X55j%3!2Q+# zui?(ZfBd;ky64w6sq95;Nd0@8^oKu)>-ZmS5?wui7S}#_SJIW-jJ=6B#_sdiiSWqx zSLsp>QnL(;?S%MpRM6dt3Fc70!E;i2b6v^^&{q zYA?kOpX7o}8;Oz&GVL@v{MhGe?EE3vYdhF0Vyk7U3-TT~tO$VMG}Q%}VD>kxf+Cr6 zw)qj1Q%LT);nxIGq|BO&(1n2qCGYpND#?5_1w zW`44GA>`a;v-n;_7+uYsC5*PLW2SOSSN*@2E}~NAZsp6o_8jtVaZM2E{korGW`L*W zYZYlv3KOQku$QO1kEh*%!%UEt`*BBpl%uLYK3`3ReO1fR@U83*hI{z}vq^ZH!fKx& zo!RK^#kht_)z?aE12Myeg;kjFAvupL8(~u+$!W2b&gZh4T&c?0u-m|llpGxn&a-5e zLuiW4lu{f9mo^J24RYP@5JG2zj$8o38!NCT^K!AzkMM`c`8z_!t0C`)5jp1*c2>M| z5th@*s@GYOvk6BBxPa4Ce-nzpTu)#ERNm13^vQ6&*}oA%$ymE1Z`e{N-b8qFG#mi% zh2F&%0)iAMErRJ~W?t9oUt>uEvz$RmoD_sjvq|rsZo-lnW%JYl1cs&i@GbR6&_9wJ zrMkUn>mmK9HlNNrErokM>pvB$y>1aY}H=(#ZpG zkZwJc<}BM{z!d^n5F#PGU07M*JKI9h)(st&)zz19l(kM|D>2 zx(^(dB}EDuXc3SFx7 z>)htS(UX!IiT)T)P80Mx-+BoC;Y>JuSGzWmK!Yl8s459o^F-0=SX*Av4EHIV`PH%( zr0Gm07C~1pop_-+3*k6FqlKDgZr_O)I3a!02z*|LZyIriZyMFL>v|mSiZVFV%D|1z zKM}P7Mx_H(eAB45eA6hN_I%VvVgxLLLK>=d94ICsz@3bP{B{O6JSb7f0io?uIK0gbfJ^(GsF0WbwhL}L~Ln1wdhRyWGVegOXBnODJ$ zf#DSAO!}~)Bc&~`ZGAqTSB}nU&DphnIv#x%3J9h7EcDh$+henRqzXSnM~PFrdX z#_j71@dalhjD{>ALC`=#6Psc`uP?7~UoRS40kt4`Lx7`(HkTV{Jv@@_(ki4qIBZMc z?+v&|La^$o7@<@fB%Gc@fo~jvS&;iN7+Llj!RL@tCT~FgkqK!L&n&hOud@2h*EYLA zpy2(`z;Qn1T6$rlSOEzb?EN|64Q$SUo`+fvo^~A`waZu9UthY=+s;rzYesgxP>@7|jQRcCt$j~q+>?6`dOT6pIsBO8s z2b5Zr=A+~ZZ>R+(^4WZ)RFoAP2xtGF4ng8J7xAJ*aII~p5=1fnUKHabcbUNUp<>n> zkLB+V5SDDLsJh&(6ZVT*qFReoOq7r-_D9Hahx;$+6HRw7a@Ir}2M&4x1vo3o8@h3P zAL`gir!=82W8DsU!#>tk(t0>813=j^9RkTWL_a~}S@bI829bBQiKH}|S7%t|G0!{W@ ztwQCGl!5RfEOM3LcB*luJxgVG!TW;gBMcwmb!E#{ocD`PJV#}gy=mYam2NIfB%T7t zZvaU+foRRkFa%n*FA;(MHJ-nU^E?V;VyA(t;C;dDyahz@zCRA{BzFmLUU_>9uh6sc zmHF~s!TEIfImx977B0M^jgwlY5Fl5rcuQ&5Bkw!i8#VkcL@!s`SQlq>dBaW|_fUd? z4>)Ka8Ugse^+;Muw_j(+p_a%bWt+W`cpk?GQnwg6k8Ci@-@Pbu>Ht?Bl%tTt7>K+r zdw&TYZKQtXY1YsCqukGPKKBM-WifHNZlK(STsQQkQfGm-@NH@fojB!=gj6}Sv79X_ z2N>zFO3?N+_N{EsJ)UzMub9Dqn^}0HX~R@pCYlRwCciG=*D0cdkTWq%MDD4(NY{S*)Nqrs@EB=ebY+7VFkttBbzTN@yAUf+kH4Zh2XdHuYZ84AY1dp==aYVtC&uN=JV1+$p zcn?Kbk?h1K@uQJZB$P0*Qn5HWl+TmgV<|@DGqw-lWLj*^m^mjeL`zoPHxgBFQ15jl zrHk_VU3si+9_S@+=oGX=ziR?baNJXX+zZ=7eCMD6r1bt7vYkkochYrH?!ng-M4uPB zg+c&5lWQEU?}DgK_$6X%5dtCQF^&bhmK z_Po32{XHM-`A{e{s>~))EpHIzF%qA0c23z-4%tlXnse69)wqh3oeNU-@ZXr%d+Itzcd}$exdgYLmjP@9UMbSINpx@cMrf*8<0x=+>@sUygGi zF3at!-6D+uPt<-Pp)I+tXr$t$Yzd_(0TX-sR_{Tu2^rloW$$E&#Js<|jGSZ<-lMLe z^#csabi_sl$1-k`PonsA{fpn$qb9l+OL+5G6}#J(RNR-CZBno~2W)qUB26M6aSm zNwT*=TOx0yMEBvT?N&%rVC5W{?8|vLyfRB}))KDD_KSdu=Z(NJtz#-kp)@G1NdcFqE9at9bF}{p&cPe&S z!q%J6`E)o53E$bi3A=({`!zi@qq?BVrD*iYXbqnu4GG zil>EC#%osa1H6i@L>ecdV^of2Vcg+4im#1FQ8;Go#V?L7%Eu8!71)jhCLX6GZNqU_ zkhF+JQ^>-6L|)ABp$P9|1vW$`NsQ{EeIiUbZB=Q^Lh$WG!<;Vk*7RQj>zk2+;hK~| zeR3fZlC2&GYw=6~46{Q7DzEF&oRk0=UvMxBwv7OLnR8kJmZvAM898k@Es*}{q*F@} zcsIVsi$Fa-GNTNNO~8y}g5v^d_$f~2R5oX|H=20)AurvRH2j`d&F}DwP0i3^N428X zXaO6gu|YRxMkm3x+(*BtqbfQu1}6@U+vb$e(>UzGR}WUO;B_rWMmy5Vr@4-r`3 zRdec=hm!wrOVcf&Uk-;1na%Sr_XgN8w_6p;uKS#nOC(2vCAfg6RKezSJWY^q2jpfr zkVwJYcaZTkj-HXwt4hl0g_UO+Y)Rv`fj(n>{G*S5#A)N8`Fbk5X6#N~h-Ua5l#YeN z!P8iKrv}pKK!aMF8I~`cva~T9`C~pWE%?|TFc1O7c>QazK-3_U&QuDZKP~9zdI7p& zAZTvc#84Y-L1rjH?`0@G>Yu2s%fT`6%ke(08wDeJmpFpOZzrJl!w9Umn2~Qzn{wzD zszkMW#C``Herf$%@mbJ`rTRo!^t_cI3p28~uHAaeqW?wN#BvxwkNbB^Qk=cEF$>Wv zP~WFqvb~WGxQAgSdb0h^@nXXa!b6n}%q7zES zFxB{86&(p*0SBoO%Bd8W4(GLx_6A-fi3I^bY$v(Nl5C(5W()#SY3{)i>>a$WJvZRR zsj~sJ*o?5nJ_fiIIO&&|a^^F%vG9I8%@R*I_SD$W(8E2Fbh!Z>5lRs4&e`H~sk1Qh zaJzUQ`QmWSS6?8*OPsexqRdr8A#?1`Qf>UQNR*<;!yW2pSQJW}cd9QCGIpmu62%dD zSRfv}A1`tl8|y${$P6vA<&p3B+z(R3eXbb(^TO!oacXMUnB0Kfd6x*sYIA?_!7Cz%vERFcpd!ZCY+l z=}g&A_eN4XQm`71lM?!nm{N0Dt?IZ>wVAooH`%}pp`^LsKsuD&%roNJr2|1Wa<{aR zT4T%UVg)qlpA%sShVmt{(OAO?)-}}A~KQiZ>{kitqYp=c5+H3EvFSrxpfPv1!lTgOcx~K_gb+p}% zaf0!&5|2<6rm*WEylUIA9S|b#y1r-rB_0nQJI!$iuf4?f>7}n%oAjzhkT7_>9ftks zB0B58IuE&W7o%VG{~;qVJCLVuy;K$ra(YIa5Prufq>b!j@wk!I(RLhyF~-kz$csUj zPPk)AUzjSr#wh(1eX!0bebt*N{d~-{$%22b3U+^L!H%}ukVJw0&bf)Vzp8AnBH-lk zINGjEX4`;NdVM{)4Nhe25g_haXn@37R3F)r#peC+Gm85dSXEGb3#kkQu0S1FhI6#h z;;mQD!;iNEmEB$?=(-f=*o*;BzjB;_oZ?&h_r{M6IS&eS25-}sz+X5s&Ylt@p5%Rx5>ZyNVTc1`C2gUhryddqj5)jHAakEC*gm{d~VUEgUtA;Uh+qZy= z>AwRM8E{uwpqo1G0Ku37t27RCduX9lhYhN&3u=4$0VOa*}OoC3~A}G`RnrTEWrH%=yUFnz^-5?98OnmF-DDY~gxl<;m%n~;s!jz&q z?SAQ0t+X2b4tb%mIZkPBm>wMZZ_b2-PpfpeY8b-&Bevj~ep4$3$8I%rmal?drUEct zuELidIZHUn`H-(>b24<3&O{jTSA)#z{7-|-&~TDj^gjVgllSPF3pL)ndySt*ASo~P z+B!hNFukG{4H<^eH)&pz7vf&a9&zz-8Wo`4H&JC5l?^TTMiOZ z)5QqyQ1CFyDbHxazpqSh!kzf)@}a?yzH^z~_y`;sv=Rfvoj!PmkV*OoIsOWKt`1b2 zHsbGH{6+p7eo=p}HtomX0R9%gT5W2=-y8T_bg_yFu2Kay8Nnq9wMb^DsaB(n@O zbiD!15vBZnKzs>6F4AAbd_zF06d-N^Bv7V6SPKvoXTo5)lVsW3uiu7ga%>=7KK6kC z{&prvvX`>AJ`t~&+zZpOLb}5N7)?p6AT7_ZRE;_9G1LZ4Bj^TIx*%|%z1(b?|Y9O-L(LBE*M(tG+#r)CW4NEqY3z& z_N=z6v$B{T7(d4`;W&WrVH{TGD*U6|e@Ri_0laoa##uRubjTd<_*TVaT zeZyW%*kgf>1hUS;;7*W@qb(O-q6gG#JGCK*`Af_@8yd0D55b=cOIZA*$#WH^CFL-r z4Py|}7f2h0MVGEUjWDo^+5kmIE!e9SDYdMM$qNgqQnYy|%0+>-FcLIVf2T%LkL=*< zd9}@XKJ;86jyz-Gvx_cp{C0NHjHaqA(^|ubl;2ck;fDp?9dk5ov|+B;i3_j~IzzoS zIXcm)qj}EJ+SZj6t=OglU9y zGiah265W~~o^OE~RT%c!ng*+3nrcFzQ`^}To@)${Dq2=Tf%QFf(Wcv?ny%;(KKJhGydgYe4_7*+N?^U$vvt)oBA1byuzT}URtw3Kcrm@`&sGyvrPDBQRb{NwFmN>N&hzJPhW%cl|lV0g%&eR zAVQB??hMSnFeUXys{z_~KwpL|8Z1bc4=9G>Hfz)a_$VLfKlnWq5n=2GivsYrb%$(V z3Z+i`kc&IoVxZ~yj`qEHK$?+N;3sjSA4G}25ItJ|d`H`l04yHAM4HlJK<;S&1zz=K z^T>o8ZI6M*U^sSyGF>>3k8+5gic#EM2;#tmQUaQAA_Yu)g>PSO8n`TuxFU%QI@yD` z?OW1|jrAU>UPAouqBaa6Kd1osPDo#D0aF`|6tqj44$l2Z@ACl}WvE@eGjICrz3qr4b9O|>>?COxPm{ld%+4@%f$e*Tx z$z$OtwAoTw-=zxds}Wz^iMtGn2Fg8s?K=aPj97n!GHrqK5i1v{vT&14?rgj?n_9Qo zp2+Tyj~+DAq!&MB+@sOG5DB^iAe`3i@r$CFhQI*q=Ps9q?wgSY zA2Io$B9D(l@-JU*XZ$p1F_YJ^}jFW?XAaXUZ}`MWKDx+G&h?78zMqsv?Ji;!2lPqIOa2tP)fh_*pY}&VPMmlAR}x57pZgksW7HmP zLjpzZo^3+!HD_<{XQ8|K#JxjP&ml) zQ-DeUKmG5vFK`}`sA3FE2`MG;@m>-iC-M@q$k3sD@OtJ6m21}17- zW$M8Uo<}5OrzU<;!c15rOuZ-|AE{w&2uwiEWq6NSFqOG6{T0@sg$gJI#~iW?&Pp}& zxl4c+QAhi?=^rMA`}~Wf1u8M8tk9PHgwu))#rjAAc_YZ|tn_J136lp@dpMn75cM~x z0sbURL6K+m(yuA@kA*f^vn9>$o`W&)h9g*Vz`$?cz?d{0R?SiOpip0YAM}ra6UF@P zt4tj1k0O)FP;x|53(O%`C!wiot59viLin|WHgvi^aH-OU<|%Dxd00aiKhA(<|8|fSLf5*8Mq5x>+6z3nYDPa^%GzBv?>uQ+FQmVj3_)18$ z)U5X+Ask5cYyz>A8Vbafli4VA$nchJs7#Y$sPBJofkq;u{MHyBw zD$liktQsb)U?Dv_P#w~(@YJ(12mk380QuX1Wd| z9ZD!gjG9fva$(pkAYP|b2-qw#^n|xy!cJlJ01et{_KFl%(*WaLrA8knaD5W}xGjZi z5QDxMxB`j_KNGi1`0^!^Fh@08L$lGa#ZFe)zn=1%NNRx#=Lb*0mtEKfrp-VOM~~Ih z3n_?878H3o*@=LJFl+z-%IU;n!BvFG+eGfw0}?^& zJ8v$UdgRfjN3}MYsRa#=wk!Y!Vf7pet8GPvEF@%1f(EQK$H8!ahxC3MifxSV0TXul z$@S}u5I02`tomX+i-@aMZEu+!s@if3=Ge&+QLBIVzq07C5SxOV70X;* z8*YX_lErrpBgyO*qFhSRb8)@9clhR~sqi#Ya?XRl$&sg+*WR5E2_bqqQZ@}*S3&H+ zO=P1$NR^50Zl8b%EteM(8C|=)shg?7xp~M3)1}cc&CN@RR`$Ihl-nd7|SW1V!L%~lQ(jWbAS>+gm z8?C_Uq#)Kj8ER@3>D~urrr!c0fJ~)geFz}kX9SQ;G6FbWG6J&42AGopS^js? zStk}cKA8eQv09Fnj6x@j4agZ2(439*f@&kPXnhzB90AfzNqX0Hpd>LA(#Xg;mW;Hx zeWcp-ZTvlPlE0rL?CPVi8yo*ZRimJ=?7$fYqYt{lS}n??F093;_pBjvG6bm4k^cOf z|FQJn`oT%kPfNfv<>+Q$zdD$+5uI()?X66lVyOvuoQd?~J-hWcZ%roZdgOJGRqn6x zyYA36D55*?E*ZmW{DS?0m2!nDTt$OJ+}!~p^Ne)Ufae_u7N<{TN{)LDDuu!5S3){k zzHST4B+tC25u)*IdWqpVfA#)q6Ba}k;?D<+A!U4<1p zX1QhyijKQ?B3To}g_G2M^QYF$``et5qqm!CQEDFk@=;Y18}q^ezu$Zk2FECBv4Q)4+1LhfOs|p&sA8FHNZOmH7Wrm z;Y@`1>5K@g3^3|nC9ia_^P3LihYSE1LDYbi!m~*ac4e9LoiE4Z4fqEK4^N}yp zvcz8S`4^&6%wDWCY3ilfe+&c*k-gc{;IFpTm>L?w<&=>Itv3P-s2>142LMnD{ak{x zyI7f_dSpm>tg_Z$hP+@>tWx9yq&%_4<}3scp;RrGg#yGa{K&BH=Bd>tjC-M2wE_hL z@7oQ2Q*Rzz^PSZu|5D@*m-AOY3l|4S@{(febU(?Q?yfg-AF1^GUk^b&N4knYa1>tYWw3q&^$57N&CR0 zxg?(6G>2LtkmUhs8`=aH{#i)s_hFhcTq+Z*2W&EI<3{6zh#Gu}CZKIol>n;fvdaZ4Uw5xcdM{crM35_hS5X9iW8otJTM0^&3Y6;0sF%jBbFe`0k_h zo8?z?Rzp2`>`eV7geiIco}xC;1I-fGg5E32Dfb5`r2h%Rf>x@driKO(U+=IXApL?HaevE`V7#a*)!fvJ>JK?_Bw@?(^QvWqZ!-&Yka zMn!e3DENRh0FpqxPoI%&LVd07ChTkuR~OJeYcjG{Kk_T^%k{WJSaXxpXyxPsbW^6ih9b1-18vbD1!Zn`Bu=Nk;v&{Q(OF zBi4I|Y4ZKzMp`s`Xf)Jc__r)mHxtlmnrEa4I`lh!oCQYC2>we611PfV5hjPbac{7t zzQHpBx8M=@T?~14E6Fu-pAGnGdj&?yYVEzIstKl+SN-BxsJ4K&DsZO5_H<^~YCwc; zv(ZLK zQEt~Vzyxexk+6){80OF}9f%KDyAI)@Y%OB(!iYDNS>e$ii-t*olRJ9@ON! z#Jfv-D`?TSF7L0`HhW%aDDKBH(8JImvBa|+d;yjlNBdkz=f%%rqcI>_5V#ReL}duk ze_04eK8`Dx&e1H4ilhjU=`0e+Qzou@pd)?G556tgRX)@SF#{PnZkyxa2ZWR-<~Q>#x-g~pL_em1q3~q=Y2M4 zt0>@tNx(j6<(dg_z|#r}_^!E01X?+3_3nWu@n}3)Tv5Pr9aXesI zal8phJS4dCnC9&Q(m%C%{X3G)gU{*=B*o)@098QX1Nf2wV)RkJYBmv>0v#?b>=$qU zEvKHGrGsjc9Y)buxjgMmqv8yb3%-r>Au#Z?@;gDWwF+A&cDDZg0st=brpAkC@*omY z9wrG^3Hpy&WvNb$S*ZuM%>RS&bIliGZ+l$hpNDl?)V`j10ph9%1N*}?hDIe7Zw<*2pt@1 zpB|4~jP!0z&8;PAbL$P7F}HdLgRaEXI#Dk{(W+FV&cL1Ct&a9tD6XQERN`ox4eC=1 z#A-1NE5uqk@6`t1o*$M(YSoL&%lGuvcn(Ki&e=b*=j=V+57fdim`^FM=?tzU&q(bP7PW#Lz29VdB3s@Y^aJ?7 zk}rza`@%r=fgboIe{&;#zVS!={AK`T<`%gCo#YF<(*y(fs9?7nP_B>vDWtP0|Bg*z zxw6I2%`JYdubEq4zqI!?OU`x($}~yn=k^&c8KmzFz-~9a`-y# z`XL#;OnG`7v#U0$-*_6h-Tjg@aHZnMo^4H9?zx;6T^*j@rY^op*bKZ>-*@y_Q&$n* z;11Iib~7@FJ+Do0yV)#}VK-w{EzMbCX$hB--|Ho)OWPkAk1H0w6=}?B{m>Es9<9M; zk$Kr#X$NvWk`)}MmA2sxTMl2#=7Ol)@?$|->@v(PvT^OR=#x;dHJ0~?EnvfmGV{#U zF*`QhHkxrSkOeJo04UGv&*a796Zd-#izKO)zYlWrZ1WC-h$g}v>rS@#`M{~Ims)~T zT5rwD4%#DEWrH59FcK4A_aH&wi&d|d!tri=RV9Sq;B?J>Cm_25*GFh&_pWCncj&X$ z%j#KRTv)15wTU!r5f^^tj5ZM{K%>#fcT9 z@olZIIXdK3lfDTH1p0qZ<>=%j)f|V^B!ZO&T|qdz=dgF{&Gv99C82Ps1+XXN`@%6| zc%c%*6LbCK3d!SW|0Y0)HVEb^19d%zl4vP)pkuL>eTYbb<9aUxhJrc8JJ)TdD|GAv zdW+k&vUba#Km#8Ha*zotL+1BllQu0y3!8I64d%Piqx-b&qK{UT(zhZw@4?ZRX|xDj zqCg0q5_emWq4Lte1Y`4VaQcXqiLf%J_x>Ii%E}i8ss6-aJb73B_@ zrjmTR22s8m>5F%Ghgur7a@y~p1<#;hS4BRD4afY26JGJ4w{Oi~ehK<$4IVgIal$9D zZ=Ko9eTr>%^TPmx>QhB2*&psG#nOus&?Er3{i<{zm;bH`jhX{jRFqO)3r>|e5VN1^ z>I&&pI9`eN14#4gR6iSip3BAHH!NR>)2G~*WvUSQ+tFUaWFmb*0|*yzUXAZl zk%2d(lMpKweuh(Dz1GWVWN;jS;bD=?N`96GZ|;+*r&?2bO{K) zgEY`*#l4cY^LIVi1{b+=Tq{7t3AsakZ(1gPI3F(NQ65+0IV=gm9yIe)cG zjLvW09XzBc1hb_1k_p{#+il1}C_zmYEFgAHzd?wb*H}GdIcZ@pM z;fyc`7Q!%<} z@vud+46pkzjts%Kv=>&ch#yR5sm1Qvx3rfV8Y7lscpO*G4_+R*D(i9I#Y4f1F#*jF zmd%=H4qn)LtEDV>zGA?fU#&Rl{llf0I75B2U|e=Y=8eOO0Gnv4EDdlEH5MvBSlikU zubHMDiC7$=f$Yf6*4G`qx}~Gxc*op$jraMMH$&*itl$NmH#y;R-n$lJ>VEB6{iPq^ z1v@N)IUv&}$k5r_pqbM9lb>mrAx4V zady!xGaU(MKy)tAb{6w}CPe8O%#D+o8ezVkh2@ZvxO+eH^4PJGgjY}!-Rrv!K^kpn z$N30>l19ymaWh%VrL8bx&*_+NiOjdg%n>;JRxzvt{Z~y>)4t@9h@nGv@c^jDF=P$i ztr#Tqn!=w;kR>D8-mg_X2*MM`(D+MG1574cvw4Y}M`3D($&|iO+ORB^;0Re9ib_Nq zdC?pvH}L)xC20FYA6eH<#ux2>3Ts#+?5{wbffIw3gKy`RS+z?NhT&1~C&3dFQeRo( ztLG5_J``+}KVUi26dCUsp%vW=Qi@nEsVofGD{~WvoFcQ1+Kw2Blb%= zEtj+&^9Bng42dQ)-!Zh+2nfD2H~JPnF`o09ojA*497GFEM@JT6SHu>3#8!NCZtJm& z)%Gt`#{50Vknl1%#j$Cp_!!jbxtQhYV}Q=0e}Q9DZ^Tk_PAd|(BU2lm1a@Z2xs?@b z$Cb>C?2nyMS<{kNITv4F#+S45>n%BzP55fWSN27(C{#7u#Tl9=ba2}l;TZ-kxX$lb zYVGh@v|N%)c)m?@lODSH)scTe7hMtNbk2{nrPHH8h@%~Q8{@5&m%v+LD^Gxu-QbN$ zS8LHz(Z}HPcEi%AXtGwg6HYl;0%ri$0R|1ndrS)4yaLUfN3SHQP*N&Fl#;uclLnzl zE5oIH7rOi^FQh{kDyr;e^GSlibC>wEel3^j=*+sL=wmqI`LuKw@QA9C zNDN|zXNr{FoB+TuC1p*q#vJ4Q8ns7+fu%qoKfI)RTbdig+Dz5x!lOqc(9rkQt z9;$17+G-mH*-O%A+79mrVIh^^i@?#t0HiBbJ*rhG64O~BWCdBVFcw&SXqzuwN~qI; zQ?RK8$pp6q{Rka_)g~F5Vn&`krW-SECswQS`qkqo^LbY zJt8z6+`CdyIQr-_pbr-am<58v0-`irASg_E5!QC?L@+&{JaO+J_F=T20ZyWoCi&r@ z^+hD$L=~<&fH!O{6kl1bfHdssZS=lmkTwQDug@UrJtXQOBoEHUx)Pp^N1=xr39&z? zQ7vybgsWJ3JeAz7XnSwCin$Y*Gy=OA20_xvWh3FY!xfki12ADgP&?p07u=_cD2hWv?P>0aJKoYKE zN(HXs{a?jEBJd4tStC?zlxN|P6S^MkCSHSI*4!*HMb`w2bX~<@)yR_--S_rHob8Jw zV`=C?uFr%0G+f-@2&LkID_~Z7gEdqUR?rgMbzg!6i=eIm1Yxb5gyrq;C}75p0&Wou zk zq-6yR3>UBo;Q~Qj0g=`7eGn23M_z>*a3nJ6>KV$z$@f?J4zqi-9)=!_8fh zwc!88ChPwK^$@!xmcdwpsm+DeA#r0aS)mr1sq^dq4L{I|0v&h^tm=9WjH#obRad>+ z`xXKxrgd1?PQ;_T();>F6_noBi4NI-sIU}$lKg8n?UV|>GtcMseFL*|%imnOf zAB^vzw|)%6ORezR^rxX5RtTF3G;0MVC0Z-6K87sig!U*nPJ{c!4Se?8B6nFD;7mWwU4CvI&R(-;j5(I&|DrO zumH6tcwS^ETyQPETB9}Lg4KAT0j#5d8(c!K6^8l>!?|=iteg`p-PB61CaG~a76QZN z%rIb;-7qP}7p03rW&Ja>{7RmnS6np)t;|%2P#m&S&Pr8{ssQUruyxmm5IU*|?7ZNY zqzqN@$@1qU^4knw4x4^eGW*hCiK?9=$f*0|!0VASF~CC*rbZD4QNYuG;7pm~ki~*YoDJ!e$GO{@F(a zK}XH2hwmMEFM`lMdgeL3eUA3;A8-1mp)5mI#wLoWPGi4=0CF*kTUN}YSy!2tv&d|v~= zu}vE%fG~P&m`e0FfJXhD(=%98dv9Pt8c*WVb$hQg#nJYAAt|ykb{qC6!)d&ZC?aVq z_J(lqCGU`T(MmPg^)sN#C~d|A8Qn$gN`Q0e{J&&X?=YMt!Dg;HxD)S z#VnqeFZ1qWj+PgjDhir0KL)BJxm@ym+=h(=Wr;=4;>5n!oT1EZuVtVTQT9^XUa^4o z*k!aU%j%{1J0O@R0Skr{Ams@S)L^(f6+v1SV0&J%Si}ShFM-YwD(ur?`|77rzuZ3&%(n zK)4#eLD==FupN)zK!zQ&Zy>{l-PnYOR<)2*(&8cuOfJn%pMV8rqP;hG&Pix}RAw`w z^(4&1C678J7RkEdhsbR&20~p)gysuEj|f6tEyGE|X@b~9%wCzG9~bBc=jIr+;{xrJ zD%!c=^U;p0NUA^c&MTDe3Wv~JHk(9x7h5n!f!d$dBL4G8=wEibGCi`C< zlaUmWR5nF?B)YV0q{UP=QWg|WPg3E8%?cGNf+K~cli7!)we|R}h7er_ z5qg#qob@|?0kvNa!T8N`LrhRd!k6?5y`yire_QwlTzF}*Yi#c|gth^z64}zZLyC>0 z^A>}Rz$MgRIN&YmQd>927R)=NKTnRp{?MU?jXkGeT*@923vMN&EP!@f79tRHmQCUD zO9+}}G1(a9yas$2&+1j`nQunYm12J3c?6ZqRB#@LJ4Asg3|nf1K~grwT$M|Ml5(*T z3N6CT_+Fo{q@;G&U<+TgcrP z_JechL+8R?6JryLAdKnNnLEU_%veke{`3DYeB@>qLMTkf$X(z6=VIgpd?+-l6%qCW z`U(Iz4Qg@WeYQa+`J<|LXOIq({b@nR6{`N6W%TC^qdzP4?cXExEB}cd`u{Ba3H+y8 zFzKJ%f?8bTf}OpJAnhX_iep?EwvUZzMa`O#Dg5lStLfW+;XtS2FWx}nS! zSh5h-&}sjYI{2DwT*FCP!7<5L6pp&=w0jzO92RwKqa1h@JgXml6-;xuDRdm3U?=Lg zORuATdj_JjvD4#3#np*;Lva-wVtw)ie0WN>kE~n)|F`6l8T?!7>24vOrTQ13c8jCK zxhD#T8&GVTaEOV~#ybz6@@1(@Pqonm9NVHbh?|R3;CKm7GSo`6MpK%2?oNHN& z!+7d({L^{yz3}w7D)=glEbJ%YMaF$08ik;{ zghF&#I-{}GNMdS+ybXf^*SpyDxP>M!IN7iukV?4b?d%uH9J@6E7T2?kliXdwscI<; zdmLcHN+tJBDGo2nLB*(NbScR&PeS?9lorA>TDAZ`dJiwo%G8V=t685OupEyO`#hnPl{Q_p`=VEx2Ipp*vgGWxi?)%+p>|W}Tx-Ytct;+pXzeRxEkRpre__zv zy1ANrc|Gwa?Uw90sM`Auut73=&_%sA1HdkCt*VSS7*_2?ovL3QL+)bPOVgR^Q((lg-#=ij(E!c^e` z7v7`r7=kf^ugGJPlbF<}%#7B`CEmmx*BKBNK&2!)V}@&~_vIj%7hVJj>j z`o)VWTQFSz?JM#4imUt6O0lL&iEW6uSz7Ds-q!7{9r7M~Ske}G?X6N%>>gFp3V06y z8440OpP4cWW%~@!qN`wpPOEQRTGSjwX>J0xBJ5^yIIA>%{L3|_*+Bf0`1=Lk@59rD zKMn8yj=yDiZ^hqg{5^*6>+$yj-c7lg|FSYabF;^Mk4RwVbs86;E^)9%+Jxg;&sMF;k_ES5|cD>$jP?HCAvetyEza*&oy1yMA1Yz48K0XGa|=+G(v24j@+)A zn}cm|NC2PUv$gF4HIB#q1V)zuNdO&BdzMz8UqJ|Tn%|o19bU5~(To+#4W7v^;=e=( zreQD95_DcFR8g5Co&|v=>!L3pb6|q%sF|@=u$VU_c8Y*4?5kT8mWa?(OSU~bkwc}wmFZ6njaIkVLZiML z%op|c<6bEve_zxQSw~ozM*vJ@<~OIbwC~0q98r(nf94=EK-+!}vL)^=;g^Vhu#Mt% z71DI%>UevI1*`EC&gC@M%?YEM(}i5>#9JP*`q&=FMWXKp%DR|Ddv;ee?rMJ;jT`CD z3g&PhkfUSL+{>?mL-u3@1#I*x9w!08=U_xi`Q5^zel1QRX+JFGt!mUh+VxK8ldLtT zu_RYyQeE@Pes1+5~xp)cM;K>}t#ttk`@_VEYs35s=Nphqw zJCK79_XK=Q+&t1}QJ*=+r%ioMG(Mf`({6kgs?S{Gvs!&lGCo`7GuOe-K26oV6(^{% zI;W&*Xwu5r(58t4P2Frmz;<*nj@AXHKqm_30$US2+hh|%Y`i?Q7c}=OBy8WUxw#2F z=mI~m;J^#)AZ9rKVFz)Qq>-4Q6-5Om;Yqg3~unD8R^g4+_&aaG z>#f_y@4h!}-I5TNzlle&250a4n^QP2?0dFm)5PJf7pV?Hi*q&G>U^;B;XEJeeRN>A zXA(2oukMXXGqKqX6B`P!OFyFArMy=$-Gq`~bUh@O*+mNr@uWi(04W)mU9^mWGifft zbN0AGn@NAbF9sjm%5`#a6cjf<&?;IU&hx}6DO7TM(Q{M>Y3n8U!5pY=Mg~lUqPC)` zR7>rCC+frs1iTxOl3+rcML|wu5h@?$VUZ&&2UY36zMDcUZHCR&eiL%~_am2~-Yd+9 zdM^@`!e=W{r;vvHtUGiqT2r5fpdwURlt9wLqSeIB48y!sg7-25H`fq1_^w8N6Yw(| z_z5szzJZ@*mOS8REp~}f7rg?>61WjVN@rV98*&motz*#RXv;@xtw7vnq}!F7h#f10 zd*JM0vpd>fM81X|N@vdyVV!}Zd{6I@|6Ji{--s|0i!Y5*EQy>JY^oN-La8(CGB^*9 zIOwOvM%#%EIUrE`no`Xz_y@7l60@*qT5}c-^O5Saf-RDG2%CGDcTbu z?x)~83WBHLtB+rgtC`?N0(}}NcyLY)9z2tt2QGD6kQP0YghJh6g5#^$nXB+)7*!NJ z=vjij68?7v*r~qc8|*b*teq>f>rp(dS3YzKXFd21S7oE6j`sh=hgL=OK1Dr_VhYS8 z(_pN1VaFb}@R>|~(Y#s+MGK2g*JqR=N%_Ydz6qLy2Z;FJz*k3(zOJbNUkQ3qkc&P@ zt$|at+?^mqaJ6SKdgHfh!?DefyZ{-Gc@Z!I9SIi%-pnc%O<;#t>-l+FBWR)nz7^?d z(7wdoeBYK0UK%$>ni-#J+x$M5Uo9Co=vtxMCr8?~rl!PMW7KbXHIf$aZhD_KPp%w55 zY7999U9E!TBUZWY_zHXnYzY9;a%Y{GJ1aeRmcWS8QPj#6B6FqcC*0ir^FFTd@sC3l ziNt8(MSfRWfL6)|ZDbpZ_ts(kng?trQg^Y1%~{-HVI`p49>i0=H8&&Rp|D$>tBw6& z+Ob9h;63WZZLDuK8u0S`=tiSVzQZh-gje+*&Qn4E8Qm9{Ge778CS0o9V4V%vVS^2f z$6)2*sytrKe;6DKsAoSkG|DOJMn6c&k_>~DNqx;(NXQ-m@yJ==xf@=V5mmBrDo7zz zF)27jtFeLjCsz0@0f&Zh5d1(}V21$rdThMfiDlg|+JuIe^ZZwz|3j%AQ%kZW?122- zB|R5l8OKx^T?YwFFKn;kPv!q8Q8W)luT8X*SWiD*c71(Et_{OZZ$rJAV`=6hj-~62 zv4nH1-jE6cS3-_ZyEB~HYP%Q_aR9bBzB7dcXtkE~FlFl#6FV$$?IYbx7<`7*8u}=U z=I!KwUUz6QNQhOWY`Hvv5(jzfXl~qnGx&?K^$fB`KDG-T$2Fd(ptanD#QWIkADW(d zVUe$%vlXc1ZiY=t8})wVXnOzwVrL(;76M0r3$macZ=Mm| zVnaWTPQuwNL%I&HU2WKVBw!A&uuDIL3z&iD+2rF1d!hU?E4Bcj?Ex$k(5|bM+5rYP z6zs*W07L+G2~xIMF7A4dINDqS842tZ5E#~f?V%ej;{umxs3Q12C=BQ2ycTh@BinF| zEg6%xV@&e=z`Ts)vCBb_C~62^HiB4n_d{TVc3fLy*RHbZeVC(^MYxgc)7~S&H=?}c zROPeGa^gJMMB00qR+`kv#zsm8cst1+%#!?^O>pbTVd@4#lyGXfRJERYAyjV>_?qg^?C zlSQuDa%l~Ajo0k(UP_k~5V)yp2=fBHrL;doCRt+H!0!s*D0UI7E)4Y+)5c11P}R8295Ih$HuZB|s-w^D11AmZaor&&BC=XloGfO`HbDOe9I#MSz>oZ+>Yc1rtKv<) zIOcyC6V5zj#>52X;>V(u%z%OhT;b66MZi%}W5YlaI(Q#qiJA-6ZAsKQLAfm}T58Th zZ6^l~7<8gjDp4^Ic;`K67O1dHfb|)G?iC}w_ylml%5~&X4=?vDtK)JJ6q0=W6+)~l z8pc?{a|R9Rc$QSx)=(IqiCbydykYOrKnY9d6gW$23`}N0wF!)HVqm8?_%vs{PCT4_ znk`;yOYq-$|0M2vLTBvNZ^eF!jNT|PdV@=aSE37W*0xqo`fDG7;el*st_38oZa+ZW zB3rG`Uuz^>W5Uqc}V>;@eO zD_-*W?mLTINTl5(X|bZ|Z$dhd)|hk&S%pvN2ds-54z-tkyk1(ZSC5hg!1Jc{6b3Op z2Z3v2MKrO5h1FcOHh6s&Zt?=GvM$J7?`JOYTbOAkfC+7}osf?N3_jG@fEel=1C}qJ zShxWs?Pl5tQONI{2&OQ!9F=11o9m{e+kSWnaT8w1@%eq69-8<3ce4xvHJT>-3bT&q+ zNsnST!n!R?0=A0t4@4fq)C-$)*#p0pNhC538+aU%Q!m~bz?Sn#SvA;lek5X_)V3|) zYCV<{92XafVxAHwVuP)hP7h8tzFIHM3BDit$Q=A#7Z0odBRUZ~k#Cvm*fbs%2fe=$ zOa3B-plf3e$0i513g3(c1j`jT)e02T=ozUfWzJ-l^?xr5HmW;1E&pWz&>5)N8G9P5 zMrad93?v;I#c{^c*^YK`zLzQ6Nc{}uBF{);@+j9_iaAhK&?l`GX9wnWHpad01@qPo zGGSwCs)L^-Q?^zt3y!Y|%X?%35LDe^pQ)ne8o?+g*i$oCr5Tt#Gj7cB4Qh_>rgXI- z7f=FP06KOihDQbx)cF^3Oyr~Ux>zr;H$cNPj;v??));L? z`Qcm^hIF3YZM~2loQ}39k;3Tt$T-h7^t>~Yf9l29dYbI|*2+oAPRF~62N9f_bs4DQ zd6+j)N}xrFA9Uca-bBgckIzxc80X!*X2Rv6t%ae1!r0j@=hQVW(R-H3LF-64M-c+d z1WqGO=n_+K`+((CQ`aNNjwGi`W8rlIsIiZyj5x@HhydFhS_54Z_(FDtaP#(+eSfj8 zSgwV7kz3@F;s4-rgB^Ucm?oAxdan{=UM{xcZRe$TeBM;e3L-AagBO(Dvsgs9z0 zh+0P>s`Hopr8Vjf(1up^B);J8hXQeo0}<(nOjSe3kr+Za{W4<+%?(TX*pAjqrUxe( zU#*v52*sXCoWp>jGpX59t9L*YQpI!VOmb|Rnz-yiMvmG$?}?AiR{Po60vJ70JMGUH zb$8x;1xHU6M~^m#2k=y8Iof^(1ogBM`Hy0bRTK(Y5L{aXzH|!xK93hND0Jlt&?tMU zzx9%{gLa+n2STo~Q`Eip+=&T1UyrLG0(Ywlu0REK0)d)BpoSs*3a9}^~5be2!O*wdsB}s~;SlcCp zrfPaznwn7)j$+9mC!BxEc%DWQ$!=)th0W#HXp&aeNk*C)P8a;$;dDXP92riB1J|X7 zQl$)~XN;k=l|yMzhSC`=XDz8~)UW$$VklKBK#X_}qa6d53qErg?LzaD!wC3eLpXlS z&#zDe2+V?E87)@TsQzhaOfb*OaMHFQ!Wcx7@Be^@mi?nVR86ex%9I9^!8hN)nNLZo z1W`hDmv$NVb9r9z#32H^sDD!=hMI*hMWYKK3ujDa)1;tgi(``wCq+ZFSGeP##2#Ft zOva^S)8vT7rzW+!^hs?32Q&THQu#2LCua<1j>@b~*MAvPNN2#eGxkR{r^$pCo55LS zvVJY*gVY2Po1#E&0*549T8K%0qZ7;1-t0gwZU$WUVIe+lem7=`!zvUSh248Ggxenc zne?wCu`%<)`IgOK6DQZqu7e z+{Ylg(OgG+7(rc}x!U7U28$eRw~&RVJm55)4sM3s146LuC~1X`EQXI!b%Mk``b*AS z;y=jYoQ2!$(}(Z7Bji+UM`#O9%NoGJo5j%*Fb9Z4`JRzFNQL5BxgVlxKA4bQiK^Q_ zh{t2IJ1@@yScR$SJ|&*I)LtzSQ9DtG^gGI&0VV=*Ga-|D5-ygIXwOfF>#Iq)s6Qij z0=D(QKo_SYt%_VoD2iXampIh|!G43neh6qwZ{-d6 zPGTSC5*P3veVDuv_cvq1A52uA1kcVGqtz@z^_NX@V8Jt}5K@|kkcM=G*pUZJEDa$d zTk1uiGXo*Rp56tj^=jV2rl2&mNXh94fmP1Mg$s%`STqN1jupswQ|&ZTtC?eL59TA9 zGsIjv!u8N-FM>j&7hwLu_G4=M&!gQ7pho9mU4JN$tMibjbz%B|gbbaPkfGI3B=eXIfjG%LE=vl;;7~GIUse;Ar(*Fv z4|4$Rd@r*LA7?ii1IUK%ig1CYqC%62#@{PUZ4(}8z{ zU&8h(1g#wb!^#Jf%Y&egc^c61E{Ly$j@#6-VVCFuWQS&^x-8Uh>C?^NjTDvgF%0se zS)6;w0HtTmLl7YqSJD21YFO-ESeS9UGmAc+8~nbO%UPcsmIa0|8P=Rf z$U0Zsv=>6JjmJ6J!CY;sa1~im+S~VzIW%CoGI$V>6e;aP7MAuVcw}CNf>Ddz5@5DB zVfmdJOhcn0o^4QYFw?-$U;nub{nI;d5<~x_3`76kbR+*kw8SZZYSR>`*hg|VQJk(p zi~kS&akyCJ?QaNJabRq)?8H45>w!aPhg_sqBI%w7KqcZ>0%eR>JL!E-U_eTY*i(eZGcyp7I7w^6Uhyxa`7d0+hI4i9Y5D4v-!1$t zr`aT2FeD)~9j**uGrm%S6Kix>f#Kba1v-9lk1Br21H%Qw3@z{Y2D;`K-$AeZ?pyG# zAA4dVrqy!RszuvJ*377H+;EVC`M5UI``!(cBla&umRin!R$ba0o_`?JJL{_8Ushhd zLeA=^0j9Q#xtFx}YEewEm~dfQzx@gPLNM4g#IokT&$;+E1ZihzbFjpB%lEWfEZQ8q zckq_$wYg61D<*Tlcj(rC(H6P1ITrH^-o9HKwYj4_xfs-F4c7Qu(Km7BKj=2y$1+{o zBB#I5^c*f;uG8F=2=mo)rO!PR)Pzf5@N49v7aY3Fsh>>d*iVdL;=tZu_dN z1YEtG<05pZtiCg!@|~&pWtf%v{$iGbwEroMdFnYd$p9tPi+2F%xZ~FliE!to>-rj# z7J3??0vemW88KSuMdCr*$zOrrr-csSqgK=Q3GcctXxLv3Mc zHZ^j-zmWlg$wnS_8o;LvT}IPfo=jiQ)QoN(r^+<&k4!8ykx8p!7MvN3a}?M=^*qIr z*;Mjo5D1TZWYnB`9xcqc=zoENv|Q=qAElbDdb*)jl~m^gz|q^8QjiUi@H{OowMylm zU|NDB8>DTkSu{OVuxyDzq5X)s?BaMSe%HLOcvN)RV*Nzg=d3M z7UK8>u({|dX%#!#4?t*ErAm1Uj^cM!&lZoGcVIQ84BQF_9f}hkcL(v(L2f~wjT#fB z{*mPv&2hAq$rqtiz3=VQcD7_|yLRcj-ZBqp?>T<^-ma+m1>~PePDqaxK$wqm>51rc z+;tra0K4S-Z?|c0Be0}6DkhO4?a!UFy;=7aZ{9Vk?R5NhXYtY{N0fM>?^vkXGy- zDRwx<X?os~F-mV^LJ4%dyLv*34oB(hWa-kWjA zd(*mOao)#DU;IAZ7TLe+O+N?Mm)tYs2(qx_cifg=rz`j5<-u5#6(_KL>KAD zegZi7LT2zaat+0gy4nv1Zl=&Aq*(mtMy?wXhRBf0Y~Gtwne}h=(SJeehKNT&hjWMGkT(NA5Rr;U1)4^ln3D-hdh!2k zOb8^0)!joG5CJ;|ME~#LrwEP(Gv;`8p~gD{3HcPu*wqFPzjHDIV>c<5sD`r|f(GkI z=drOxiGc=(5n;qCslk{o!%V`(BQlNH`I5g&7?R?{!aKkcrGsj*Xo)T&hdp7^QNnB) z_Kcang*{{VJ9b@-={wCeroZ8@^4m3Xr|g2zv2i!tTHnyVyRoxuL11#<-^|*knH=~( zE5mQhApsN|w4asWH*GFdP~BC@xF64A94Ey3MxS;&Q`TyCFT_W#O*GBXZbn$5A&#~pBuzBN(KZ!d zXwV#pJZR7%sUjVa5wQBd4~VK7HJkKjY5g>?>S+HZvTL^=Qc$+>D^>M>Fm6cS4h#2~ zsHCc7gTBwIL08$j zs2^aH)J8;^_PjoEb2kGLvEqk>*gXev3^T&9?{O$BZ;2FR@_RD#YvYYs^llO_%y`9| z9Jsqo;KwDl-W`s%U*S7+YELnVM zRl$VWZ?FLDQyF>AppNxBZvbD$-<9}l!Qb;O;MEw#7veePyEUdK5VjHDrmP7QvL~1= z6O4b>#LI*Uw7_`6<{*+Ms zf}j;Ijs;?S-a!xvCl^H%MuaZ1w!~!#P<+Wr_}GV*+R@V3soGo{!kiUL6?^+KjMBK#Xjn>{N6l!oWh0JrXI7jy zu@=lGqm^UZmtyXCY+Kht z)GD?Q7i5hgjQbH7+AxU}f`JJ=XjP)thy{RyjJF#=m@DjbeYw+aW;r z70p@)XK(NJwKKIxp5xoK5XP@9%3E8gJwnC99QE$K!KJM~fOiPY6x*GEb92l0RR16T z466GB?6VnE_v39Rp}IcI$Dfnxup&glV^6Vt=aE|qMRr;aqphamt!&YHN)col%>bB< z*97zCm%SgZJzslVT6tvcnOcXm?*;F!8%|N}Gw<{M>4wxzciMUqn)f}mXd^SzJ$>O0 z2I9=fKfz+DWIMt%vKf~L${hzMRC#u?%Dl8H?WrnTzTt^$&ubrqHwa;`L&2Sv52QT< z(nB24-WLK+Z9QcbY`4+BG6Y1PskI7C500Vf)sO;kJK-=6uLq*SRUEP@NEKNtR=(~~ zE2_~fowP!M!=4Er>JDM=`0#!YLSpyscJ396Rb3k`-wAp(F950-MUs~ZbxcfN_zlT_Jh*~%7Ito}G?sc;7D z3qty=_H93SX9b7x>>``N3;^OaW5l5cQB0Z~@MV~O6Z3AsZLkO>2iON;1QWJk2zvhH z6oENJFNFkwb`LX&)R89Xyao$$veYRl#?ym44OEfr6+o9MJN^kmK%z+U6DJsm=aok2 z?s>TE1|qC}BhEMr7vv#xga7^;A?S|ZkDBC)2dwd^YfAQx-7)}o)by3}ymffpjE;d$4!si=C;fvcw=yYWaq^@hmuDn-R*{a) zTdu@%`b{V@cBwLnb}r9SPD4poPiMVy^_=rkJh_gZk9Bld(h}?FUx3>VK9<2Q$Grsg zkVMl~d)4yy+;Q+LqES>#ow(^+ZD2TY`+~9NT`C6Dn4`^#(uBldRqXsO4F2ai?sym? zFKh!pzH=RA@_Sd~p#^Q8coog0Esma9#MHxkiAu z(_@r8<>cj&6Jqm0`0fKt$JycJ>BxU19S3Oi=ZSPl;KF6kb38@0WK6P6WqUa+VoFp= zX3$*ElUsM%-QlhF38@Z{Jcss2+_9S?2KMyeUw91A+wr@zV$TLdrEy?F8YUF^y2 zFB&8e+Tzr{1QKhngG`UED%8GWsYN#Z5hiZ*zrPl#?@voz-Oaf?iW^lh_0;!EbpX<=0g#Os% z!0gbm!ay+yK5#wj`Ff(BrKx(pl2%XbT=?JPAfBJ9R=K$z5t|}mBCeo4ZjqAENx}PL z({!hl^9bR!q8#lzcHmUe<9F=dn4|qX2=H>;Aw27HdTvC*r~{&_y59mJGZ^v-Bs;ww zr`}3V5QVgVH_DUFto474nM;3|0n$Nr{x=x#BLqm(~|hecv`EGcfk*8Oi}!uj`u!1OYnCe{=SPpGs2qiXA;GRijR3h zLh-SVqne||zlb{j6@ORauK{)6il@nv@h>Yo@o84F2!A(-N@Rmd)N82{jp#jWf)$lj zR30dVSON3&w(o8TxHs~>;)>D06s@H&w7IaFTc9>Pf>FN$mR+lrtH4Q3N!7unO-w$9 zH{i{1&=F6-KeBT{?Nxt9pDFM33@^aL*tDb8zd?eZ>IHaxx+jl#0scNC-#_dHNOvMf z+Z^yGeL6<~R&b$aIK!9Oqn9F3xd<-63@pA5;vyb<7R{K8*^7elFR(TNFTmg*ln3C- z1IgB9dH_z!0Q1v50AIm~6c0d$z6Vuk!{Kr#`OH~#0-OklR6T=ae{=%0BM3LNlP8Jq z85ShqA|(=xqpcV?m%YM3y&RS(?r5!J1Q~HcyVP((JH7*hq7cRTln3wI_%^&Cxb`ng z=wS1n5jq35*ioG``XZ`Sz1Kg98WxJ97c+rZk_uQ)u!aelmUb?qo4+FzB8Rw7?5| z_M{o5M5E!vn1PL@$a6Amw1QoK8a6U8ASIv7XHQ`ZqOuc5g+S>|^9tI_EnmDHQJaf% zG#zc{qB4#ZI0sO1iB840{wl0~)YBy*>5515a`eM7j(Azz%ra7xKJ5RI;rm&Bc=KVI zQ0_>E%lmo6z4%urDG)yIv5R`11cm9RA$fXF9+T`svk7{o^PcdrcI-9&PaCO>({~OK`>03!p@G!|c!NUZ)w-YP1^idGU8uXhB9n`)Y0tY58 z_-TVy`r%ACkrY38nH}IKy$&-ka|8=tqD31ZZLza&05hs@)K*wJFaIz!dY0pkzhRV6 zq_${cY~LRdX{yeD4^Cjx`?o8Rj2kmy?(+FN82TF{bQ(h!+4SGQFcF=kK5G4|nIvK) z86_WSfMGh49T|FvcWBi5momY(j07(+0ZXn%X!jN*&=(m|PpiBeDiITUJuB>{8wa++ zFZPj@&15Oljih%YsT{8crJ+!YD`d1qMfd36!^e0+>1UY$`SecFC#T}Q*8d`-_amCp z=Ui25oqr2MHyfcdQxybN1&=ejTSfP@^5YjUD@4Z|6?`j#;@~u&bd6Dig&(t71N8%N1e^+Z& zA_Z&%)lAivn37wei@6UvG|LoxZzH7um}=sI3svmWQFxo(sP_28gTt{rY?WTuCw^kP zV*8RGxO$#B>uQyp+$l9eL>E?s^9|82vYkNRmERHtr9v-wZ z7QJhVw&O>;(xug7h+b){)9UT|#xf}MtF>|i!y|tW!y^d{-$)FnwxWMd3>U)y0|uZ? zLxbBLNuJPe?Bux`W4RlD-^E`A8odF}lpL9*B*=sy2{}^aJGt-qSxysrJ}d{u$?~{4 z7Om|%I1G%rU&JrS^HyBe{p^Fg@SzN0+HhoGWTz~!bigZM`ha(6tp&&a%06e{Klf!M zm1u7tg7aD|NJd+z3;Rj(Bx2p0T;lf*uAPqbJC5$s-uCG2(I9pxgiGWGdp=%;1mPWA z^OvqS6daQy05 zb9Zc_@$nIuSw@>3ZLKH)unk0V+3=B_+PnXYyl(-Isyy?bYcjwL6ELGuiA0I58ni3} z3M5fL2GN2BBMB4TWHZLI17j;3Rcsjqm~eT=qy`~{+$Q3R8Rv1{ zlNnEE#(9M&ZKV15jBh2bSS!`9sf?5HVpJDjfx3=nv2ubDO?pu*_sDJap}Qr>tZqd- zs%iu&yv&2yAWDV)GH|NNdx#XLH~bc+a&HYEunLV$dI>t4F6L$B{hhnzmz~X(yHV;n z=w<|5v6U{ghZnTBF08`{|D=~li?p39>vcEv)UJ&C9EvedtH*#}VpdNK_x@uTL z#*-S!K5@$p?1oHDm>E`x@Bx!m`;pQ|5t^C)G`{zf=0fZh5f&BQc^I%!H6&6vL!M)W zxY2cXWu3huL{TIdW&XXOU7VNZi4=z49wRs07H+dnYNW-)w2aStz=X4yE4NDvgn)BD zv_DFzF)FdUa~A}f;e4rbJEUNviyn+ke(N9U{!e;A3T75U)n=7dOhQe3TXan@?M|56q7D^O93 zdu-o~)vyLrjY1_tAFrtT*saw^+R6GzPv|3!^^um)$E!jg>8d```I;5yuG~85UvSsO z0x~MTdRw(WE(7HD@LSeNALcgNAAK14IbL%sGR~wAZ_M4l2D8-IrCLo#gQ5~zs!qai&c`nOBi=V| z2)|*?egFOk2qtHjoR=6TK^P1uM^Zj7omb0d zVtXE%Y*BEkYLVQ0v-hAqd~keNF`-+=H@U-NCLNg+HolLWVW;bWsg}qs;d8ztOEJ+$ zu<7RvZDtBE2-=LiL8rgg$t^cm?!sD>Cagu?2?Gg7tbvxwj*eX=?u#!E#q4OnkTK9Os=MH( zs5FlWjL^E36>B9!6KJ{MPjHQnN*4imXHd;BA0+gGQkx) zcoLuUFit-#F{J{YFsJo6DZgVdo3fGR$j#w*thp~?n$t%1!#0&0cBcil``O@>=P*Zy zlQ(8gCkv701Z-qCflRWSj+Q`pQhgwkd^&ee+CQt+eQ6aNl!NT&vL@UEjyF!<$5Z(? z0VrWk-+}mNPA3MX?0}8f4P=rD#G!I|$WU>r7GyGWI@y(!6|j+*1DRxP@wnt8D3HD~ zb2?doy`l&312)oUAd?$+Dz)Sz;@T_sBTn?2DrE3B7-aCq2JRqxCfTp;%Z2hocU{ss9K__hKQ{phH8l5T4KAFxUL~_ z)R4$(NF=p{y_S&I5LGp#zZ#-!>bA%?LCyMVLXAQxOPHGX$b~pbyv1|S?px30UBomS zTLxAgs*jgmlTk?`i72?KaeBnqZbu2-eaW&QZBgQkByaXPWum;Cq^6FnFgUPFZoeU-~vRPGL8l4O#ul{v1 zh^(BUTC(w)J$S^|t1Xtpg<-{tE}4n52Awo5onK8^bKL=|+jE-|7bJ1DEwTen;$(W! z9k5DQp_S34wuQN&?d+6~iB4SSE0vve<<2Jbdg&CLgssy6h|FaL&Z?e_?UC)G;1yux zZn_wPn4 zd3gFW7t+&Fz|W=pyp#R!!V_1pmhs1f{Pf^?^w&NI-Fq*thRN(*f@4mUBT^ae<7(N* z6|yh0mHkQf*zm@ol;?bzR3`W`sVv9#IDS$l^KpghC4}KDG;A zCY9>SPv4Ejrf&0Pp5REjBTRY*URaRA&ulz>nRFGTGA;`<4$ossLMi?iTouWE^=e{p zB^uMqMQi%H76mH?(bPmkT5c{vJNo7kG^FjIMqAmzjq}5Kx*anfn(Jb^@g)0dP- zFabiv-S40nd9U~24c_CUq;l`^^i^i>amSif_+0fxe6F?xO&58)((j-4=h=vw^G@#H zR$nVe<-aabZcD}Z)A=Ya|2!%lGC_n)r;roy{4>ofaTjZ`6uy!X%4$wB7}r_bWf^LNl808v07viDN= z?D!Dab>1$Mdn!wrJ13nD)NjSU!8Uu;Nc|IB0to@*#7LvAa7;7k`})r?-08y7H|h_e zEOLO5X=%Nwh-Oy4yXI24G3OQe!@zb!6Ye3fKOXjmZ9dEFTix$+=O114oWDsI8b2}~ zMh6{~(rlR@qb%}=k%!Qb72Qudxw@Ce)cI%}w!aSv=xmyF5VaR;7AixSrOI%xM3I*z zcY5EtL8#+!?u+1DS;7~)Z9&!!ny$e`7xv0V=q0c)2NOw@l}fAW={;bFNjbNdg7s3_ zy67o%I7^*PrG6WQM!t_EJhp(zQxs{CE(<#6aQHndR(l%ccjBGDLVLx}p$XdESos4u zJjZTwqfttAb1?lHKMx%QxJjmb>z%l>R%?WT@#+%BUNVG$S0FJW`s4%kGCp&9E;?T^=a z>ukO>vI(qEcz2Bx*Q1f31L-vONcuQv_r7I!?kx>RppWz=LLb{PQlqM5)gBmA8mT&PQy71&E9{|(~_u!&8S`Q(ps>d7jaR;SQ(B5w}F z*6V_uwFs&zz^$`m1J;uV=Uo_Mbw~e+t}+=b*Yh4|;bmt170ioiSu-W)MftQiv+Q^GPQuw|k?0(;m#R&G}A0;FW$ z{0^&jwC6D9^{9=QjBik;5axN=`T&x16NT>vQX{IRDB|PFuOhnrCa{C9%~@!&grlNU zb-3Kj>|2$$Q1{W*%a(eax3IrR9l$$+{)(Drv`AxEb-3KXX~rtgaGJgipu(a6P?cq2 zHe22HjTR}CIXdtis=fI76L!({CmhYkpI9C?4g+9)ZqFfpr%`>KNA>k_sxssw4fC?k zi(!RE1{AOJ#%{1b`Z!v%vFtxD_{|($6=4b3sIif486EbeL_7!#*r>(9w+2P-qi?>9 zI`obyau>cDQgl^R`efS?eKAL;Pu$)mQd|!&8jSrKJkc}dGqkw+Ktr9=WO5p+zI|h> z=#|}5L$8Pl0agDA7ah5koqD@31r7U!p#2Knmod+X^M!Q}@Oz35wFbVY>Du`{LpNDZ z-+8(=e$Uon(ICF(=|V;bb~a=sUwt=tg8mo4;wG^E<%Jd5)px-+hl=g2i(kaWin_&0 z7slme+r99|I)gHL-Cm$fO3_0MkApVcXrvFd8853F-Q*h^S&Y)H>c7a__A@-Qt++?1 zhQ8gYR^fnmMOh)(&p=XL1Z@+Y^7UmHAkE7e7M&le3DVYdcm~GkSJiV04%`L!rS7Wh^1}RNeQ`C^% zjVqYO(OywlbPW*@d*!6K?;@@NaX-?=qE=7fhs@XcH_iVt*{;1J7X}eofHFX|%v|m( zab6J$>no)3=wkmI;Ilhx=;cd^ZdZM*7WUy#c>kfpOh7Ht6wiam2<|Im4$~75q2qUy z40!_#AGG2^EEw^BYXUS)51ci63A;lQUlLn8wnd8z9NWf*I8W?Vn<61@B z9b|w5$NguHnZQB#a(m%An|M*j}9Dob`vKC%@w6cP zZ}_MDdX8=?{w4Sa@P7{fzvG{RazEZ_5J#UmLpWt^9ZWOv`w-r*_m^eC(F8L|uYRNx4v2 zIF4HL)T_lgX~>4r3=xiO%;A#}j!hQ`;hJe`{f1QOf+~U<*zG--is?KD)m1g*+A7`niu4nL_|XcZ(*ZMF$n*r%4nO5d*DWUnW(T z_KGxoDw_|Z#3x$))9K7_Nw*WsALnF3ALBd*y$U!%Sr+whvWO!NOH5V`+(Gn z79WC{R{{=h6TFd%W&?YT-tA*A(FTmrKJ!Gn9@GVb7UgLmiX6sw9FAyP9O&k6AAhMJ znh+}ig3e74c7je`R^&JMoN2CrWl2-GP7QEwH%XTTc4u2W2U9l}V3=-n-JfRT#Wk<; zi-VX+r4$@LZd_DNM@j%KKFV@g6|FNOkaFkHv&Das{P&17=@CFfJkj zGi%9dXXjJoq&p1~WT*3&aA&ZF zJe6PWL%(gAFO!-HiWOt((S^QDvUbIe+L`;b$~`!lNfbbq=rzh$F}NT9%1SUbA)1b& zsvBvdW4s^D5dNzta4!%o26$mnMeCpehWw_TDVgG-k*V!+7`Hjebpf( zo6KW3;ozUC&=CE{rcD@b!?2I>=uSUAn?m^gOM&bERCzBFCjZ4OHHk>7XSo|nmQ5R`&C~MI5r0hDRiY+_F*>b zuoJj6*Gwa(xG1xh-hJRr=tI&U`@*wP-!(}ReF+feI7wLm@r6VtqI~YzrdKl&eTht@ zJpB)~ki|&K2K{o$ipDw>v&t1%hR7gc=vGv8?0NKJTBn%7o!Z~d(OvL6oCARW8vNJc zUxj}d{{#46_6O{d`Mr2wgE##b zO#}Q3aFS##Ij{zW2LBsP{DS&*Ra8X#Z8RBR)z{ER{fN?wr17aDCgT*+H=6GTW|S^8 z=_ET6gnR2o5$%5VVGf+TR35N!isvzybiaert5h)lM)Mu;p`SNo6p|nwy&*#_y|n~u z;u8f!#+PkOAA<{90MXAL4A;4hXJnA8#9Xl^8?z>`a*U{!ZKRDkIE~WJE-g7if3ic6 zYw^|@G>Y^K?*Y|0z;v$GJmU6YK3OWb#kY1g#8xvmDNX1@%da`XZ@@;enCsGNN>$2J zhge?IN4^85r-*9$W;g|IAA{8jq?#llfRtiV5g(wz8#ZfD3k?X0(9$Dn0uBPN(&Qjg z9z#M~&bz-2BjXQWpn#mawxkxpvI+HLZ#0<9? zWFN(qJ;YsbV+eu^uHQ&f58sS}`GTNnbk6&Qa{}opfsD)c-|Wl4rKtBGS+4HW``GwM zrNQ-t^^?IzoCP_5elqw3e{G*If1jK@g}o4$pQJoVi=PZW(%dI$FG8LJ@HhGs&VOeB zA8|IIJkJ0=vdrLm(qcdMat81T{z!|T3_f8m#N{W0Pso$F{ABQv=0;#IBWgcZ--Q~! zkk2v9trLw|e8>1}sfDl3?6V`fJdtsyQ z>~b8NXjW!m07;DB;43l7!qGtdEo74M!jS!ef1$3~xC4 z=ocRA<79Zl(MP}VSRW_D8;(A@wECcYLHeM4QhkDSz^!xHMtQ=|dCAXtrS^Gv^lQ%~ z*21PYe$p$v6Rz^pJo@Ss)IN^2G4qk&F}YNDm2klm+7OC{GLz9?3WX zkMxj$M_C{akMhLu;PtBy$|wEkgKWWXqr6f}${)Ty7~aYH7!JIC^}+B?*2i$*^{Wqt zcd|Z)1Fv6wFuarXF*Lj)s20;!8zEhps|Qh!wBs9kmZx(b$)``;w1{V1-<)6a=_%)L z!jp59KfjATDDU|5Iq7tAuM~Mo*a!NQn);>}e#%+`znZUb@gmt(K7IDa&-p8#p1trB z1UX;e=cFUTPpTLA)qE&VXPxKMXK(zRAM@$i3qL`KV&p3XLsPoKT< zbN&_>9K{9AUQ*S!qhWOB?TB2=6J&L_FF2qxewJ+ zxcrhcRHAM%;t275NrU01Iuh^+(_ru^{FLDjhF>E;%2XdmekZ3NP<|YBF!^zWQ%dI}UamoPTY4 z4SqHK#u260@UQCsz7eJGg;L;f_>$4D)5Q&{@{oD(ch`SC&~7K&+@tJG{NtOeul3bCj4=yDE|T+ z$~GMN4+Xy;`dPp2IBe~7z#mBd>rWH>e&}cUPw5A~sK3~Xg7XaH5)4`X{BcZ8brzZ{)_@6uV^o*a*2kejj@x$c*EgYeLis>2u z|BO6+FaAqUJw4<9LL$AoekoPEK1NKSkWCn5Ze<7O>Gk=vXOx@5YaG~jK!@Dijdl_* z${?GlPp%u$=8+-c6Fo`z^mQ_P@;x>9-fgj*rfQZzHct6 zM{yEZjGb;KLml0&Ol;Vj2qj)%9&)YY|$kySGt(Fomg+!>$%wd0s{Oj__#iT6?&7PLJ&32VCqGM^&~2|d>4pt3960k3n$}y z>%=nD((3szkIQk$4Q9kh;bX$iU8S|;>D(5%s|5RJwZkVVy@yXQex|P4K52a^hA&hg z7XwJVGmf`_=M7`6Y0@5P_x32|(m(MjzNua_QDSuN5;yGZUqQQmpRttAG%o;Mn=eFe z!a0=%%F|o1C7HZnaa0_CwrY@e}6W7$8u+u2b= z>o~;f4U=?{@*p;q{t^=QAj-1{;V9%N_2!eTb?$N;WmC$>9yXc_;6qhGo~zMJOHjxy zS@Ld@OgL9|j=B-kJtJVFO*EbZR?jh?PP(MgOn&rhG%r-+ zCi&46UZgKgG3u>L!OCBOj}NU8NagLy7l24THMm+S$NC*}^&z~3vQfn3G{wc~w>P!=jF#UIzK{(3%ZgqV4F&YBXeb?-Z}0WtDIkR#s)?#|jtP}m z3xI{+F$5nWIM3*J9Sm6L#6%x$*w>U#-q3K2e9^4UYl|T*3tA zg9O$NsMviltQZ0wqNAc&x{wnm+r?NAUBb!hg_e^o=)nAxz^!Jg8p9a>#zJYf0-V6W zg=UF;OOtUs4o^d?TL>HgsJ<*2w8B)QvKSMOkHgQLVUj&{K(YrB$f@!p25YHAA6mc7 zAJabK=|8T05S-7FeW?7Lwf2ESIJ}_?oV&Q}5PMc|RQ*P1LDO41RE}aU+oX*CU$h4j zJ6rC+slv%=lfxoUX^!~luYYS2nVj>S2=5m^Nv$9Jf#*hozgPW^{VFC=DlrAh?=PUc z>Zp36pD6FO?XBc|Z-85FoQn5`7@C|RoI?u=13r58ggwX7eC%9xktd=$`Dn<$CyTLu z`slsr>(joA#C~&9dqS0G%E{vqn)(1aT^las&0|=i9utIeg8txX;-hEfVJ_plU;6gI zIDLbe;-G-(r(2w;DMS&=(&G`cz<*LApM&~!?BRQaJaDK4@3Ub&Xs~h7=nX?eS{178 zOEu7uXukz)F8~(nYZDsRy1@G16Efb%vcP@BXWNKRBCVJFwdw!bCq2RQ@xByJ9~vtC z>wVG_JaJ|yrzchi#s6NP^aRhx>()7ao0`6g7{MeU74TS`MWwyB!RT#t_}L3pCHqOK z9^Ptg*i6#c@-$*|bK~e!D{F|e#F#-9F*ag&VS+~~2_A8pghz~y7+wp(qm%@XI8VYO z#zzeA0Kub_1dk+}fXDllj9bP*Dzb?;N#XVl$$-%VZekQ-(ATUMjKau}wLAcTAz#__ zI8AN@7MlYG^5X+osY> z?}6#1(4e25pEkW4LBmxevES`+`>p%b?3d^b4Juy>Rqgjvrk8Az=%x3-_CTSk{eH^y zl1&o5^d6XA3RUg*)agBWemSM@{3iPN9-u=!^yy=mTk< z1NzVbWAi(s(b2_;j?sXnq&b2+kBJ}qlWAEw zDOjrqZ(|B}DkoIo=Lo$lU_I5Zaya-58A0$*?RaX(;#YFjDeBA90bhrv)tQ8!c81~8 z!tgUm|CBQZpN#xW>Q}%&bNUtV&zyb*{4=Lt0sqYDx1II7@r>nP(roZgXAVAT_DsSj z&7Mj4q}ekGU+A~_4D0vI!58{HbMS?J&m4TA-+|zJ52c}6#l4l9GeU}rwRNu;uEuOj zkWM()HpSK_PYS_JS3hcpiZPXOG{__TqOwt^%(u(kxEZTm`0Wt08{6eBRNpvwy?3=l z7r!MY7@VQgNFNmhXES|dXlFBhWT8#Z!1Eax7QYWAptm6%>x;0a$IqXl!rnv@N(_^1;W?4PMoHo#h{F#d`JnJA z!pDG5Tn!4JB76+^Z9~DQ2&V*}M6NFA6U!2W$Y?dA2QX<>A5Xn>G+)*v&b#eppFGVV zrWUZA1^Y|cL(DYJ1L(kFLq)TDc5-$gFvo<+2VN#9<|wo)BBluBCohO#3<3zIIxtnI z9(_2Bg@y5~%O=4&Kp@eqV@s|#F=*GD%m)2~tv5-mgBv1!zv~H%B5Sjxu%3+y1X4v{ zK1k@Z-h}8F;d%m7;8vFLC%4{Y&Ki3j9=&Hz z{_90Atyg6GFBGK)FWnGzZ-A#pX6<&*7Y7GNM8e+1$TBwZ`hE(K| zy~>Z}B0wykU5>kd240%1DM5xqKUF0Go+>#v>8GknObMTx^ix%MF3X>qItlxqpxQqd zN#bZ=RDN;e<;r%*OmTsz@J`AUBeZ?0Ku2u<=OF#P?Ef63znA@=?ewcfKNrSD>Uq;M zxclY4Np4?I+2KASx&{4Pc|+RlzpQ-?NrfUCO^q*|MZ1qFtij0AB#hJJN zbC`a%|8tmrw*Pa2elCp%Y5yA+xZmyFC0KLAS<)9crS_2Ehw6uT6ZM?qr&s$(@T2uQ z=lG$_5?6*>@T2uQ=lG$@Bhi02IsdHwjOCwmjvsAiQSD9ZbLu(ClceL3s$|L1`JLG%CT zfd4`B|Jlwz_Uq}zc>_3TK-&rsCk|*g4xC*5^M+0N{abK`mCcivro-|S`fwlZot1}L z-zMfL`%Y0NYj~>gxt5R5QVw@{3hMWd#~&4KpJo2YbU(}dQKkG@=8uYAEq_`3;XcZh zZGRbPm>E-DB6Cv4RA)&)wfy&4gTTH~*b&{Gm!KlrufZMd&el>y5p(&G|W? zh^oM1F|>f_h{t_k-mUJT4RZ^Ef1+w4_$$hcQo8(da9V24D}f19XIS#T@*zDEP; zR|F=c&f2|Z?l617*CtxJSiDohHDmk?+CkgVyoiU|z;lMz2R=>wlNkqpMN;^D@=ux% z{)(jV`Q%^dpECRBlmFr7|J9%K{Qp_yf4KSov&#Q)^Z#d+|KaBURiE?x|5@dKxcUFH z%Kvcl|7Vr|;pYGQKj-=Xv&#Q)^Z#d+|KaBUvyOi;KHPWq+ejOjX+}!)!m<56zWJNx zzo+gJx5>#K8UqM!;>^F1OrZJ>r0HzED3pENlvcTI&E&$I9(iA2?5w6$X3v3C-`Ifl zI>T7Q_E}B7v8yasH9e#Ejg11{{4cxrFL#DK$MyE_hgR0o9W&|_{pp~Om9vqkJUi** z%(IcGJUi(V@@qST^l7JEFxoUC^Xu2}rW6*-u)Lg};o08Ggz;%@kJj_6^C!I*hm4HA z{tWMIqOU*0JDce1&+tw&eIKv<6ZyA4HJ=^jA5j)O>&q9C;@MgLkpZ4r`HiUj6L-*x zMQ90u1*eUsIyd*F)mh?P_MYt>b?rVrqFuVs&@5bYa$j22mYf0W=V10zDDQ@*hYV1q zhn#{Qa(znlP>H9~Lry^txjrR&$iP&3$SLR{*Ug&&tvPsvSm+N#{$o9$lbtx~2tZS;`} zgHI5ZXD59mx!@B-<=IJ}kRO@TX`}CSj1REc_1le%x8JX_UU${@j&QqgtTf)xBphNu z;~D+gFn;mr(#K{uX#e8VrH{>SBbi;Ix!h-b>f_Ld5~gqKtDnkWcF@om?;w$zQ1Dgm zlGkzL%TEQMR8$n4rq6A7M!z~wTvX>dHhR@48ZzT+>x7?Sd!R*pdybE`|5shbE@_k} z+#$Sh>(Z*N&TTw|7WUi35Lz%@pIf*3QjuJ}(~Y#X>O#KLjhwS{>sGy<>=J0MYT_oK zpt#TQ$H(N4@>`NW`U?2yDfr{i-u#i*;QUbxl|OQ-{E2j*IDcesN&e_dT&gGdZ87Pox`yKU&{>QuBL6 z&M4t>m*u3zBp zXwZv`V`=gOzmE%_%C0jBpJaO`;gi-z4u7D@Q>d!X{$bugL?F6LzNwC#_$#}Gc|QSbZ*OSus; z$pk+^dTD%EYq(^!{Z|08jZ9E2gf?pJ&cw9RwixF>ACr7|Qx-Gd2)x9x?TfW`mQ8hEc?pk>>0Oe21)MR(O>K7QybocSv7`y1)-8#85XY zEc{nluL@&{569tQGH;K0RVcpBr|(h=F5*s!9>N}{hunehkiLi>K^M_Ot~fp9K9lqi z_BcJ{77` zkL8>udkKMxIDT@+B|+|lBu*QC(s!JHatnRL@sm#+KeTA4nICg zrDo6Y;}cgkZ}y5W4iyuGhg0cJ0CDS*jmY35H>!y$X2oag%?laSfa!@Wk)EimB_KWq znv}($=?RrcPg1NUAU<1fUI$Iz2S2gyv-ReE(DZ%qkC^^G^82{-lMqHEe_~b0k60g2 zeyn++MA<<|U;?;(OQa;Gwf5k5kWawDvSErG#HN<6UhpWk79I&94v+NXcaTqjfd~t6 zkhj)OdcmXET6jc493Ii+XAS}kL~zWcYVD>MJd%tS-az!REGe>2rH?#>9gCiWXoaEk zpdQ>VW;@ZJnEGnx{)={rE`{gdaZepCRt&5oy02PC(&5e}e@hvLI&?IJn|c=P`U6d` zzdFZz%)F`zt-o&CAHe;F_`t|1;b+Y2h+Bc5zT^1W&G^Z6X7Dp+AqDDOGbM5S6ecl# za-A9cZGe20hJX5w<7YSHC)bGZ^XN8=0D2ddb|vnx^APOYp3!3>nWwUo6QdguGMtHR zs@Cg!HU05*@|5;P$ti70@%R4cw6*p!B)uU}n537!hBHw;0KJr4J4G$%C10*+PY1nZ zF-dyqYd90n1JFy!wNuW5Uh+L{^tSb)m%fHGkvssslw3Q7Ea)ZQ;nF+o@+$DI_1@m5L*f0F58?t--YA z(Xj1LNIt+T5l2vioi_X%S@Hp1X(;dyO9Q73f1LlM1&}Ll0qpLt2J06;H}|9bLo&p}}|6x3iQ?<6kjZ}h@Pq8JKa7;yr&I(j(iSBh<9yh5g1`Nfq1NDO?A(JGY_o(7^vfnu9r+`n(ODRJN8H5eemsgGn`b*KTZFl zUwTM;!=i^G3VO)JeTPBmdGXZfA?*%}9*QXFA=l9KynJf(v<;UYiYVwI*UJ`uuIGj{w>i*J2m*E@;H2Q3;5(ZJ@83|aropG z@X2+0;FC(?@X0OUldCU$uh|1%V`5N9e4F}woBMpHB)&J_h2+Y$kM+cyp(?tMx|XJO zXV+S=GJzs_4_R=w{jqYh{7P_PwpF?Jq8MUsHqnIxy8?GuEp*{Po!oMB_KvS#YQ~MhxWx{-mX>lN6S%RpmXn==9{aF zWe2nH^5lnpa-(jky~2#JEoMXynyz12;@xVguc8q4%3Er$oQLq>ZDyq;D;AU6y$$A| z^?GG7K8)=Hq!_QJn5<1PQKUdxN5VCxH$+(F%RdbA2O0*$QWt_T5mm#z_KF`Ony4DCl`arf!!)WIzNC@SCTbxV zyMXSmN;dF<+#_fUsF1jVn68=*wOvxp8p}Bx{H7XFR2ElJWpRWbyLx?kXb1O6Wd=YA@6L_O$u3IBcg zhd{%V_%kg-7TFZxvs*`y9L_^VA(`AAm&xa}jwoD$%d-MDYV>*=Qaq8u;*Nb6Z(DcZ zVZC0rF8mF1s!oZd$6_Le+=>X=aEZdVCBv0I;s1}qe~ECpD`>hVw{cA>$_Zy^dA)!a zOn3H4zzACt0E6k*^ohV2{}&OsgOImWN}pUvMepTAu=(FpQn7V7YTo>lu@+s554=4a`2-mO*?V2e0nxyc*4sB9jGU6lx%!eOQM=N4Ro zN5N%5t3PPHg`C;sG~H6V`7K>(ZqvoP=KAl*Hc9&VLacp6#!ARO4|H3f3of*DD;aQu zT5cmOW;qt-EtU6409+p~su-l|M&;t4hsY@t^omC1==IjJF~CAe=`14@Si3hcN^qm)$4_lk^RNk zUfel1FFU;;w%4e5KT5NEy#V3ehMxZWzw2ztITpMlJ6-OSBl2;0zW+PFAU&;hnEF((3wR2K+`U3M%uLJ3WH-X43U1F1~XdF8ri44cOTu+lv?7E{)sgFqo3DLVl?oq@j$ z@AQi#TcK)E$_~V@CS@b1Rjxu#6*U&dq?j2tU&@4j052*ozcA(?-LiM1nbOgZYZtN- z*+!-y=aT|R=C8;O_Lxp0x*aMYWeCHhbTDBOgD^ogK3QWtCNi*~A5v*FlkLz?oYW)a zE6mk7Gd!2`J5QIV)5!}fvShNvh1r(Ny^o-7S(t6I8W-P=h}H=}NcPw; zFZ&V;9uswVWEoPdVA96!M`)Mgr8SM-dYO}2*eo^m7LsWyyKZaTi0V+I#s`gI3MwnaX++rT3PHPD=G z54~e5jj`eQ96tuLvV+jpJOL*&af_cl$ihc?j*l9|;0Kdv)@Tfpb`Bs>RWM{I%!`^0 zFdUSBA`Mm9j~>Ls1TBeipAVFhLLC@c?;*xuTNx1ekGTL_v$;n|5usGXHK z;KgNW4TIo5xBT)4+S=f zKt~%A)lv+Vm*vZlqaBWOoqv}L-4On1THRnN*l;1DTcE1UwdM*qxs(x2pId5 zjJ=k;t55tSf#5NMp@t>A%hSpV(AVHbVp#>nc#u-R!UQ95b|UbBWT0$25vO}`*}ddn zMv3;yj`p8`?nL12Wp^h7Ybi`y*}$f7coy0hI#^jTBNWz@G^D-4kn-;w54qETd)ZUa z04hT7Rx27D7FDbo;d5Y~O=K)!4jH3>$mW&iAV7A}dcC_}*$V;X%M^Y@X(a(&816utyYVR9I}F z@`cMo2bGx=hr<_ZL&)~ysVP5Pfu?afx_iZ_UQ7s+rR*=PdyA?GZ;xS(*?ZU+wRjsw zmB!Fpk{`^@-ZZf?x_I5&6ya+fPoQ$4;R-X(*=#U`52WU7$6-)8+k>V+FuhK0eBo|H z2wHbJcXf86i^c;SU)%LZ^oTITVcg#N7QfI8ze?0hMx?x1UYI>uGy;O@VYJ$=`TDLr z+?YnKxa=uvK!u_0D>oRNyS^UEGlntea7-t(^0B~xr3$rsk2kn8nz#Z9X-h*~$o!lHgXg1=JYHThA zX=$Zl#pG<3>(Sj!lN}PQz-OJs)7SD|Wg;kL4$^O0Aiqyd2zL#5P7^$1`AZ9+`|dDh zgd-*_fHAE)EZYbK0B7(xxZgC>+i1e)1Q9?Lw%wOLQy_R**)mqAyXjV9Mt;ZLD)2X$ zX4$DPB)W3d52E6yuEa`IwN=le0kA=Dueco_0oxz&)o7*&)EGjWS8@bwC)o3`gr~(l zy3tIZ^xI&N&aWn6H=5V0F@6be55*x5`juPCmckix_|5|-wmacocPtjWLAS=dnO@-o zqc`nd^e^ZR7a-`Fo2`b<1L1d!>yDH2{uIB1yagRa%5MQswh=~!Xs#y6u~W~yIGT-+ z(nwb4eyk^hTQbPupvfcK2qPT93Qx=kD_2J6HmyMzFc}ypb+z`^`VfnEm{*Zd3yT8# zHW;`GDqYi2Z;`I_PbU$|4Fzbhb8GZX9on`O7s2jJvpY*_=wo?(HHk4PaI_7#J44Z? z4JlHp)xvRP8+SdoNu~`ZDGeI2`lnNa)<2yZvz6PVO!!}z-R+-FT~ba`Os$Wbec&9y*Vd%5(8(JBM(YD5$9=k}9{kP3T>iIV{1&CBy|8l}K9Rwq$qK z(09E`Fu8jXoB@LSZGnUEOF?*Mb~lDvKrWdigVGXTzaDwPB-==pxncL0%5)eajkmtZ za(i$-fZfMNtbDU47E>coE3__Mmun_H*()~#c3B&ch@{n|@J0?p0JX>GDo?>7H`TJ` zwE_^wLC6)Vz0lV5JM_M6YEpF@}QOPgn)S(XP$PKT`65;NQoWm>qS5sh#Ka*g}^;C#i>T|m6zi*IP z!t(1YjZMj5KYMZ{kjZ{Fm3u5`q->plyk*!{Z~tG{=t(Z?wt67-9?AmR zM%SU6VQd9{m*RJ|Dc7ZA0L=Af(3OVtZ85jCK>0TeuA!N^t-jFt>deeL-?&ldJ`ZK7 z#oP7I4=(d|ee2;nyh_&c`l2mYq|DP57sVXuU~pz;HooNi47jDSMX^`P&r==->}BQp zKc-ZH=pq73f-9?6$tH*{T}In)c)Q7 zA%~I``5E5w3d_1~Dl*ny;mzOr5UPNOtmTG6r5d?n*|O-EY7$_;wA9;XfE-M6ee~d z*6I}dZ<}`?ub1n>$0vFYOx)d74~JYQ@{qOAdrudJ)8)06z{KGFdcXTb+yw3R=jzKX z1qzj;utK|}A?CGP>rhPh?(LdMrcC;Atq&0Lh` zz5o&3<2l@vx72M3l<4OZ4sTNo@^q)YU<6FR>jRZ|`*TN;g-k_CNq4U-bf34)1i~%$ zEjzrCDbcBMUdI#{DNb$FQrUFhq((%&#lEG!KnYP8j^~eDm%Au!^|i9Q3*1_A-5;z< zcU$8$LNG-~*?;d&Gam7~yJXjinCnC!BXT#ghwMs^Ejl5uuwo=Nt@2eV1%-m& zb%GQS{qhFW7Ro{Hi#O=q*CV4#qt>nMf&@JGk3ycGJk#B^=8H-Z2KYN%>H0?9WeAdh ztt%Ey1Kex_O~rS%8XNqsE`T-zvEPWO1__z4tFsl}ct^*`E-RQa_-A11s{}c_Tu;SW z{I4ij+~Y-`ym~f@KZ+P@E=w;!Q_O;gatKJvO!TRv&%fc5B2#${2v&vGOd<1=2Z6OJ zGF2?xcu$)p>%D z%P@NeS5ferCvw|YohPRV;=G4Vxzj1i>UT@ZvWT(_qKq0O%a)a0K_1!UF_k?kUtKPx zDw%MvtS1WmObsSfLBPuTa+~rbdX>w_@c}!EFoIyo1tY6%34{%%=({B-zILK~N0A^e zN_*oA@;+oAxs&H~_ZfHKek-^2=>G)fV|DMWn_~ByB-70|ceco3WKSyj#E~|40$*^kn@x`CZZN`oIqQ!b}}@eRHII;Z3PVF7MQ8> z*u{7}3w!drn}e>Wpl2OOQ8MA}cRktRYSv3BsL%IAjpd`47R2077NPDpfGP2I4zX9f1e(eXOKS;+x69zpmR%D7$y`lUam<|_bEl!n z5_4N1EJ_ohTth`?<@e#3xgx`DslFFc{jLnmpL1l{mDP!ykMejnWSD`OKBPlS2-EWa z>R)jpn5UB)y&+@v3FUc61r{NH;CH`PTv((m#5eM0bPO5@Bv9w8&JORQ6S3T*(v>lH zTakc|j2wpwkRUI;03pb`#4YudgZJ!|7q#E*rx7F!QH#dHx3exQM|s?S9DEQ=oYTz|Q}avy3F&pkWvSMZPE|33al@P9|= zjCt0i<2U-3bM>!{wpqS^i&su&G%_2s4l#omWFQ5TwkbiC~PAm(bL0h4(* zHlrqr-sA1Q_2KKK5^wia(o}EveCZBv_s!C1Z}&p?bv>@5QJ3c-{k87No`($6g7XdT zNikQm_nuar_ny~ua(ncPJ+AkomwCI(qzk;=_foR^B}d%i8%p=xS}D}RLe&=4ifyG|%;=*#aq z?Uamd?!wY~BoL}+kD^pS7D0ngwc^UyFx zkbA7}r{oO&F(1#U*^9Qv1u&}EBB`5Xq+5ICBDi9%ot`h~f|aDR0{a%%(U^PB0+e+>@}fN4YK>fpIIt-9=$Pw+MpqlO zgv8ythhU}e=wE1q6eDBcDK~hP`|K69WJ-$BUZEh~f(7=9AH+TCsa{ZwQnvj$W3KCv zz48VC?pYKSl+?ozW!Lk_91&XVp2Q%pwcg}kYxUevVz2xKiL){IfIdPK17uj2!2;0M zBO6L-a2?S{$EmrY48VnzdAq0BD_x*M4Y^f>c)A~eNTn}%x|d2@&}@SO;Yq{Pazg03eq7^{2> z6)?o;UAy($?y;U5R=7t!v*M-(*Dtc7#=w#tfz-Se(#o6iu6EDC^%VI5yXV*n>DrrS zwX8M;!ch~3`del--+!t7xn1_>+H>BYk7JJOa2?Pe^kK!g>y6+%^OKg0xwpENsk@@j zqRSa*mcxC6qd)Q70K?Qns!W6t(nP+K-FwI~V(vp|3MhpLUABznI5uvC_KGJV5VpaK zC~;SeiWli2xv5+aBww*_S)uGci0e6y8SPsZ+MaaosBDq$B6YfN_pE(KC(RL^6Q8RI zwMfUjIp_`B7~Bpcu=!luV$-Q#9dtFJ!&+CM{2h%zWY#)}tJI$|e}2@6oZ)xx;dVL- z;>evSP>JXQrIsKpo9S-0S6l(7u%U-ZYp$K(5=Go9d=M3~YmYRl)SIP?+(kZkFU6ax z6H$`6VK))I$bSP`(?x`i)$Lu|3}MokCYSM*Z;&DOJm9`9o;mHbNKjX(eCse5BewW3 z!R6$Qo>xUJ-mrk0F_ad2EDT_a#=h8(B>T!E6^ z?eKQbSX-#VGcHq>176gQw*Kgt`?Z+6Rrzr{8hZ>M1w!z~<|p*7)^ST-V^y1xd!%gD zq_0h2kK~Y?QLB*o&xH4~WuCPWu>G1!`l8p+v28(%rnPgQf6;4^t?(D(pq41aA>H8Z zxlfwai;1tj+h4i5hL}J-I%Dm<;kS*^8-jT+w7eai5lCHz;zgiYwfU9r6- z)JMUXL6JAFvK>CU;52@_uP-joP@-T;?pjs}MU{_J{y}v%-rK>l_j=v3VpOUQLgK$Z znxfoK0zfD=+Lx`2T`OjTu#re0hzYo2)`dOMGg>fE&uD_^898G!^Cfgn-1CczF-ls< z-J&fts#$~;)NMeGg2dv_q&U&bii-e~9`UuuJ7< zoOk@L^lA#Fu2W{rJ%M^Anog4d6!|;Sa-V581IbGCnX-ye1ra#em96PBWr;o$6}fNb zzAkDa|JoBl)5W6SRDlsq>NjomyI!OIQS`ichbiV?%RcgoH)pPWO)5o~4CNqUpk9*- z7fde#vm8WSJ0S|W-S2MA?Ubf=xNIhA_RO^t>=jg?<+>+4e2HMKZxR&fmET1a>T)&p z>2fu?PC!DKt-V&z+>C)%qWLxSXqe{l37XO20uwT@zb-wC&Z+y&KBR%*CqYkfvD;K! z98D3#6cv_bK`G3Y0(Hslxt;ckZ&H40h}=uBJ21M65!K3FMZsHQl8p}fx6GE0+>9+6 zNAXeOHs>H1qa0*o+$)slTji3p4UeFe2--KywpSjew_ZBmTWZp6NV8XvD&<=(***TT zeng&cr2y|eR$cacRzvA8t$O&nFI(5s?7b1#*7daG?H*I8JaZYDv z~ED19mUC7k@Z zc=C38a5qAT{>XMXf+jzuoHqx3@Ae37SoEN`eT@el=qwL9(BnPb_uDJ0$bZpCmdFn| z?TNI=e+Wlbq>_SexYnKSd00QqJ@%%X5YGd-NA5*{e@U~bN+BE!i;LRy!l3IA23;_i zj1l685i2keW;0j$8=wbcIIC>-{R2gqN! z(Oy9VKalo)_}}YQtoF(XDyGs-*NG_>w}}{#-R<6n_pj};2mcEHMprxJuZy(cp`}LPB{HO3WeNx>2v$MvG5Pm*wT6-21_?6!Kkzv{+7 zKs%wruu06l6Q=^9XBcz0%L}^vi#GB2$@8RPm7}0*6MC%cQPRkmeb}15?kx|}Vz^{& zyUsmUjTCb{i3rOG`gjz8N$>BoH;eUZw+)Ka2mibof`WvLm2Y*T&W=z??p3~KuOK0N z6|=qKXK+AF74(u8QwFT~2x+Lx`!vTvj@*V+jjlak#CJ3=C*0B%c@{oG`^@vAE>-Q4 zh012*?C6o4aOAt3tR3Sylo~?}m|i&Hf$V8P-9RU zDHkjlqSIL~7ej*x%UXs`ki6(nsh>vp79H|qj+V6^ne_kJdl&est1HoeCpo|Y0*MM5 zE!H1GEEL2*K!X9z$qS+h9FmX_D@aIANMcCR^Wfot4Ibzu98=R7r^EC*9jtc7X}vT2 z?^w%BZ4HJ2Y`rZ$rlsn&v9pZn(rD{DX2ey#mp zd+mLsK4?}%FULL9TSt(t!l3Z)_|yz|By?~(fAe%xN{t>B_q3;b|7svJ`jj?*r+47p zVFGvb?{vWa=-&v=enEVKpW6Mx7p~aOwk2>0dxsa8t4_TvoQ`}r;6lgXLrFK368<$y z??JVLlO|pJ1FXhRpNbrwc*LyByNkY~&rAkmWrMqWzc5yOg1Ky1|Eke>wYPcsl}4cy(uYcU*gauRyNd`G4O37oP(uki1d?brOYs8 zLmi8=M7t<738Fmghm*4K3hy|s(ssWOk0NVNpX|#EUU%{c(sHWe`hh7Y`;2kU!1$AW z$-#-ZI#!|(3H8qjy)h^B{>eVXfOZh7YIdSmNSiv8E-u|gzmZi)=nZdlfpHZztt(FU zxe`KTMSn%&dKLdFo9pn7_tm{p_Q=|y?ya$gNJ;_m9Q77NpO;lOo$=lU-DM|M5wUiU z9yg&QM^;j{V*^udR$`&|W1*qwzZhRC%N0z_<>zgv9jRvKW6s-s847fq0O&o#zQg%y z^S|b+F9ZJrn1X#8unKqski~0RYOKVyb#mmAJ)DCl$C3~S3`~@aMR!Z@;=rHi(nDjy z?%3MCm|EM%Tr0{ylGA&qv-ilTVzZC|Oo=`&YiHysx5R?uG{F~s$!JXNoV2(P9A(VP<(eczQ}NO)79ZQ+34d^z|Jv{eGq+qF&4=`el9l|rzUU$e zm-@Ts2(hlq-M90Dr*QC3-TA=}z*{Ei6S^Zxx-P`J*DIEaV#&cq0)5dNv>{cNX{$IU zaIi)OW1D57i(W^Ik?J;LiO3rF?pM0jx{>%uOZxp7#AEB-93icF>jNSU^P=LeUtox= zsO;k0vn;i1MI~c)7)_AflCQ|r$0$r>(&PM1`9XE=^E*D%omwuxJ$z4M!?K{Q3V(FLTb{RPbZdv;0 zartH2fBDcb>x}gCEZI(x|jS5w~=#?1YC6e-*u;! zbf@mgJt(#yi#6I;c{+g}^X+`~b~l52xg*>7G#!}dnIuQF5N zo5cga?6~FH(4^vl2}_*KV~aa(akhLY+xMUg`&+Vg*6J@3byYQSZzArA}f(_>Q=q?mKY9dP| zhMa4Hi&s}ize~tSw5F)z)}_H~S4TfbpxnNiuCbbYwUAfGZjAmajV2U6?5aumL(Vm! zXV=DbCZfMe#kuQhiLUF@cda`zCX1ZXs!$A-hPY~U?*9?--S@ZtlCw`2G;+lD27G^5 zIMuc25OGA#n@fmaGZC|%yzlk*3Y06D8cX6r+1NelotGEqY4g8n z^T3a^#f8YcSRyFS8z|5&W3>04^t`kuUp^U5jAYE736rl}zi!#XutCX4d+?dA)fvwZL|(jo_Y1+v z1(K1&WA7}ECEXr+Z%;b;ye+&VLxs3;=mc*iD@gNpxOt!o!YdPsIM(pT@P^aEVFsqa zwOCT#TWc72btz$3Ea@$tmx@u2l<;S$z$pyDGTg6P_3-vL(5vGn>`|IbRka*@X2&>% z&F04OAcvo+s4zkyr5%{X#b&4?L%F|C+w~h8SD*< zKOH$7oSc`}us9?1fkE%iIUHFko9E|;Dk}0SD!f${73hyGL}e_RI}lv3Iy#GGk#w0t zl*(pQRIK(gq0EFT_EVrOr$jT_c8>AM(FqQ=j5Ctd6DSq=s`JumF^sJWuF|FxSD0lt#nqVI)pJVNrZ=G<0z{1 zNYLnh;S zL<5X0=qb4OOzdQmV{ublkb7$T6WOmsCK>U;E8!(OW8DjPhRSxoa=6&FGc>08Yr*dk#~Z0aE*(JQ8^=)*`=V^bf)L0$}a^*#h8H#Y~-^5{evpGL6zWKD2(Rcw*? z#HK!O3Ybw9l~qAaZ0ddqxWW}{PU;%FhD*M^h+tXA9Le*_I^;;+6zL|cp$M8T0!)b} zG8CJ-k8qJe8p*9Xu}_U8cHP;DO|6RlJ$Xz>tZVFmsG3~+nw~PIJ}PnX%n_+KtHo&N zH7a%|{M>+?9O?`|;-V=8r$#*_Lr+PIEfNPdVfbeEqT{p%887XaM$D@s&0JUd2~Q%i zo^jov)LJ+d`PJG!k;R_!h!8?)RsUcbC3Q28r*|bEU~8lLL@q>z^rn5?#x zRk^{(VL=pWPi0>ooQKxX%;2oai|QE@)2TdN$h6(E?9qE1)CEp6^K})R zjs#L8f8v%B)OM$C4sUcrk)_SPj(RYd=ubKLMD7rs>$ z(bu%aO|a&qNZ|wSXf3rGaXrw*ed@{w+yuZYvhaa{hYv{E2Bv8)4@{NFn`0HxubJ>` zwR5~uR?8wdGCSg#=8bqVywPozh!Q?5dOr-n!AVs4XTwWhLL#0Nn%;Pt$fGm_^>7En zIIC5y#3tglsEpfsK-+oZQK^L0ZXT@~f{(fB!HFz>Jxe>;pKpJMmt_vVnUebz@k-l0 z4bpgG=CGLrC)otkcKwt{cYY|TrtNx%zumj;C9m(Qx`X&8()z zI8}SQzb8SW_iz<0j~&XA&9jYi_*8>kp1jpc2<9JP;aWMn#ac$ zwXohbXBE49HF4;#q4bZ*S(g<0^Jp#yK1bANCGTuT!l>p*aK=dH>7;YQr|sTKvl)0c ze)u_=y^Wlj-EfSeqF=`tZ}Ml9ugozT0{F+mX}gY)hDht57MvWMpk>%^i6kmDDK3;B zUlo0e#Y_znpkjB|*x2Tb*k*TZb9!_eCr`rMViz5=jX5dU9H~k@`OJNxn<6XHt7Xo; zBJ#n(*qHF^*F=_lPfwhw&vq|)U|`JCB6r`j(sftI>-Tkha33?_kDRWm)SdTc$azs{ zN@PXq$%F1->dAj~$*wI!T1RB^a+1&a|>QeSl*Rv_AiavV@G0XDhvMO)%*I4ig;scx3 z^M{GMz-e&hDow`rs5vJu(!1U&L4_)5TC{JTfqii97{W$ME5_@SB4P zS#gsUCT6YBO8Co~(7Xw~!Rv0WWs@-Bjo{TNncnP44qb`kB{$cm zgwi=h4L{?W@J8r`2rnY_^?a)L`To4VNbJ-zvaaA9HaVY2-trKj|I{-wdmbee{(>4S5Th&^VAGG|dkq_U4lJ3u_*eRzDOU6Xn6B@^W6KWfnzGrN) zj7h;vHp;V&e`p}`Gx1#&{$)yVk|DtN2KFj4`J=+ycj|~l6ueY|rtR8;*|>z>HbGnP zxIOgY=hm4~tm_IkfhECz)W^q>vGxEtayhF{bAKR686-*V(`s8re z6$2UOHZi8jm~h7A;>9V6GrJdc!tCCzaS}fo>Ay?~?T+VBuXn1ld%gCHtWM<(-95?h zY+QcYw_Gy^-ivS~|7@(svuCV07NGT3`58Ey}KFgp1D8!N~I|hjY(tcIOVI-M5wIY}?2b z8W%GjLNNdA_r4LE`4{eAs%D)18U9B>GD3WyYb>5ZF(`| zPh0-a9O3_@KfL#i)1uFl8r% zAnr=izZ0kjT7V$19oPl@B>!mn_(kIk|wo}@KI-qRO7`IXNX6GTn26@tpU$G$R54L)!4=t@*5irZ^p>oF5KyS-B8*{2)r}ZLHpZi>8L`X+;vkQiY3z4N>M{SzKKc`BC`I zYY+fL4v(k?bky&3{h^!O>a6?+%2h?K&Mnv9NM7URx{H);xz=Kgmx~c+=ZPtZQrO&y z3@)8h#I7BKp>f&0Z#BsNrpSG8XiWFC-Li_pf+|Dz!rn;A!8emn7G|NpFu6Gyl^A#Q z6}_uUjijU;Mz5hGZP!6qh#r_kiF|v9JMD|V!KHim39dmQ<(N~JD%YT9V??2B5ATOf z2#t#s4IWmL@;cG_INJReLOJIL+z2Im+nHhBZwwg zjt*Rc#ntVZf(K5?!e);bf@9u#o5iIr)0yU(OXAR?9x|)(Q8TNTCmvZ7P>e zCv&&fz1cm7b?~RSt_pU8Q{$IUxq8~{(j)1}&A+rK*-GwVWwxtR4k|*^*rg!bpUmy> zqG!0lJcBsQ5F1L;f;yNVJ|UN_ny-vb`YAIWoR#O>QEkn=`oOydNWa&*8RAa9)sE}# zSJHM>fwNyYkV9KqoDmF$d$aPF%Eo5ET9OUIt}MbX6R*zq>foTo5#m;H9nCA-j-`9~~iPkLgUJLEo-_NNaD zl`fJiZ{TfI2Z%NvU-!cD_r7)TP1iTOzqXuAb>ynZ4}){}tV&{u$-xh2(jVp?*)k=v z`t+VZlOE>o5!U4KNb~PJo{q%|b$Je)`na!h+T}k;i#ampISNkJmG=>0LG(wGvnQ7j z_UT^i-}pw&BT}Mo43rbWwirUIWpFNX*yPZiw^Vix{&y<$>w|{2Ymvk`FfN=a7%{1i z>096W*1+WO(i043Dwr0PyARRt@#igm#wHg2QH)CY*}u`OMII}soK$W&Q&WeB&V+c` zM$D4YSY{_&4-frewBr-n@pLFn-(wpg*D+oHXbP!b8;-iT^Aw#FOkEz7f$)HfIi&Bv zrTVW6QGefoOT=6~!f~q47C`go5h;@92<5p;L_y4x$jeYesPe`Z2@6fD(C0UoOZ(~7 znyQ_<#+;y_dAW!E@9!yk_wa79Ic)!Ks;KT>{a)IWXdU&>dT*#N#^JanR}P)G=Mdvj+al zc+z0Yn`f_hc-#)(=A5}Y#d_Z7{^QPHB8pt5Qc$@{=iV;*@Lk+w)AyL%sb0>&^x zg)<))4uv!K3u;b!dp@pME-H% z-YEl7+O;0(7zNldBA$|1PFEj%JB{V=J*S(Vbuqu+E(*!_Cl!)2 zE+}@P{F!E9UZ@r6H zJ7w)q*ETnqiTwUx%(XHcyLEF)^R0KWA`HJyzD}g=-bWO3ICJ0?3CUsC>Y(_4h)W78G#=Gl^QtgfwcV*7#3{uL zSr;+f=IUDI=5Ow8?oi#H(s8bE%;_vkJ9DrTb0D*0M;f|+-<5nue*EG9OdEgYu&ujr zf8qFyf!UfUy?bT9_Ayj7F6{Bz*`@P6J|_ZGiw3){>bmo?(=k+KXg2C$X?Aih`g1Ii zNsnTSEParsdGPhLl;x@4RUJt3RUTUbdFfdD>mZgn>EpxeU1zjQcq__cEp(Mwdn%8UNx1+Qnpz1>e#d0ysu$mu=Mm7K9zf36&$>SQ zJr!E?LSW=3h0?%3^aAo9nS0r~v+0cwL6Mr0<819>ryY@65{$GPb+afRLay7sm zm^zAV3}gdu<{l5#Koqzn{3l3>-MB$H@b41tx_G!r+E3HJ4gKV34jnpjTx(7Rr&L5= z##$4(J-sU_Qji|biRtZI8jf98>s%J3N7BO|qNIH~I3;p_k5pS^drx6Jzc)pUQ+wfz z)k8Bv@5@r8dwJo+pF~3Ma~bx_yP#(|fhP<4$e9_7C;l|}7E6!F53*xsaET8rW$#By ziT6jLNj8~gheYn${p|KJ&%eHG;8X;H$`4$T33C{K-eK%Hc*eCNeCF1B>G01` zC)-JC=^#7i4EF&Bf$r@&u2U~^FKNb|orPV%nY0j19ZmKV(B7~y@-{T7NMuv<^^z3`w3`l9aWML*b-TscNJN2Eed+7D&bm96v zrDI*;Gj!pJJ7%9b*s)`x>ck~9QFq12k6!%k_}pP5c^|*MvvA;s1j0$(E8^XD{GTwW zobG-~=N9MhlYYmGZ;!u;VF&5+#I6ZlrI(y0%M5Ix!IbB_S0stkg45JbWb*E3ySF8E z-4ePg_iAbK+}$oaovXWVh?SW*QJB+R?(Te-?g*v}Op^IV_WZmAm(^X^<)zE9u8~eu z9q*SN^h@4gt__>XNl#!lw9qvk@-Tn7=|v_0Y6<37IdYG56{iP3+w9WspEb&q#p(V5 z9h+RYn8GQ}a3a$AnKQ2luW-k@Zt1$$6&oX6J5rpE%7s3&r{}KH^ILV~^Xcq$vtQZW zOMB`^fhf|~d}~v$OmBB|@5<718^VS>cUPW^v)J2U&+nUE2Y;QGvMp6_tQ%#Jvw7Lg z^Az;xw@~R*-G8atQ4aZV%aZP8>EY!=v2f>!G#Y((=V{Q9ywigqSlD^`w`|&%yN+~3 zaS+EbGHG`&ALQYdBck!OGIh+5O#VrCLB>MR4J6O}ePGroY!SuY2oC(}%EJ{xvSa&#OQUQ?+1WZw&?Jh#u#!Hz*FlNic)jbhKQnF>D zip@FYIFU~+4_>yXCrZNIKUn%Q+r=m-|;OTxmc%|Bx%X0TVcu%YGKcgz-96fAXoHjVkjMmjK>VT40vku4Z;XyBURL1S1Js?P(^e03liqQC~%Mb8_}8(P9bSoWkQ*B7(hlZPmjfWsRJIc@fuGMsUx` zyworcaYj33eC329m{bssP1!!%5W2=1apx@J)Go1wW1~;}oYyTSo|^E?v1(baj(htz z)-l-Mq_f+17mpgUuXa~OXVAK&yN+R)Ti188cv2o0rBTNC3dx;1UbF5~y>wy}A@nw! z$9m9QpkS}3bbOE;x~bvs-ATdu_U0tYk=IpwCG1rQ+*!-#9tlkrjfsxn%73qUn$U2zl(Y_MN9!$xOMQ`Zi_g_!eEY^bQdxN&D`{Bo3njbaZ zs_1FXX-p|=BCh?BgIUNB)A?Nz}6zA$Rx8D!5CXfq4PD!eX^r11X#Q-v#nept8IL|#E%O5^JOgzsWJfqJK zqj<}CZi`^WpSge+7(S!@sPkNjobhIu)}9fbb)G9!=ReQ2;eQOlQ@|6zRInNbJ8S6j(JXgn=K=<+Ixi;>ZBrz9Q2rK~#fl{Cn*a%QB{|nA@C9z1X zgTI}?Uf^+YiPy{j%z3UX_v4SAvg|d_o_f;m|0aDO31Zp<4~wDK(XZ;Ti+frGfXzv{ zKVP>abFn_`xOXDDq>uf*bkl(e@fS^I9A@n!@1FY3_wH$$ynEW5+^JtaT_exQ>W5Dw zhtX8(E;}86_LNC2WJk`s0J$6=ye;m_FUSq=zscPVgs%Y-7 zL{UnFeRBN#1#FChBWJ!gKsdOtD*8B5SRwj4Wt1UPb_o!35q1pG4qO^3=2_d|L~k_8 zDO9*&8bdjW=(yyPnLGDtnR~0M1Ackub$IgaOPG9R8JH9-uZX69fV_WPjj_+Jh<<+v z4$36PWDD=?3X*rl_+cQl&!$GF@G?YKR@4PDi+Cg^713ElgK&Rfa&+L?VUMHy5|^Dz za(5zfdjzfz~-D3^)C1) zKs&Gw@B*c{uK^l>S%4eJ0CoX40xtkPz(c^}!1sY40Ph2ZH`D&WHxth+AOlFJEhR5b zQ7`9$F`oc`6*vk!39JV?fL358PzvM#ZxYvJ@M-YZftP>>f%^bIkOOo`I^fHJWMGhV zUITsr{0s0+;31#~*a|cNl|Uh|0LTEoN*wnC<%C}kJPFA6BzzkJ-UMC(4g-G+$TtCe zl71o|a@BJ`p3RQ&W5=VQ{|m8Le;SYiB*o4+Dt3n80vy-yUb%%{a4+IoXfzB$ABS^O zl9QhEf9RK}vtd$)Qj_)rPXJFU_2ZLD{gxcG0XG1*0@nzfM!VC(I1c;-F7RE?$>==b z1|SQV4=ez(frUWU`~}$y7u|SM&SFn~L19sGVl>C66lm+m;Txga|6dB!Q-J&|Vk2;& zFrNPaZP6#7-A-EVz_O2^-HLw;aE$!D3RIkj_H3GX{@0v`HtrV>6VJn79eQ>5A~z?D z*Ww@gg@u0=)JB<4=i`VZo_Cbp~?lboEu)*yXAG0`XmvQ%o3_fPDceAxy z?A>DQYOBHfEndIP*wgPZxX0r3Ke2X;)3;l@#pye&-D2fIWxTn(Cvn=1!i;R80#ol5|Z*k8uOTXOUV-~lU7<>9{2Jg4nd%Lj@THI4=>`s}b zvpCO|JL4+D|34P*z0%g-ABoc!nS7<+Xz@)J=UBYh;+rkbwRnleOD(>|;#)1wv)E&C zzQqL=7g~Is#hpKARt zxBeFIv-99FiyfDxx46UNUW?Tj>u+&9{2z<^|KQQ{f5#bvotVMB7Oz((z205t$12IV z@3S~B+1UFn?npU*xOjZdhcZ`Xah(2atWF!c^%nP9?8M7u@!8?x_Vp)i zc`bHM+5A}CZ*iRdY@9b_^J%gAz~;x|-Z;Jh|1z#AKv9zU=hFsfSbTOm|5^6+@0Xz|CDd*3^T-ute>>OF(^Tl}%%PZ;`si=BTr z_VpI;vv|s-s|wlAoZ7F@m}gv?0c`~)lKj|+fUV4(+}2L+-q^q8#cfH$$Y+0 z{W&)Mz0*y;)vru`@_u9RK5Or{*m={q4_e&&YhzbY8_weNw~W2t;&^=PZM?k}=e=&| zIxIeBao#VC`+kf2El&TXO~>MlYYm?VZG7tojDL^C`z`Lb*s=BOwRkV#W&M{y`2{=U zY&}_=?lyL>#XT0UA8*{VCK%jraR&9S*OSu>?wM))2QALZH1_=#tDl(suD7`3r^eoI zaj$iEtUd3z@!w~$`kArkS*%{Rc8fc#d#}YE*1gwa^@63hSiNNJ7I#?pUW+@dd#}an zMN4n7`ZsI0xWl^lTHImXdo5P~-O^j!VR3)l{YS>X!{T0xogZ6wi+e3r$Bg@Wi+e3r z&)ak?-e<8oYU8n3J!|b2s~;G9kL{ml;|}YuerUs4j6luIs}`RfE^hBXWazT~)zVvh z%wp%TagWoVjoYn%uf^#{4E=hG_gj2+xVXLdprKEH#)h+azs0KWqto|V|9ut@TAXLg z)f2}T;9tgdw!dT=oMG|anbvOc-WkTOUa|SKxYuImRpZ`naj(Vc|HHal+-q_AYsS6z zpAF9X7lZd%oc>*7@345#;`L7%_hT04eb3nUTkL$_*n2EiPaAu?#r+n0dyRYVw+&WL z8k}cwhsC`X4_fSe$Ix|H+;4IE0psqqxX0rDxVtT9#%IiU*=y6^iyZ|jwU>Gjyx#I< zpT&7UH}M{`czwUI_gb7my-2tW#ycGk`#EiAKc?+hSi8l0FSmA!^KSAeo~=^tfRpP{ zy?|QcQTu`Rr5+wQ!2K4F$^+VgeZYQ!V|th+W%I2nuSrt#wK;2b*6Nh86VhCKQIN>(gOu&Tn9WuB51BQE7PW-Z8>G~s$D)LOft#peXuoTk>MU{h^N(>*?? z(O289qftV4lhC!c1sz{&TWDjW6KJok^EnNq-O{$DDIs8Ou&J$eB;1V`3>OI2e?+)N z60SYu_c@!J{J~Idi_;Klt&_N&y4sc&oq*(P;RWNrtF6_ywJCT*ZBURClp+r2YyM&h zH&X7lb{`S9wFcVYL%nZvQ(XeB<&ke|yRRBv!1*ED9=FD-*Z38WB+TgGCZ<97Vfkqj3E|PXTeZmBYB&1w+qQaC zDB$yFFPK-~(!x)A+`MVi&4GZb=bP)4@i}7H#;3||sJ{WEyk$yxfI?rLZ_@^!U-G-6 zZS$~sWnHjMoGX0o!MLL*v@sM2Ds@|^MVIe3>R-Zn+Wk!=tIBHqb&cR+-v)ok^5C}G zR&695iC+<~#Hol&;sII-w@u=Z@Df%LMpe`XL;iX^BtCzWHdQu;`~mA$?W=F~SxaTe zn9AB(wQohp;@Y5uRfJQ}E9ew73V#8NxZr_5WTZ%1q)isc2^k_^WRF~uS@KNQDS;G( zuj2+8NzFHbv#(w0oV(2*aht|Do%d4C{u1a;aNd;)-CoWz}mM#9d-O%dPuzKdty7tg*go_+tHfA)Pkxg`+v*KKNN3HX)diWVPZ zVnv!u}*9ozGY93$%s&b%gu3 zq*7+#5&IGBwe=(RM^rJBNZjsGzf39%wG=jOR_ar#prtL~TVC5*-{MoguJldJtrL7%o9Oe*!&ZuS-6(8R)}f)xa77=FG$6}2*vpW{9@ zc~!{g-{$rCSzB$YZLRYav@w%1^K>RHYiZk1+hX|e=hn8mRaO^D-EZwuN?yyhHp8cH zCY1~?>&{MaH8Wm|FL+J{WAS=u@~F#`n0<>wEiK;KVB-qrWy-tI@>>e&Q6CuUTH*ZP zBv;x6imy_yf7D!f6JT9ot?EAEp|N-x8f3}2t*kb1x4O;78K?W5%=!f(zn>~CZ1Tgp zHow&MxN~>}Pd*>=wbpG@d6HKa6?Loyq}A|3iljbVXFp1=u5AhyxA`kr&$RefZfGW2 zHBseDLsOUPl2W7!R={el!!yWrMEepCpxyvR@_f$a+ODbCgHqs-y6z z2erMp$se!|>g&3%l>1C8SgcFawrP{*^`DB(Fxu;HYNL5>QyH{$U#-6YntVDF?dYa> z7;8^X_J;f$X_A{Zsoc0?E5JRN!O@tk<9YiPf_`b zqSE;Ku*B95RUK%f7PhFudY|rw@d)b0#SAcotjq0K&?2rxEKa<^D7MwDwRO_;w9`6q z@r>ASka8Bc)rA7O?i<^-*o7-S1fRl|jU}utE2&YBdOUecfMsNBu)(8}CHK~s-72)L z^>(dGEBZDgiR^94e61k~uhcZ57pqFsv^MB)kk^vDZ2<`MYMB_m#2CP!+qTVS=le;C zE9sS%JB92E+ctV@*@6&ek*6)rQ%oW=L1#K;`?>ja>@v`M>-_Qn~A@#R<+!eD& zeNCH7*mikjJZbdR-9220KUXF_7V|dA6#6mEGvF&MP=An-0h}apQ@nzpzon#5se2gd zHnV+Y^TgOs$5!3(vgzbMC-f#`-WE2nnWzD`zipH5k40Ol)8tBjZQb2^ zzo8>gf2#`pwOe#0>IAY)zR5#=C>WHHecebJrYhB4qg_gUts8@l@bI7ERJ|!CcLZfV z%5MrXuz1v<9{F0D$evE+bJ9L+zT0R$Ny<~-%-+K|nUby>p|R;MF*8>|OH=!XwpxF^ zQZs~R*lybG6RK!advM#Zt5Po}tz@qVc_1xEVH?`sYTkn zQZCy9MtaU3=!dIAH!8L|YKQ5aBk~P(x46h;YC5^?(|g4Ybgx ztRuhED5>ZkF+%rQ$;+@cAo0s=S>f}GJV7a+xR_BSF-^E|GN~M{24q1HuPj?qghCQ( zWCDk}#`Z|V$Rc*T?f^}(vTV30x z`j(CHHgKtoa~oN0GzkZ$Xq%oAB?M)-M7zl3)~=Tu0qUt@x#mK!QO3}c!crPEl#6lC z_qS~c_-N9_Z7uaaKd!eM>M~?`tmG?}7nR1R@Su1I+dLXU7}O&fQ-PU^L+ ztv=LZcNy@mQid(q{cmpUla5Nt9<@|-ch_EJC_74W_^!q-0+gn^{Jy&rAFX zYx_sVPbxxF{3iN+#-I`fIRi}epYfyJ)`GhD{iH}wo5)Mg2Sc$rqaWilsiAv z&_J^}pPcNX+eHps3`8ZqY>^XDH@Dl=<=Tr*WG8yeKgR!3bgANI_wMcN(Qvc_>7 zq0#2+GwZ~XnRR1}5NJ2>nzE&tY`0ZKzQyGRmw7F2tM@I zwLKL4mw&qBV$CIgJjk3tni7h*Cq~womndiin2u`GHx#@TA&pqN9^-Q z*`e12aewTZz}RU6zS_D*YGzaI)}~FNO-^e_w85OV24{mDiRyv`q~2(InKZi!4ovG% zht%hgS~ISJ^ZI&S=Tc8n_n9R(E)1C_Wz4v>($M4_a1$VHF7rm>qwzYkG6RxftN9i$ zmpMhm-R4_YFV?u7Y}c!DZ>cJvzli%MWIJh^zLU4EK+Oea0uGP?qyuh10YhsG)F2QA z`hnxXG2kfB3mgER03HV(1NH%XfgYd}=m53@?ZA4#3*-R{fmwh9OarC>selVOeP@As zA2VZ1}`AWfsz!Ga0 zw}sX`H^FUYf>~(J_f3Ol3Xlr8fYW!FG=%p31oQdAidz(#e&8kGIp8R82f%}17z;@u1e(liK1C>A_un?FDeB9?iGYyF249ru2bRZRQ1Fi(D zFrTiW{Q~a;CxADASAmy+=YT`NQ@|4f)cfPWqrgLA#_dtyA>cvaeqa}{9S8y~Ks|6L zPzjU*g}@SEAut!12}}c~051{ebHE|sDIgU$7jSwF`2)^Q|7`kxXr2R(0*8QJ;3?n$ z@C0y(^6m$Jl)u#R3P4+1^FNBQ56eFXb3VGhwZIkt|9SY&V-TFTRUm+SyP8LMS$III-@cFueN6>! z#KV6*7v>ju3giWl{DOi)oRpZ2UEDpoF`?(H$KblTPMy$fnCp-tnl^JCav*bkL1uu^ z1xr1d0Yc=9ojiJ$=4Z+|YJv6lSbuHDKi~QnE-kd-38%voPKPHx!fSurbvW!g9CjTa zbmT8f@&AJttlP*>dtHK^{Al|oP8fxt-7+-MUJHHmrglOT zKEW*R1>S-psY8#&1xvk>P559iYd38NOEHvGn#8dIknmE$LLg-l0+bQjSb7epH>+;8 z+7JrVNw|0(X4M)ui9_g7&S2eGxw4oSV@PLK0TXTh>I&U>#O|?nNkiyXfCFfj-3pet zB|n_C_+X=|t*_U7YM(P-x2!;8C|FMdbxWHh3ks!{hNg`&kJq&}fHj{MI!;roX^4q- zDWA4yYrdmPW$l3xdqsKCD#?fBSNKp~R8dq3E|}w;BUfH3mancXB*O(uMGpqNaz$|o z56rAyQLv&IjJp&Eej6<7W{F2*`qixZ`LiWwv+A=nrh3Im+NC&I|61!`EB#0NYm9%v z(n3!q8PS-ADK<#}oF&*}{WXsJQ<2&qOh2fT{E?opL;9(<6TeiSxNE**kJD*)=rq0b zuR2OD{i=@iw4I8S{#GaH&`*cmv1@neG(B|wV3V5FijE^~px#$EZ$53fophU8N6gYU zs3PebqV}IyXQS+apvh!ii(k`=XM0<_YS-EXv?*VZBs6aHG3NP$t)^`STLV%!>;eH9 zH_Iza)T|Y&OH0X@cd7S!scW#V^MZ;>-KQ!{RZ`{(X%ecSv|JksmV$354*p6V&|(UU z3|=k)%PUuywp6*I0%x%cRLJ-|^2So_hPrwmJuT5qMp^Uj5?eEsStmO*!I^auFLoK4 zj5|4oZwg)rU!~uOJG(($6l)e*nH@AP9S%z=xu(LHwNbS&nY092R3NlL>O?TJ3wjPK zYlYuEPD0?kfUS}-fKo_eD8W%@GhgWau{fmQc!8r6(US~{Mz z#-)Z@=<7BAG!3m<ao;g&~ajiCo-*?u?Z|2>v{Z{ zhgsqTk#0Seg~pD?!f#AWtQu2!nbOe+BTUfw086`{nd7S#D07^>SqG@4gwaIK)))JrdIm+VLogg=YavfTW9ByN# zKJ%++8Ov5ym9AhsYof01YRN<-G}1@8HD!1os3;ZtjD;qQzpX{P*HPip zz}lq|#_NF0Nu5a^=Q^}#-BZLI?>+D%vo62Hu*8%NwrvPVzK5NmuLW?I&dj&LOogh{ zW81$c-u`QK`!BC3Q7ETSk1)#FfFhK>=7sj6zC$Td{BQf@-sb<#PYOOOq4Y^y^gR1J z*X3*qW8dGvS{~R32yf$1+1L~qzBP!k0cA%=?&)noZ#UQ3))wL}Wvk=&(IJsvYzPH? z4iX!>>J8lMq+>QUY@0Lz7X%vg)Lu+hzR+WeCy z%&HAao)N}qU8C7#bekhenZp6+O`0%i!r7%BDO^3PFP-s5u6tr2J_@%5%`#^LcMSu+ zhEU7gNfY3MQ(aQIoTZWDSyAIud&4 zk?%a4unb94BkR{Q2{*pP!v|ljE$e@UT7!qH9h2E!q@Xm=nj&{CU|}DrrAHF4fj@ z2gD(dtjD*>q~zHk74lJ%Mb^Mvl@20qg2|+`+L8hVgk^Q8v2FAP92xUHuva=p zK&~E(Ax_yY6Om>>xoiO(qwcN4RG?Ohe%-J*^nCK)JMWx#C%T21A<~ffkGW6hN4M77 z%SxS!I)77pkU9*QtHObK+>MnaSKh5TkFb;cHi+m~YL-hebwMYf0|_6b8PJ*KR<9|J z&Z8r->V@}qSSGpU3U|7x2yB{X~`m_rl@EyN(Zea zc`e)J)>UwxlkcP1`*g&T#&FydbS;^NPw&}u~nazfi zI(sbl`*i;d3TNY~>G64_jhl%~WI=}a(-ZO=@4R(JIh!$w6@e^XDDs7KQM7QeD#{kf zQANyJquZD>>$CIlnXNR^o+Ay&crG@c#2~ZYaBI|_3r$E9Z9>yCo+c#ek8Y>pS#3gs zq^;3l98voXh}UN&z0Zm>Wgj(C*0(_+BY|E=n0G!V=ryAqkmKXK=5SC3NNK=kOiLJX z|6}oN;3*46R}&Nc+stA5J&w2=+WAf~W0)uYIt2}_x}t2jf7^NTb{TIs$n7LCFh92W z>-F4IR?GVogwfb3*B)})5{_SgyN|o4cnd$uJOv87zANPz;$gPoCyW!43$c?kS6N5h z9gks?#B16a9fxa6(mzbJA3c!ESXI9lS$@z!FIYZt7nlfmT3Z<|nq)bI&3wrg%iAyc zj7=N;vc$HIpcFvDj|WN`G}p``1iO4LAnvahImIot8?}%5GsgPMzNCW1Mx8xtjFXJT zAbAk~<=i)uZARQr@Hjx?7k{};CwI0m4u6s_@fSMQRA;5m`ymPb_AVeUBcJd^J_&C% z?X^ArCl!O_PyAV`wuH=4Y1~`CtP@XvMccXQPqvg&PIDJ~IH)$H@mJy(e@}?5!bsI< z|MUd^_>CX!VgFnL79L1=^eXJ`+IoU61tfpsAHQvgarnCoQ{2C#;T-mHi^qIA{?Ke z{9TDD9zPd(<+|ah?<#CkK8auJU5xUToBGr%5s1INtTu{b8n$@+TuzZIRinPEvBl#r zkcG-9U!^{s;IDhnS^n2pf9Xg1YROst4tC*>`0ESi;Kc7*ERw$X-_h1Ks&5G0bRZu7 z+}cAHBt(1?zNjT|cJ-*4+SmB6Y+a2sZ1i^>R*7H632y$3_QduXK=>#A<>zK^Se_yN zrFHfE9sQYE$AsrL)@aX9U~|S#QqK4ZlZ13hT$pG&njB%V2lC%7h5qb3_C4T&#x@>q zaB6v`N^YIqEHrk0sg-MIEVi7?CT94cFCb&H4EC~L2r}Qa@D!4)t1_Ezc2*<)VB^JN zAlP;{yQoYWMlpB3TdaZ)a)cJViHmkG4@u?Ag)s+bO6ja@(33B5nfYOZ@w9W9q^rYd z=XvpQ>E^gb$?$_xB2kgM*Syu>Cr}F+Gh>)6o+L-qxqb`G?73tD6(3~fGR~Q4C{q_x zt!!%#$XiQNHhsBT;uKD>y2=bV@r6*W&4Xm|V`*DSDdCKK@?URkF$+$0JlONwlO`k4Je|XLzt15ACT)-{Trq+;NSd&D;)X0|H z)Es$Yhi#^;5l3AvyOU3F)$7xQJ-IAsT0g^Xo436XiRm?kEc#hxutXH$)UZ?C@OCO; z;r>bElQBb>ZJG}?QL>Szzx2|d@l0R*llrl)vObPe#@kjx(Vdcd;S=Q^X_B)7vlBy! z|3}9w6tqv-pv$(pK^~WI7A(3E@rzt`XS-~LXSRdPv-LtRtMj!8gOJboW#MzawrQd? z8zNC)innC?wvF!=`h(fV*zTb=oTuHJxl~vqJ6p>yvyK!8XV{;7c=Zzk2q%M1n-q&j z;^O{XfR($I!Xe3-nc*Fq@NgV)_Dftche@)G8K!U363Wbe2DXj(n`|YfEeSA$BFHgm zZZJ{~=`cE0X$B+Vn?~A!1WGKZ9nYk@>j-5eIA0kP6FYAKNzcYT-0JikOKOsrm8~*% z#)UtQo*o_4AVr>);I5}taj(NYz6KOIU{IF8xJzVa$Tk+ej8#BXeLYvy7N4mV3&J3g_jE#(XZFTjNv{t@-LZI{7L@B z!#i-`|L>plR~Z}y|M36G*W-XQ{`yIBek^eI7yX5_n+ty#zZ~tKb(US7ZNG3-|I2+O zXQOlXzdVUg6yg5~d2rUE=Q!KsMCv}i7me>n1k1oId(1I_Y!YOjJ06hzzKroAcMvRY zf<>Mnej+!B`$@bKR&abjFY|)9$^KmS-~y7~bU@riaYXDMYnNP#-3v&VazN-REUpGi z{5622&9tEXH-Q~Mc3!eq^#hVuDTmN^0FvjO7T*UJ|1co_y8ub&%fM{lYu5fSSn~5I zAnE-bAavgWB!52w#Q&#&_-DWr;SYT56}x=wjeCW^@_i-2+>KdyC*PM6%nu}(dlJm# zZJ7Sg63l;|U``<}sh6#QlviZ<+JN~&pU_A>Ib;4@#0aB4DO=WDbc4Yzu<-2ooB|!? z6JQC~2^L}B-2C!_bLn3^{#ySB zyti_%$=ML`XZb33_50LZ7u|G39lcJcc(Zn?l6 zfQ-R^349xP33v~C1UKst0c0A)Z6aPhmyfr}it z$bpL-xX6M3J2)_2?+Mm0?Wa&6=FJY--|Yp<{`nYK_MK~zRL5lT2g|mj2b=+Z4Ezqb z7Ys`HlGR3R$8oqIk-1~z2HW0Be)4nppItnUN9)( zOVj)4{kY3M`Y5;++z)O84}n?U$j?J`d>%Xt><8z81K>4a#FeTYEHdp*@MiEnu&fUb zfZ>rk2A2I@6fFBYzr1zO281`_}Wg3!i(= z<38R+{Q#rCBqi<#F5rIj0`A8z;2ynz`_Kj4-O{K=eI`E{7jU0-0r#8>xG%qe`jm69FW|oS0`8Ap!2Q4l+>c(s{rCmkqZe==x`4Y|I`gQ{^8W(vvo7GCa{>3| z7jR#50r$oWxNpThBiE(&CA6biH@nn{guEZicd2NCFylaxOU+7Hqq~>6)Td=ov)`=S zTdxI5lJ6OqYy* z!{7ev$WKE0$7Z?I5)o|KFFo6(PR1=@_d*x%o{l&)e#*sb!Xx(dMK0bXPO#tPQVj|A zp3AW(q&Jj7dI|nHSGn|lC?3Ps9GCiLg8#l%E>0;%zFFli_0MwSwYZL6pZ*|G| zI{Y~+UFzNh`vLrAk9PLgtB!Vvo5GB=R_0OsI1X-?H?Rwtx6I=yQ~rI(}ATl_KU6{t3TS+3Rcb+(C6jg<2mo#vY1 zG%dj}Z)Yc@nXP%7eL>#(R2`|c!d2n1)axhb_iUYyn&EsHo=a{xh0}H7;RgExH5q#> z)`MB$Hl+jcCz)UH8&5wl?MhlfJSIn7 zhfJZ7G6qMDBN8%SP4~`2y1j<`p{X0g*>w#khs)T=| zKjFds#B0hg@ph1lksPg{J#8gFqdy6Al@24_Rl*dI>sD&Xr&m*k`fUD@Ex!MzMBhzL zIsDXV16*t&l&q=#V|-NbaU8$>GQ!7F@*w@(p_J0EgTxvlPeIa<*5i=NZP+Efz&RXN z-b&)DCcaY5zx#A96aJ81I{p4Xl3pb#Zz8qCSwY80TIo71rV#jN(u$93rk!o3waZro zmT}FY4ak^M%P$bLQy%H}LCPU~GksA;FyW-5q}F8hInu@})GAuXWcugmHXa}A#&Bv= zPE0rHeo_G6{5myB!{IfB^Q9awRmG%-bw3)zNk|K2y_q<|I(3}`>u1u>!B1M486)Q* zdyGpTO<$aA^SRj46;cwZFB!e#-)KIKN!q79JmgYFB*||PTn{mtBzCX&jMYPVga|&fq zJ1g$v=z~Z)51$VBp?8r_1~tt(IWA=-w{|I88_L@b2>VZ#k5=0P+3=<;Z};4vWBhIw ze(wpt2FTL}9nvb|t`!{F>z+Yc5AN|KE40x#zO)6keTQ97IQcyN> z(a3?(!CA?J-cWr;KCc?&UFP1uCSDq)&{q4w-#ly}XB~WFnfpL^w?KcrXwfWRFXZaL zRTFgZB;=!ii^G@DhE9PKYb#&Q9qudO^`V!u2b`!GjeLyrPDDk!z=<||5;egxt5(!^ zGLq_(8Z%k3*6QtQmirEBk8L0W8>Lm#4^fvq=D3;OE;?ZibKPud+uK1LN1ntzi99Jg zp3k77Gqw|&eSmHQ&F6#$bNk@RsA@dQK&Hna(`{ZRjn705 z)C`$4o~uD_j3DC>sRtV9!pE%CX!jwSX#nj<vg-^*Pq5^j05n*j$AzkGQNS{!TjWY=#wSU9%LqB8)m=Q{Q_R{9`_0I4Wb(@ z2k*o4vVKwlN5Jt4IBx=%y2fxJJ5ytjIJ>DTC=)nAyl%@64$t2$uo!?FxldIp&|OOM{&izHjb!M+g}S>0p&}IPbl7d z1-}3JTnv}rzpK2@qx>w7$~#ut=VDq1C5UccgGag&(xcf-32N{Jc>E2pe49B9SQ%h{ z2P`AKdbD4E#=|cQyj9K3+b`p|zFge~eK)q_fsMeIi+U18eEdB@2|vb48W_ma0YjirMTh*uMEe&}(E#oNTDKbjGH$t^)$ ze2BRW?STW2Zyb4M`=IU@$CgOjAa3}Gp?(^{=ewwze+sWb$A~rsFG$;E^d83@`*!x; zVY?m6=SJbfK7vuy(Ol20m@&xGhzON={Ueu`a<&M977#wpU-x~;Uk&*Wx~oDnAYf~E z+=~PaxR>QTejiXQem4JA;=Tc^#!J=F4-NY0l^#s{qUCNoyg$cgW}Vh%HegrP68O?m z(5ZA3M%!dN-pjZO`kfz5pwBy~#FDW@%e_iL{PWbGF-`pL6_jq{B z!|U_lmppuiz|A|yF|O6a@_EbS&CJ7F?eW~4ABdl(fA|<>`8VW!&cimlw_fDsX1Tv9 zHZL|h%9$U=j7M|*yN*byU;5|#kyZ2T0pULve)VPS*qRGDjKArW%3ei-z-VOI-)L%XU&?FX|$g|C!@(N_w6h0t%g2Ku{&{(7O`dJXi|LjQT8Ph122 z{X&0((C!w(KT2QH5=;>>wOut>|Z}jx5r%X=^FLgJ0`r0Yew+j6tPrqi$^lcc` zmAadSK9Q%tsI7f~)=J!4JZ@B1QQTqp_<6v+RdAa{s<7RC062Nw=HaxQz*_TprLhmR z)ZH$)P3{r&B8DC2If8Ks@$L}39q@;SRqYv?%?}FRV!>+(af{-;joE0%oN>Y1idc*M z>`-2x0*CXlcM6XBy-wh5H#8rk47(SESEa`bYsC79-+7$7yj*(=kcnV)JGC z%;PK-oCC0r0LOgG>yTzYe9JuGWD3r5qX6}p11!c|ynXa#%!b?xT=P+IH3GZN{TSu1 zcK3x~vDw-`EeC8aU@Iap9ha@~u$2X1n>}n*0oX1Nt1bXL;9)fdU>zQ|x&SQcVYLNd z&v@9H5X{Q{Rlx2-`PPPDrr+5Z1HFnKVLo6P)PRmr8G-5%o2~uJFm$^Mx?NX*$Lrv+ zA3Vy1ht62H=f)9ge{-?ZEEv1Bpr3gfd2w{h(W;F(4EL(oy+%;cRR&7Mc#Y@v?tQlq zHm!I&5MwkkIR|f!!1rK8(t!9=5984t!6AnBzy=>216K|PzZ8LM9<_OStVh`?XFc>Y zh&2cM5Y6~Bdz?fOoNkY^r3lWT$Jts0=aR>1D1x)zT@{%hD1y`NaULv!Gw5+P6~Srt zICVvEE_s~I1#kjeeh0R^%zXhkwB_CKz2UU(qfpL#=%+4^?voJR zPT1`^#7~@`;tYU}2skQ^1IyN)OY|>+T)2(`9ZO;M5Q2dUPd&vrU|zVhm_A z1UgnE2Ta}L_?d4zI_J(ANzN>s0o6ov&(?30VrJvvoc@i^*&H9PH*zG@j}%6b?U0Z& zmOTZ=8;3BS+lleU-6+d|$j7#%{(K?4M=+-m9%U-L%frVTE7-V7%boS*=6tNKt&SbH zOf-9;_Q&!c%9TINkL3+kQm3MaZs_4Y=;59MdYC_f9u7`Y4;YK!$fCx1gyk-@QZunN zgzcfdpgsz%!%VCd8;d5Plcjk&v2k4m{;hH+#&vt74RAgy7_Hcts{%EC2XLAMXD?PM zn$h>^VK`0Tvk5rOf)nmHxw=^o+hxn*s5zf*DV`}_<{mCc$GKRKLW(Q-2sx$*J!?k9*jb|Al8Z0P+(iTkGL z>LJmu+5}g(#+z$Mc>JA$zZLb(c_Q`(Q3|Vz0gpePu1(K6FPDXn02+=A$Pp*uM1Bx-{i#0Y!Ke35?y1nx|oO7SFBwe^6>HMike%F??Qa%;v4h5<9S>c zJ~FzoB9n2r!WSQ03=a?E%oJ?B;O+}-!H^Svxf=sTaznWz<1Vt0^26)$;Cck8mX5z< z2G;;sdikg;x9ic-kY#g-^{Jruz20;Kb+M}~#O7vX<9!#H#br8KmZT>*q^K8C>FAk6Nhq;|=_7KHc1QxdWC<>CIJx5$ zQk|zyG%6o|KL49t>2x{BM+nyo@*poy&s$~4Q?lgZ2y}Nok%*jMX#BN^Lq4oSGMtDH zv9w%^E?W604~r%8uvnAf1N#zsS21)Uwdf-4jq;R}p5^ivlb2^;k?;XI4E>v8Qd&q;QbbCJ7CrySRN|2g*#+C9*G^SHt z&n&&_)Cev9?BlhK9N0$t1C0sz-_dmS2}{<2J~Ysh&Y-s?{);|Jy<)|d4pfh`UwArjB#xV z_@%k?CfxCug%2U&qZJEPG4NwQsCyD@C3*+?tYheHom(w9)tEi0b{p~4kHeUAIcOPy zavuWwxO0%E4R<p(X(;5i!UWq*W z@x?mSLg6|KXdKqasFNsezGlYLO9FYtWQ=_}S7U)iIjptK0>(a+fp*ge zodtVX0FeJOFiwf%yBS~Ww==NC!birTtHw8@C;Z}aQvEil#vE6)@mhMhZ>kxeP@Ybv zOK=4DiV)m?X#)7O6Tm0p@0fj&{000!gkO*&C~toG^Y6vUUJmfZ{Y~Lsoohg!&)+3W zN|JvX5AH52K6*Yq%IWiU+prtWVA0XVM&UgFuV3cLylLkP@QveZc0P>j!bj%6w{u!^ z65Pv^IC!@EXY=k6!9?Ks_;%kvIx2Ym=`ZVfXedm_@Nfh%$71K+Mi722U(!-LGh95r zK(xevh@j_Opm+R#N7ywiz^K+dA}Q;$x^ABi?RnXPv?h39?t`=4Q|Ql-YI_QqLn3Q; zIx~Xz*U5*l-N5BuH{B(~eDr7pO%?d2@S%U^zD%Q1jErl@HUP)=6jEN>K}?Jt;9PhQ zVZi61kfhOlh5?S|wk^w1zV<9S-^)D_EH{r9DMbJcVgW+;0on}j%sCU?KN5u#C+4;T zi(_H#mg3F`?p(^>If{R?K?=?zbG*$tYf|nBm4f$8IZoO)v)3AM%}8aB&zTC!!4^}6 z{)OxPoDayjhfzlEyrZ@$XH~(STBaFN?}J8q!BOY99?2$Lta{xw#D9pY-X4#;6SReQ zSQ~%JsM@1GwH!=&T%_bbMdqO8tYwlrnB9wd;>rM}p-y$@Rv+$83*I`xJLDzqgcQ1~ zpZMgnUf_pO0@fO#Y;)YNtMnTL{zM4g1Pty(CiO-@Gwuku2Q#%yuaQ|9)?tvIM2>80 zy4Rjjw9Yy)$3j@-qibR9;BRejyxseO_Bw#gHg7X#^|Wl0fTC+PN|?2Jv> zK6Ku;7~L^gbQ7$;!D}tNkGObl8P|o}_98Ft6dn(E0pivw(HLtZSVf}Fp9XzUXI5iY zxB2+A!f3T8Q|yt&%~e^_bi~nEV1s#9`9dcMx{DuYvgep92%iV3U!N@|GdpS=`LC&6W zE+E;~BAhV^U{b z<+;wj%1sZ>D|^7d&hA_s3{LgcRh~J0>i#~wNBm@4--?sncntvGy0roid%eG{@8rs} zHI;lea`&;$zErEe@=9|Hv)a+o$=4R))md>I{>@l|wz3+6X>#&(Z#&)*)O)%fFCoVZ zd)iZY8%SN{feq_C0w3jBS1AwN^eHJkWVo&}-F>QdHBweF%Z^TcM-X1U^`M|WuqvD+ z7KPe z^0Mv0OQX)c_PV>J|{iY6aeWtsw&H{da+nefx>W9Rv^d5dUI8~9@S zS?yheH1p5pAz!cmSfRIJZyNSDr4i3g==@x~!4)8j3UqFv3oC`plirK}vsfi@9{&lV z|GFvEyM*Nk`eptrhVhlH&5TjSbi%X-rZq6FfoTm)YhYRf(;Ar8z_bRYH88D#X$?$D G1OEZ`Euf76 diff --git a/PROBLEMS.TXT b/PROBLEMS.TXT index 2ee38c8..78ddf5e 100644 --- a/PROBLEMS.TXT +++ b/PROBLEMS.TXT @@ -1,4 +1,4 @@ -Known bugs and restrictions of Emu48 V1.38 +Known bugs and restrictions of Emu48 V1.40 ------------------------------------------ - the following I/O bits aren't emulated (incomplete) @@ -42,8 +42,7 @@ Known bugs and restrictions of Emu48 V1.38 - no MP interrupt on card control circuit or timer restart - no beeper support with OUT command -> all programs that aren't use the "=makebeep" subroutine, like alarm wake up, have no sound -- beeper emulation, ATTN key doesn't work, - Windows 9x: plays only default sound event or standard system beep +- beeper emulation, ATTN key doesn't work - no infrared printer support - Shell OS: clock isn't synchronized with real time - HP49G: the flash memory is emulated now with some restrictions @@ -55,4 +54,4 @@ Known bugs and restrictions of Emu48 V1.38 - quitting the emulator while programming the flash isn't allowed, because the content of flash state machine isn't saved so far -08/30/05 (c) by Christoph Gießelink, c dot giesselink at gmx dot de +12/13/05 (c) by Christoph Gießelink, c dot giesselink at gmx dot de diff --git a/Sources/Emu48/CHANGES.TXT b/Sources/Emu48/CHANGES.TXT index 313ac93..250027e 100644 --- a/Sources/Emu48/CHANGES.TXT +++ b/Sources/Emu48/CHANGES.TXT @@ -1,3 +1,133 @@ +Service Pack 40 for Emu48 Version 1.0 + +DISPLAY.C +- bugfix in function UpdateContrast(), used background Color 0 in + calculator off state even if Color 32 was defined +- bugfix in function CreateLcdBitmap(), DIB section shouldn't + created from the memory DC + +EMU48.C +- added function IsPort2Writeable() to check if read only file + attribute is not set on port2 file +- major changes in function SettingsProc(), added "Port 2 is + Writeable" handling and make port2 changeable without closing the + current emulation session +- changed function SaveChanges(), default button for confirming the + "Do you want to save changes ?" message depends now on the + "SaveDefaultConfirm" INI-File setting (1=yes / 0=no button) + +EMU48.H +- extern declaration of global variable and functions + +EMU48.RC +- added item "Port 2 is Writeable" in settings dialog +- changed version + +ENGINE.C +- bugfix in function WorkerThread(), when changing into SM_RUN state + display constrast must also be restored + +FILES.C +- changed function CrcPort2(), made it global accessible + +KML.C +- added keywords "Topbar" and "Vga" to pLexToken[] table -> scripts + using these keywords now are parsed with warnings and not quit + with a fatal error any more +- bugfix in function SkipWhite(), skipping remark text hadn't stop + at string end +- bugfix in function ParseBlocks(), stopped script parsing without + error at unknown block token +- bugfix in function SkipLines(), TOK_END was handeled wrong -> + this caused a RunKey end if condition of TOK_IFPRESSED or + TOK_IFFLAG was false and there was no TOK_ELSE inside this level +- bugfix in function KillKML(), ROM type wasn't reset to the preset + value at the end + +KML.H +- added TOK_TOPBAR and TOK_VGA definition + +RESOURCE.H +- added definition + +RPL.C +- added function RPL_GetSystemFlag() returning the state of the + given system flag + +SETTINGS.C +- changed function ReadSettings() and WriteSettings(), added item + "SaveDefaultConfirm" in section [File] in the INI-File + +STACK.C +- added helper functions RPL_GetZInt() and RPL_SetZInt() to handle + HP49G Precision Integer objects +- added function DoInt() to handle a HP49G Precision Integer object +- changed function OnStackCopy() and OnStackPaste(), added HP49G + Precision Integer support (limited to 127/128 digits incl. sign) + +TIMER.C +- changed function CheckT1() and CheckT2(), minor optimization in + checking if INT or WAKE bit is set + + +Service Pack 39 for Emu48 Version 1.0 + +DISPLAY.C +- bugfix in function CreateMainBitmap(), in error case hMainDC + variable wasn't cleared + +EMU48.C +- changed function SettingsProc(), added sound handling +- moved function OnStackCopy() and OnStackPaste() to STACK.C +- changed function WinMain(), added accelerator key access for menus + +EMU48.DSP +- added stack.c sources + +EMU48.H +- extern declaration of global variables and functions + +EMU48.RC +- added "Sound" group in Settings dialog +- changed menu text "Copy String" to "Copy Stack" and menu text + "Paste String" to "Paste Stack" +- added accelerator resource +- changed version + +EXTERNAL.C +- added function BeepWave(), beeper function using sound card +- added function BeepWin9x(), PC speaker function for working on + Win9x +- changed function External(), removed range checking of duration; + call function BeepWin9x() on Win9x instead of Beep() or in the + case of wave sound the function BeepWave() + +KML.C +- bugfix in function InitKML(), changed log message for no "Model" + definition found and a missing "Bitmap" definition wasn't detected + +PCH.H +- added include conio.h + +RESOURCE.H +- added several definitions + +SETTINGS.C +- changed function ReadSettings() and WriteSettings(), added item + "WaveBeep" and "WaveVolume" in section [Emulator] in the INI-File + +STACK.C +- new modul with the message handler functions OnStackCopy() and + OnStackPaste() prior located in EMU48.C +- changed function OnStackCopy() and OnStackPaste(), they can now + also copy real numbers from and to the clipboard + +TIMER.C +- bugfix in function SetT1(), fixed unsynchronized access to timer1 + value, stop timer1 only if running and restart timer1 only when + timer2 is running + + Service Pack 38 for Emu48 Version 1.0 DISPLAY.C diff --git a/Sources/Emu48/DISPLAY.C b/Sources/Emu48/DISPLAY.C index 88a6999..311339f 100644 --- a/Sources/Emu48/DISPLAY.C +++ b/Sources/Emu48/DISPLAY.C @@ -124,15 +124,20 @@ static __inline VOID BuildPattern(VOID) VOID UpdateContrast(BYTE byContrast) { + RGBQUAD c,b; INT i,nColors; // table for max. 8 colors const INT nCAdj[] = { 0, 1, 1, 2, 1, 2, 2, 3 }; - RGBQUAD c = *(RGBQUAD*)&dwKMLColor[byContrast]; // pixel on color - RGBQUAD b = *(RGBQUAD*)&dwKMLColor[byContrast+32]; // pixel off color - if ((Chipset.IORam[BITOFFSET] & DON) == 0 || I == *(DWORD*)&b) - b = *(RGBQUAD*)&dwKMLColor[0]; + // when display is off use contrast 0 + if ((Chipset.IORam[BITOFFSET] & DON) == 0) byContrast = 0; + + c = *(RGBQUAD*)&dwKMLColor[byContrast]; // pixel on color + b = *(RGBQUAD*)&dwKMLColor[byContrast+32]; // pixel off color + + // if background color is undefined, use color 0 for compatibility + if (I == *(DWORD*)&b) b = *(RGBQUAD*)&dwKMLColor[0]; nColors = bGrayscale ? (NOCOLORSGRAY-1) : (NOCOLORSBW-1); @@ -189,7 +194,7 @@ VOID CreateLcdBitmap(VOID) bmiLcd.Lcd_bmih.biHeight = -64 * nLcdZoom; _ASSERT(hLcdDC == NULL); VERIFY(hLcdDC = CreateCompatibleDC(hWindowDC)); - VERIFY(hLcdBitmap = CreateDIBSection(hLcdDC,(BITMAPINFO*)&bmiLcd,DIB_RGB_COLORS,(VOID **)&pbyLcd,NULL,0)); + VERIFY(hLcdBitmap = CreateDIBSection(hWindowDC,(BITMAPINFO*)&bmiLcd,DIB_RGB_COLORS,(VOID **)&pbyLcd,NULL,0)); hLcdBitmap = SelectObject(hLcdDC,hLcdBitmap); _ASSERT(hPalette != NULL); SelectPalette(hLcdDC,hPalette,FALSE); // set palette for LCD DC @@ -230,6 +235,7 @@ BOOL CreateMainBitmap(LPCTSTR szFilename) if (hMainBitmap == NULL) { DeleteDC(hMainDC); + hMainDC = NULL; return FALSE; } hMainBitmap = SelectObject(hMainDC,hMainBitmap); diff --git a/Sources/Emu48/EMU48.C b/Sources/Emu48/EMU48.C index 1d771f7..73921c6 100644 --- a/Sources/Emu48/EMU48.C +++ b/Sources/Emu48/EMU48.C @@ -13,7 +13,7 @@ #include "kml.h" #include "debugger.h" -#define VERSION "1.38" +#define VERSION "1.40" #define CF_HPOBJ "CF_HPOBJ" // clipboard format for DDE #define MAXPORTS 256 // number of COM ports @@ -80,6 +80,7 @@ HCURSOR hCursorHand = NULL; BOOL bClassicCursor = FALSE; // use hand instead of arrow cursor BOOL bAutoSave = FALSE; BOOL bAutoSaveOnExit = TRUE; +BOOL bSaveDefConfirm = TRUE; // yes BOOL bAlwaysDisplayLog = TRUE; BOOL bLoadObjectWarning = TRUE; @@ -221,6 +222,21 @@ VOID CopyItemsToClipboard(HWND hWnd) // save selected Listbox Items to Clipboar //# //################ +// get R/W state of port2 file +static BOOL IsPort2Writeable(VOID) +{ + DWORD dwFileAtt; + + BOOL bWriteable = FALSE; + + SetCurrentDirectory(szEmuDirectory); + dwFileAtt = GetFileAttributes(szPort2Filename); + if (dwFileAtt != 0xFFFFFFFF) + bWriteable = ((dwFileAtt & FILE_ATTRIBUTE_READONLY) == 0); + SetCurrentDirectory(szCurrentDirectory); + return bWriteable; +} + // set listfield for serial combobox static VOID SetCommList(HWND hDlg,int nIDDlgItem,LPCTSTR szSetting) { @@ -257,6 +273,9 @@ static VOID SetCommList(HWND hDlg,int nIDDlgItem,LPCTSTR szSetting) static BOOL CALLBACK SettingsProc(HWND hDlg, UINT message, DWORD wParam, LONG lParam) { + BOOL bPort2CfgChange = FALSE; + BOOL bPort2AttChange = FALSE; + switch (message) { case WM_INITDIALOG: @@ -271,6 +290,15 @@ static BOOL CALLBACK SettingsProc(HWND hDlg, UINT message, DWORD wParam, LONG lP // set disassebler mode CheckDlgButton(hDlg,(disassembler_mode == HP_MNEMONICS) ? IDC_DISASM_HP : IDC_DISASM_CLASS,BST_CHECKED); + // set sound slider + SendDlgItemMessage(hDlg,IDC_SOUND_SLIDER,TBM_SETRANGE,FALSE,MAKELONG(0,255)); + SendDlgItemMessage(hDlg,IDC_SOUND_SLIDER,TBM_SETTICFREQ,256/8,0); + SendDlgItemMessage(hDlg,IDC_SOUND_SLIDER,TBM_SETPOS,TRUE,dwWaveVol); + + // set sound radio button + CheckDlgButton(hDlg,bWaveBeep ? IDC_SOUND_WAVE : IDC_SOUND_SPEAKER,BST_CHECKED); + EnableWindow(GetDlgItem(hDlg,IDC_SOUND_SLIDER),bWaveBeep); + // set combobox parameter SetCommList(hDlg,IDC_WIRE,szSerialWire); SetCommList(hDlg,IDC_IR,szSerialIr); @@ -281,13 +309,14 @@ static BOOL CALLBACK SettingsProc(HWND hDlg, UINT message, DWORD wParam, LONG lP } // HP48SX/GX - if (cCurrentRomType=='S' || cCurrentRomType=='G') + if (cCurrentRomType=='S' || cCurrentRomType=='G' || cCurrentRomType==0) { // init port1 enable checkbox CheckDlgButton(hDlg,IDC_PORT1EN,(Chipset.cards_status & PORT1_PRESENT) != 0); CheckDlgButton(hDlg,IDC_PORT1WR,(Chipset.cards_status & PORT1_WRITE) != 0); - // init port2 shared checkbox and set port2 filename + // init port2 shared and writeable checkbox and set port2 filename CheckDlgButton(hDlg,IDC_PORT2ISSHARED,bPort2IsShared); + CheckDlgButton(hDlg,IDC_PORT2WR,IsPort2Writeable()); SetDlgItemText(hDlg,IDC_PORT2,szPort2Filename); if (nState == SM_INVALID) // Invalid State { @@ -299,29 +328,26 @@ static BOOL CALLBACK SettingsProc(HWND hDlg, UINT message, DWORD wParam, LONG lP { EnableWindow(GetDlgItem(hDlg,IDC_PORT1EN),FALSE); EnableWindow(GetDlgItem(hDlg,IDC_PORT1WR),FALSE); - if (nState == SM_INVALID) // Invalid State - { - // init port2 shared checkbox and set port2 filename - CheckDlgButton(hDlg,IDC_PORT2ISSHARED,bPort2IsShared); - SetDlgItemText(hDlg,IDC_PORT2,szPort2Filename); - } + EnableWindow(GetDlgItem(hDlg,IDC_PORT2ISSHARED),FALSE); + EnableWindow(GetDlgItem(hDlg,IDC_PORT2WR),FALSE); + EnableWindow(GetDlgItem(hDlg,IDC_PORT2),FALSE); + EnableWindow(GetDlgItem(hDlg,IDC_PORT2LOAD),FALSE); if (cCurrentRomType=='X') // HP49G { SendDlgItemMessage(hDlg,IDC_IR,CB_RESETCONTENT,0,0); EnableWindow(GetDlgItem(hDlg,IDC_IR),FALSE); } } - if (nState != SM_INVALID) // not in Invalid State - { - // hide port2 settings - EnableWindow(GetDlgItem(hDlg,IDC_PORT2ISSHARED),FALSE); - EnableWindow(GetDlgItem(hDlg,IDC_PORT2),FALSE); - EnableWindow(GetDlgItem(hDlg,IDC_PORT2LOAD),FALSE); - } return TRUE; case WM_COMMAND: switch (LOWORD(wParam)) { + case IDC_SOUND_SPEAKER: + EnableWindow(GetDlgItem(hDlg,IDC_SOUND_SLIDER),FALSE); + return TRUE; + case IDC_SOUND_WAVE: + EnableWindow(GetDlgItem(hDlg,IDC_SOUND_SLIDER),TRUE); + return TRUE; case IDC_PORT2LOAD: if (GetLoadObjectFilename()) { @@ -366,9 +392,37 @@ static BOOL CALLBACK SettingsProc(HWND hDlg, UINT message, DWORD wParam, LONG lP Chipset.SoftInt = TRUE; // set interrupt bInterrupt = TRUE; } - Map(0x00,0xFF); SwitchToState(nOldState); } + // HP48SX/GX port2 change settings detection + if(cCurrentRomType=='S' || cCurrentRomType=='G' || cCurrentRomType==0) + { + TCHAR szFilename[MAX_PATH]; + BOOL bPortShared; + + // shared port + bPortShared = IsDlgButtonChecked(hDlg,IDC_PORT2ISSHARED); + if (bPort2IsShared != bPortShared) + { + bPort2IsShared = bPortShared; + bPort2CfgChange = TRUE; // slot2 configuration changed + } + + // get current filename and notify difference + GetDlgItemText(hDlg,IDC_PORT2,szFilename,ARRAYSIZEOF(szFilename)); + if (lstrcmp(szPort2Filename,szFilename) != 0) + { + lstrcpyn(szPort2Filename,szFilename,ARRAYSIZEOF(szPort2Filename)); + bPort2CfgChange = TRUE; // slot2 configuration changed + } + + // R/W port + if (IsDlgButtonChecked(hDlg,IDC_PORT2WR) != (UINT) IsPort2Writeable()) + { + bPort2AttChange = TRUE; // slot2 file R/W attribute changed + bPort2CfgChange = TRUE; // slot2 configuration changed + } + } // get speed checkbox value bRealSpeed = IsDlgButtonChecked(hDlg,IDC_REALSPEED); bAutoSave = IsDlgButtonChecked(hDlg, IDC_AUTOSAVE); @@ -383,13 +437,54 @@ static BOOL CALLBACK SettingsProc(HWND hDlg, UINT message, DWORD wParam, LONG lP SetLcdMode(!bGrayscale); // set new display mode SwitchToState(nOldState); } - if (nState == SM_INVALID) + if (bPort2CfgChange) // slot2 configuration changed { - bPort2IsShared = IsDlgButtonChecked(hDlg,IDC_PORT2ISSHARED); - GetDlgItemText(hDlg,IDC_PORT2,szPort2Filename,ARRAYSIZEOF(szPort2Filename)); + UINT nOldState = SwitchToState(SM_INVALID); + + UnmapPort2(); // unmap port2 + + if (bPort2AttChange) // slot2 R/W mode changed + { + DWORD dwFileAtt; + + SetCurrentDirectory(szEmuDirectory); + dwFileAtt = GetFileAttributes(szPort2Filename); + if (dwFileAtt != 0xFFFFFFFF) + { + if (IsDlgButtonChecked(hDlg,IDC_PORT2WR)) + dwFileAtt &= ~FILE_ATTRIBUTE_READONLY; + else + dwFileAtt |= FILE_ATTRIBUTE_READONLY; + + SetFileAttributes(szPort2Filename,dwFileAtt); + } + SetCurrentDirectory(szCurrentDirectory); + } + + if (cCurrentRomType) // ROM defined + { + // use 2nd command line argument if defined + MapPort2((nArgc < 3) ? szPort2Filename : ppArgv[2]); + // port2 changed and card detection enabled + if ( (bPort2AttChange || Chipset.wPort2Crc != CrcPort2()) + && (Chipset.IORam[CARDCTL] & ECDT) != 0 && (Chipset.IORam[TIMER2_CTRL] & RUN) != 0 + ) + { + Chipset.HST |= MP; // set Module Pulled + IOBit(SRQ2,NINT,FALSE); // set NINT to low + Chipset.SoftInt = TRUE; // set interrupt + bInterrupt = TRUE; + } + // save fingerprint of port2 + Chipset.wPort2Crc = CrcPort2(); + } + SwitchToState(nOldState); } - // set disassebler mode + // set disassembler mode disassembler_mode = IsDlgButtonChecked(hDlg,IDC_DISASM_HP) ? HP_MNEMONICS : CLASS_MNEMONICS; + // set sound data + dwWaveVol = SendDlgItemMessage(hDlg,IDC_SOUND_SLIDER,TBM_GETPOS,0,0); + bWaveBeep = IsDlgButtonChecked(hDlg,IDC_SOUND_WAVE); // set combobox parameter GetDlgItemText(hDlg,IDC_WIRE,szSerialWire,ARRAYSIZEOF(szSerialWire)); if (cCurrentRomType!='X') // HP49G Ir port is not connected @@ -427,7 +522,11 @@ static UINT SaveChanges(BOOL bAuto) if (bAuto) uReply = IDYES; else - uReply = YesNoCancelMessage(_T("Do you want to save changes ?")); + { + UINT uStyle = bSaveDefConfirm ? 0 : MB_DEFBUTTON2; + + uReply = YesNoCancelMessage(_T("Do you want to save changes ?"),uStyle); + } if (uReply != IDYES) return uReply; @@ -739,148 +838,6 @@ static LRESULT OnFileExit(VOID) return 0; } -// -// ID_STACK_COPY -// -static LRESULT OnStackCopy(VOID) // copy data from stack -{ - HANDLE hClipObj; - LPBYTE lpData; - DWORD dwAddress,dwSize; - - _ASSERT(nState == SM_RUN); // emulator must be in RUN state - if (WaitForSleepState()) // wait for cpu SHUTDN then sleep state - { - InfoMessage(_T("The emulator is busy.")); - return 0; - } - - _ASSERT(nState == SM_SLEEP); - - if ((dwAddress = RPL_Pick(1)) == 0) // pick address of level1 object - { - MessageBeep(MB_OK); // error beep - goto error; - } - - if (Read5(dwAddress) != 0x02A2C) // string object - { - MessageBeep(MB_OK); // error beep - goto error; - } - - dwAddress += 5; // address of string length - dwSize = (Read5(dwAddress) - 5) / 2; // length of string - - // memory allocation for clipboard data - if ((hClipObj = GlobalAlloc(GMEM_MOVEABLE,dwSize + 1)) == NULL) - goto error; - - if ((lpData = GlobalLock(hClipObj))) // lock memory - { - // copy data into clipboard buffer - for (dwAddress += 5;dwSize-- > 0;dwAddress += 2,++lpData) - *lpData = Read2(dwAddress); - *lpData = 0; // set end of string - - GlobalUnlock(hClipObj); // unlock memory - - if (OpenClipboard(hWnd)) - { - if (EmptyClipboard()) - SetClipboardData(CF_TEXT,hClipObj); - else - GlobalFree(hClipObj); - CloseClipboard(); - } - } - else // lock memory failed - { - GlobalFree(hClipObj); - } - -error: - SwitchToState(SM_RUN); - return 0; -} - -// -// ID_STACK_PASTE -// -static LRESULT OnStackPaste(VOID) // paste data to stack -{ - HANDLE hClipObj; - LPBYTE lpClipdata,lpData; - - BOOL bSuccess = FALSE; - - // check if clipboard format is available - if (!IsClipboardFormatAvailable(CF_TEXT)) - { - MessageBeep(MB_OK); // error beep - return 0; - } - - SuspendDebugger(); // suspend debugger - bDbgAutoStateCtrl = FALSE; // disable automatic debugger state control - - // calculator off, turn on - if (!(Chipset.IORam[BITOFFSET]&DON)) - { - KeyboardEvent(TRUE,0,0x8000); - KeyboardEvent(FALSE,0,0x8000); - - // wait for sleep mode - while(Chipset.Shutdn == FALSE) Sleep(0); - } - - _ASSERT(nState == SM_RUN); // emulator must be in RUN state - if (WaitForSleepState()) // wait for cpu SHUTDN then sleep state - { - InfoMessage(_T("The emulator is busy.")); - goto cancel; - } - - _ASSERT(nState == SM_SLEEP); - - if (OpenClipboard(hWnd)) - { - if ((hClipObj = GetClipboardData(CF_TEXT))) - { - if ((lpClipdata = GlobalLock(hClipObj))) - { - DWORD dwSize = strlen(lpClipdata); - if ((lpData = HeapAlloc(hHeap,0,dwSize * 2))) - { - memcpy(lpData+dwSize,lpClipdata,dwSize); // copy data - bSuccess = (WriteStack(lpData,dwSize) == S_ERR_NO); - HeapFree(hHeap,0,lpData); - } - GlobalUnlock(hClipObj); - } - } - CloseClipboard(); - } - - SwitchToState(SM_RUN); // run state - while (nState!=nNextState) Sleep(0); - _ASSERT(nState == SM_RUN); - - if (bSuccess == FALSE) // data not copied - goto cancel; - - KeyboardEvent(TRUE,0,0x8000); - KeyboardEvent(FALSE,0,0x8000); - - // wait for sleep mode - while(Chipset.Shutdn == FALSE) Sleep(0); - -cancel: - bDbgAutoStateCtrl = TRUE; // enable automatic debugger state control - ResumeDebugger(); - return 0; -} - // // ID_VIEW_COPY // @@ -1127,7 +1084,7 @@ static LRESULT OnObjectLoad(VOID) _T("Warning: Trying to load an object while the emulator is busy\n") _T("will certainly result in a memory lost. Before loading an object\n") _T("you should be sure that the calculator is not doing anything.\n") - _T("Do you want to see this warning next time you try to load an object ?")); + _T("Do you want to see this warning next time you try to load an object ?"),0); switch (uReply) { case IDYES: @@ -1452,6 +1409,7 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nC MSG msg; WNDCLASS wc; RECT rectWindow; + HACCEL hAccel; HSZ hszService, hszTopic; // variables for DDE server DWORD dwAffMask; @@ -1514,6 +1472,8 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nC return FALSE; } + VERIFY(hAccel = LoadAccelerators(hInst, MAKEINTRESOURCE(IDR_MENU))); + // initialization QueryPerformanceFrequency(&lFreq); // init high resolution counter QueryPerformanceCounter(&lAppStart); @@ -1607,7 +1567,8 @@ start: while (GetMessage(&msg, NULL, 0, 0)) { - if( (hDlgDebug == NULL || !IsDialogMessage(hDlgDebug, &msg)) + if( !TranslateAccelerator(hWnd, hAccel, &msg) + && (hDlgDebug == NULL || !IsDialogMessage(hDlgDebug, &msg)) && (hDlgFind == NULL || !IsDialogMessage(hDlgFind, &msg)) && (hDlgProfile == NULL || !IsDialogMessage(hDlgProfile, &msg))) { diff --git a/Sources/Emu48/EMU48.DSP b/Sources/Emu48/EMU48.DSP index dcdb6e8..3c0391f 100644 --- a/Sources/Emu48/EMU48.DSP +++ b/Sources/Emu48/EMU48.DSP @@ -7,21 +7,21 @@ CFG=Emu48 - Win32 Release !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run -!MESSAGE +!MESSAGE !MESSAGE NMAKE /f "Emu48.mak". -!MESSAGE +!MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE +!MESSAGE !MESSAGE NMAKE /f "Emu48.mak" CFG="Emu48 - Win32 Release" -!MESSAGE +!MESSAGE !MESSAGE Possible choices for configuration are: -!MESSAGE +!MESSAGE !MESSAGE "Emu48 - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "Emu48 - Win32 Debug" (based on "Win32 (x86) Application") !MESSAGE "Emu48 - Win32 Release Unicode" (based on "Win32 (x86) Application") !MESSAGE "Emu48 - Win32 Debug Unicode" (based on "Win32 (x86) Application") -!MESSAGE +!MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 @@ -137,7 +137,7 @@ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib comdlg32.lib shell32.lib winmm.lib comctl32.lib advapi32.lib /nologo /subsystem:windows /debug /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib comdlg32.lib shell32.lib winmm.lib comctl32.lib advapi32.lib /nologo /subsystem:windows /debug /machine:I386 -!ENDIF +!ENDIF # Begin Target @@ -235,6 +235,10 @@ SOURCE=.\settings.c # End Source File # Begin Source File +SOURCE=.\stack.c +# End Source File +# Begin Source File + SOURCE=.\timer.c # End Source File # End Group diff --git a/Sources/Emu48/EMU48.H b/Sources/Emu48/EMU48.H index c9529c6..856fc89 100644 --- a/Sources/Emu48/EMU48.H +++ b/Sources/Emu48/EMU48.H @@ -93,6 +93,7 @@ extern HCURSOR hCursorHand; extern BOOL bClassicCursor; extern BOOL bAutoSave; extern BOOL bAutoSaveOnExit; +extern BOOL bSaveDefConfirm; extern BOOL bAlwaysDisplayLog; extern BOOL bLoadObjectWarning; extern HANDLE hThread; @@ -203,6 +204,7 @@ extern VOID UpdatePatches(BOOL bPatch); extern BOOL PatchRom(LPCTSTR szFilename); extern BOOL MapRom(LPCTSTR szFilename); extern VOID UnmapRom(VOID); +extern WORD CrcPort2(VOID); extern BOOL MapPort2(LPCTSTR szFilename); extern VOID UnmapPort2(VOID); extern VOID ResetDocument(VOID); @@ -268,7 +270,12 @@ extern LRESULT OnToolMacroPlay(VOID); extern LRESULT OnToolMacroStop(VOID); extern LRESULT OnToolMacroSettings(VOID); +// Stack.c +extern LRESULT OnStackCopy(VOID); +extern LRESULT OnStackPaste(VOID); + // RPL.c +extern BOOL RPL_GetSystemFlag(INT nFlag); extern DWORD RPL_SkipOb(DWORD d); extern DWORD RPL_ObjectSize(BYTE *o); extern DWORD RPL_CreateTemp(DWORD l); @@ -277,7 +284,9 @@ extern VOID RPL_Replace(DWORD n); extern VOID RPL_Push(DWORD n); // External.c -extern VOID External(CHIPSET* w); +extern BOOL bWaveBeep; +extern DWORD dwWaveVol; +extern VOID External(CHIPSET* w); // DDEserv.c extern HDDEDATA CALLBACK DdeCallback(UINT, UINT, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD); @@ -310,7 +319,7 @@ extern BOOL DLLDestroyWnd(VOID); static __inline int InfoMessage(LPCTSTR szMessage) {return MessageBox(hWnd, szMessage, szTitle, MB_APPLMODAL|MB_OK|MB_ICONINFORMATION|MB_SETFOREGROUND);} static __inline int AbortMessage(LPCTSTR szMessage) {return MessageBox(hWnd, szMessage, szTitle, MB_APPLMODAL|MB_OK|MB_ICONSTOP|MB_SETFOREGROUND);} static __inline int YesNoMessage(LPCTSTR szMessage) {return MessageBox(hWnd, szMessage, szTitle, MB_APPLMODAL|MB_YESNO|MB_ICONEXCLAMATION|MB_SETFOREGROUND);} -static __inline int YesNoCancelMessage(LPCTSTR szMessage) {return MessageBox(hWnd, szMessage, szTitle, MB_APPLMODAL|MB_YESNOCANCEL|MB_ICONEXCLAMATION|MB_SETFOREGROUND);} +static __inline int YesNoCancelMessage(LPCTSTR szMessage,UINT uStyle) {return MessageBox(hWnd, szMessage, szTitle, MB_APPLMODAL|MB_YESNOCANCEL|MB_ICONEXCLAMATION|MB_SETFOREGROUND|uStyle);} // Missing Win32 API calls static __inline LPTSTR DuplicateString(LPCTSTR szString) diff --git a/Sources/Emu48/EMU48.RC b/Sources/Emu48/EMU48.RC index 92ed6ef..c8a4d0e 100644 --- a/Sources/Emu48/EMU48.RC +++ b/Sources/Emu48/EMU48.RC @@ -74,7 +74,7 @@ BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 160 TOPMARGIN, 4 - BOTTOMMARGIN, 222 + BOTTOMMARGIN, 256 END IDD_CHOOSEKML, DIALOG @@ -232,15 +232,15 @@ BEGIN ES_READONLY END -IDD_SETTINGS DIALOG DISCARDABLE 0, 0, 167, 229 +IDD_SETTINGS DIALOG DISCARDABLE 0, 0, 167, 263 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Settings" FONT 8, "MS Sans Serif" BEGIN CONTROL "Authentic Calculator Speed",IDC_REALSPEED,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,13,13,100,10 - CONTROL "Enable Virtual LCD Delay",IDC_GRAYSCALE, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,25,100,10 + CONTROL "Enable Virtual LCD Delay",IDC_GRAYSCALE,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,13,25,100,10 CONTROL "Automatically Save Files",IDC_AUTOSAVE,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,13,37,89,10 CONTROL "Automatically Save Files On Exit",IDC_AUTOSAVEONEXIT, @@ -255,25 +255,35 @@ BEGIN CONTROL "Class Mnemonics",IDC_DISASM_CLASS,"Button", BS_AUTORADIOBUTTON,84,101,70,11 GROUPBOX "Disassembler",IDC_STATIC,7,90,153,28 + LTEXT "Volume",IDC_STATIC,13,134,24,8 + CONTROL "Slider1",IDC_SOUND_SLIDER,"msctls_trackbar32", + TBS_AUTOTICKS | WS_TABSTOP,39,129,68,18 + CONTROL "Speaker",IDC_SOUND_SPEAKER,"Button",BS_AUTORADIOBUTTON | + WS_GROUP | WS_TABSTOP,111,128,43,10 + CONTROL "Wave",IDC_SOUND_WAVE,"Button",BS_AUTORADIOBUTTON,111, + 139,43,10 + GROUPBOX "Sound",IDC_STATIC,7,120,153,34 CONTROL "Port 1 is Plugged",IDC_PORT1EN,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,13,131,67,10 + WS_TABSTOP,13,165,67,10 CONTROL "Port 1 is Writeable",IDC_PORT1WR,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,84,131,69,10 + BS_AUTOCHECKBOX | WS_TABSTOP,84,165,69,10 CONTROL "Port 2 is Shared",IDC_PORT2ISSHARED,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,13,143,65,10 - LTEXT "Port 2 File :",IDC_STATIC,13,159,37,8 - EDITTEXT IDC_PORT2,51,156,94,12,ES_AUTOHSCROLL - PUSHBUTTON "...",IDC_PORT2LOAD,145,156,10,12 - GROUPBOX "Memory Cards",IDC_STATIC,7,122,153,51 - LTEXT "Wire:",IDC_STATIC,13,188,17,8 - COMBOBOX IDC_WIRE,31,186,48,42,CBS_DROPDOWNLIST | WS_VSCROLL | + BS_AUTOCHECKBOX | WS_TABSTOP,13,177,65,10 + CONTROL "Port 2 is Writeable",IDC_PORT2WR,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,84,177,69,10 + LTEXT "Port 2 File :",IDC_STATIC,13,192,37,8 + EDITTEXT IDC_PORT2,51,190,94,12,ES_AUTOHSCROLL + PUSHBUTTON "...",IDC_PORT2LOAD,145,190,10,12 + GROUPBOX "Memory Cards",IDC_STATIC,7,156,153,51 + LTEXT "Wire:",IDC_STATIC,13,221,17,8 + COMBOBOX IDC_WIRE,31,219,48,42,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "IR:",IDC_STATIC,89,188,9,8 - COMBOBOX IDC_IR,107,186,48,43,CBS_DROPDOWNLIST | WS_VSCROLL | + LTEXT "IR:",IDC_STATIC,89,221,9,8 + COMBOBOX IDC_IR,107,219,48,43,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - GROUPBOX "Serial Ports",IDC_STATIC,7,176,153,27 - DEFPUSHBUTTON "&Ok",IDOK,9,208,50,14 - PUSHBUTTON "&Cancel",IDCANCEL,107,208,50,14 + GROUPBOX "Serial Ports",IDC_STATIC,7,209,153,27 + DEFPUSHBUTTON "&Ok",IDOK,9,242,50,14 + PUSHBUTTON "&Cancel",IDCANCEL,107,242,50,14 END IDD_CHOOSEKML DIALOG DISCARDABLE 0, 0, 195, 66 @@ -492,7 +502,7 @@ BEGIN LTEXT "Fast",IDC_MACRO_FAST,78,16,14,8,WS_DISABLED CONTROL "Slider1",IDC_MACRO_SLIDER,"msctls_trackbar32", TBS_AUTOTICKS | WS_DISABLED | WS_TABSTOP,12,26,82,21 - CONTROL "&Real",IDC_MACRO_REAL,"Button",BS_AUTORADIOBUTTON | + CONTROL "&Real",IDC_MACRO_REAL,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,103,18,39,10 CONTROL "&Manual",IDC_MACRO_MANUAL,"Button",BS_AUTORADIOBUTTON, 103,32,39,10 @@ -538,8 +548,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,3,8,0 - PRODUCTVERSION 1,3,8,0 + FILEVERSION 1,4,0,0 + PRODUCTVERSION 1,4,0,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -556,12 +566,12 @@ BEGIN BEGIN VALUE "CompanyName", "Sebastien Carlier & Christoph Gießelink\0" VALUE "FileDescription", "HP38/39/40/48/49 Emulator\0" - VALUE "FileVersion", "1, 3, 8, 0\0" + VALUE "FileVersion", "1, 4, 0, 0\0" VALUE "InternalName", "Emu48\0" VALUE "LegalCopyright", "Copyright © 2005\0" VALUE "OriginalFilename", "Emu48.exe\0" VALUE "ProductName", "Emu48\0" - VALUE "ProductVersion", "1, 3, 8, 0\0" + VALUE "ProductVersion", "1, 4, 0, 0\0" END END BLOCK "VarFileInfo" @@ -607,8 +617,8 @@ BEGIN MENUITEM "&Save Object...", ID_OBJECT_SAVE MENUITEM SEPARATOR MENUITEM "C&opy Screen", ID_VIEW_COPY - MENUITEM "&Copy String", ID_STACK_COPY - MENUITEM "&Paste String", ID_STACK_PASTE + MENUITEM "&Copy Stack", ID_STACK_COPY + MENUITEM "&Paste Stack", ID_STACK_PASTE MENUITEM SEPARATOR MENUITEM "&Reset Calculator", ID_VIEW_RESET, GRAYED POPUP "&Backup" @@ -755,6 +765,25 @@ END #endif // APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// 24 +// + +CREATEPROCESS_MANIFEST_RESOURCE_ID 24 MOVEABLE PURE "Emu48.xml" + +///////////////////////////////////////////////////////////////////////////// +// +// Accelerator +// + +IDR_MENU ACCELERATORS DISCARDABLE +BEGIN + "C", ID_STACK_COPY, VIRTKEY, CONTROL, NOINVERT + "V", ID_STACK_PASTE, VIRTKEY, CONTROL, NOINVERT +END + + ///////////////////////////////////////////////////////////////////////////// // // String Table @@ -773,14 +802,6 @@ BEGIN ID_BREAKPOINTS_CODEEDIT "Breakpoint List" END - -///////////////////////////////////////////////////////////////////////////// -// -// Manifest -// - -CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "Emu48.xml" - #endif // English (U.S.) resources ///////////////////////////////////////////////////////////////////////////// diff --git a/Sources/Emu48/ENGINE.C b/Sources/Emu48/ENGINE.C index dd30ef7..3dde5be 100644 --- a/Sources/Emu48/ENGINE.C +++ b/Sources/Emu48/ENGINE.C @@ -549,6 +549,7 @@ loop: IOBit(SRQ2,NINT,bNINT); } RomSwitch(Chipset.Bank_FF); // select HP49G ROM bank and update memory mapping + UpdateContrast(Chipset.contrast); UpdateDisplayPointers(); UpdateMainDisplay(); UpdateMenuDisplay(); diff --git a/Sources/Emu48/EXTERNAL.C b/Sources/Emu48/EXTERNAL.C index dbffcd1..71315da 100644 --- a/Sources/Emu48/EXTERNAL.C +++ b/Sources/Emu48/EXTERNAL.C @@ -4,12 +4,15 @@ * This file is part of Emu48 * * Copyright (C) 1995 Sebastien Carlier + * Copyright (C) 2005 Christoph Gießelink * */ #include "pch.h" #include "Emu48.h" #include "ops.h" +#define MUSIC_FREQ 11025 // this can be adjusted for quality + //| 38G | 39G | 40G | 48SX | 48GX | 49G | Name //#F0E4F #80F0F #80F0F #706D2 #80850 #80F0F =SFLAG53_56 @@ -28,6 +31,102 @@ ) \ ) +BOOL bWaveBeep = FALSE; // PC speaker +DWORD dwWaveVol = 64; // wave sound volume + +static __inline VOID BeepWave(DWORD dwFrequency,DWORD dwDuration) +{ + HWAVEOUT hSoundDevice; + WAVEFORMATEX wf; + WAVEHDR wh; + HANDLE hEventSound; + DWORD i; + + if (dwFrequency == 0) // this is just a delay + { + Sleep(dwDuration); + return; + } + + hEventSound = CreateEvent(NULL,FALSE,FALSE,NULL); + + wf.wFormatTag = WAVE_FORMAT_PCM; + wf.nChannels = 1; + wf.nSamplesPerSec = MUSIC_FREQ; + wf.nAvgBytesPerSec = MUSIC_FREQ; + wf.nBlockAlign = 1; + wf.wBitsPerSample = 8; + wf.cbSize = 0; + + if (waveOutOpen(&hSoundDevice,WAVE_MAPPER,&wf,(DWORD)hEventSound,0,CALLBACK_EVENT) != 0) + { + CloseHandle(hEventSound); // no sound available + return; + } + + // (samp/sec) * msecs * (secs/msec) = samps + wh.dwBufferLength = (DWORD) ((QWORD) MUSIC_FREQ * dwDuration / 1000); + VERIFY(wh.lpData = HeapAlloc(hHeap,0,wh.dwBufferLength)); + wh.dwBytesRecorded = 0; + wh.dwUser = 0; + wh.dwFlags = 0; + wh.dwLoops = 0; + + for (i = 0; i < wh.dwBufferLength; ++i) // generate square wave + { + wh.lpData[i] = (BYTE) ((((QWORD) 2 * dwFrequency * i / MUSIC_FREQ) & 1) * dwWaveVol); + } + + VERIFY(waveOutPrepareHeader(hSoundDevice,&wh,sizeof(wh)) == MMSYSERR_NOERROR); + + ResetEvent(hEventSound); // prepare event for finishing + VERIFY(waveOutWrite(hSoundDevice,&wh,sizeof(wh)) == MMSYSERR_NOERROR); + WaitForSingleObject(hEventSound,INFINITE); // wait for finishing + + VERIFY(waveOutUnprepareHeader(hSoundDevice,&wh,sizeof(wh)) == MMSYSERR_NOERROR); + VERIFY(waveOutClose(hSoundDevice) == MMSYSERR_NOERROR); + + HeapFree(hHeap,0,wh.lpData); + CloseHandle(hEventSound); + return; +} + +static __inline VOID BeepWin9x(DWORD dwFrequency,DWORD dwDuration) +{ + #define PIT8254_CNT2 0x42 + #define PIT8254_MCR 0x43 + #define PPI8255_PBO 0x61 + + BYTE bySpk = _inp(PPI8255_PBO); // get current status + + if (dwFrequency != 0) + { + WORD wCount; + + // limit low frequency + if (lFreq.QuadPart / 65535 >= dwFrequency) + dwFrequency = (DWORD) (lFreq.QuadPart / 65535) + 1; + + // determine the timer frequency + wCount = (WORD) (lFreq.QuadPart / dwFrequency); + + _outp(PIT8254_MCR,0xB6); // set up the timer + + _outp(PIT8254_CNT2,wCount&0xff); + _outp(PIT8254_CNT2,wCount>>8); + + _outp(PPI8255_PBO,bySpk | 0x03); // turn on the speaker + } + + Sleep(dwDuration); + + _outp(PPI8255_PBO,bySpk & 0xFC); // turn off the speaker + return; + #undef PIT8254_CNT2 + #undef PIT8254_MCR + #undef PPI8255_PBO +} + static __inline VOID Return(CHIPSET* w) { w->rstkp=(w->rstkp-1)&7; @@ -48,13 +147,30 @@ VOID External(CHIPSET* w) // Beep patch w->carry = TRUE; // setting of no beep if (!(fbeep & 0x8) && freq) // bit -56 clear and frequency > 0 Hz { - if (freq < 37) freq = 37; // low limit of freqency (NT) if (freq > 4400) freq = 4400; // high limit of HP (SX) - if (dur > 1048575) // high limit of HP (SX) - dur = 1048575; + if (bWaveBeep) + { + BeepWave(freq,dur); // wave output over sound card + } + else + { + OSVERSIONINFO version; + version.dwOSVersionInfoSize = sizeof(version); + GetVersionEx(&version); - Beep(freq,dur); // NT: ok, Windows 95: default sound or standard system beep + if (version.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) + { + BeepWin9x(freq,dur); // do it the hard way on '9x / Me + } + else // VER_PLATFORM_WIN32_NT + { + if (freq < 37) freq = 37; // low limit of freqency (NT) + + _ASSERT(freq >= 0x25 && freq <= 0x7FFF); + Beep(freq,dur); // NT: ok, Windows 95: default sound or standard system beep + } + } // estimate cpu cycles for beeping time (2MHz / 4MHz) w->cycles += dur * ((cCurrentRomType=='S') ? 2000 : 4000); diff --git a/Sources/Emu48/FILES.C b/Sources/Emu48/FILES.C index a40c120..ffa1e10 100644 --- a/Sources/Emu48/FILES.C +++ b/Sources/Emu48/FILES.C @@ -422,7 +422,7 @@ VOID UnmapRom(VOID) //# //################ -static WORD CrcPort2(VOID) // calculate fingerprint of port2 +WORD CrcPort2(VOID) // calculate fingerprint of port2 { DWORD dwCount; DWORD dwFileSize; diff --git a/Sources/Emu48/KML.C b/Sources/Emu48/KML.C index ca657b6..c92c4e5 100644 --- a/Sources/Emu48/KML.C +++ b/Sources/Emu48/KML.C @@ -83,6 +83,7 @@ static KmlToken pLexToken[] = {TOK_IFFLAG, 000001, 6,_T("IfFlag")}, {TOK_ONDOWN, 000000, 6,_T("OnDown")}, {TOK_NOHOLD, 000000, 6,_T("NoHold")}, + {TOK_TOPBAR, 000001, 6,_T("Topbar")}, // for PPC compatibility reasons {TOK_TITLE, 000002, 5,_T("Title")}, {TOK_OUTIN, 000011, 5,_T("OutIn")}, {TOK_PATCH, 000002, 5,_T("Patch")}, @@ -100,6 +101,7 @@ static KmlToken pLexToken[] = {TOK_ONUP, 000000, 4,_T("OnUp")}, {TOK_MAP, 000011, 3,_T("Map")}, {TOK_ROM, 000002, 3,_T("Rom")}, + {TOK_VGA, 000001, 3,_T("Vga")}, // for PPC compatibility reasons {TOK_LCD, 000000, 3,_T("Lcd")}, {TOK_END, 000000, 3,_T("End")}, {0, 000000, 0,_T("")}, @@ -574,7 +576,7 @@ loop: } if (*szText==_T('#')) { - do szText++; while (*szText != _T('\n')); + do szText++; while (*szText != _T('\n') && *szText != 0); if (nMode != LEX_PARAM) goto loop; } return; @@ -1024,6 +1026,11 @@ static KmlBlock* ParseBlocks(VOID) } } if (pFirst) pBlock->pNext = NULL; + if (*szText != 0) // still KML text left + { + FatalError(); // error unknown block token + goto abort; + } return pFirst; abort: if (pFirst) FreeBlocks(pFirst); @@ -1288,8 +1295,9 @@ static KmlLine* SkipLines(KmlLine* pLine, TokenId eCommand) while (pLine) { if (IsBlock(pLine->eCommand)) nLevel++; - if (pLine->eCommand==eCommand) + if (pLine->eCommand == eCommand) { + // found token, return command behind token if (nLevel == 0) return pLine->pNext; } if (pLine->eCommand == TOK_END) @@ -1297,7 +1305,7 @@ static KmlLine* SkipLines(KmlLine* pLine, TokenId eCommand) if (nLevel) nLevel--; else - return NULL; + break; } pLine = pLine->pNext; } @@ -1467,6 +1475,7 @@ VOID KillKML(VOID) nBackgroundW = 256; nBackgroundH = 0; nLcdZoom = 1; + cCurrentRomType = 0; UpdateWindowStatus(); ResizeWindow(); return; @@ -2156,7 +2165,7 @@ BOOL InitKML(LPCTSTR szFilename, BOOL bNoLog) if (cCurrentRomType == 0) { - AddToLog(_T("This KML Script doesn't specify the ROM Type.")); + AddToLog(_T("This KML Script doesn't specify the model.")); goto quit; } if (pbyRom == NULL) @@ -2164,6 +2173,12 @@ BOOL InitKML(LPCTSTR szFilename, BOOL bNoLog) AddToLog(_T("This KML Script doesn't specify the ROM to use, or the ROM could not be loaded.")); goto quit; } + if (hMainDC == NULL) + { + AddToLog(_T("This KML Script doesn't specify the background bitmap, or bitmap could not be loaded.")); + goto quit; + } + CreateLcdBitmap(); PrintfToLog(_T("%i Buttons Defined"), nButtons); diff --git a/Sources/Emu48/KML.H b/Sources/Emu48/KML.H index 07ed190..262db65 100644 --- a/Sources/Emu48/KML.H +++ b/Sources/Emu48/KML.H @@ -35,27 +35,29 @@ typedef enum eTokenId TOK_IFFLAG, //19 TOK_ONDOWN, //20 TOK_NOHOLD, //21 - TOK_TITLE, //22 - TOK_OUTIN, //23 - TOK_PATCH, //24 - TOK_PRINT, //25 - TOK_DEBUG, //26 - TOK_COLOR, //27 - TOK_MODEL, //28 - TOK_CLASS, //29 - TOK_PRESS, //30 - TOK_TYPE, //31 - TOK_SIZE, //32 - TOK_DOWN, //33 - TOK_ZOOM, //34 - TOK_ELSE, //35 - TOK_ONUP, //36 - TOK_EOL, //37 - TOK_MAP, //38 - TOK_ROM, //39 - TOK_LCD, //40 - TOK_NOTFLAG, //41 - TOK_END //42 + TOK_TOPBAR, //22 + TOK_TITLE, //23 + TOK_OUTIN, //24 + TOK_PATCH, //25 + TOK_PRINT, //26 + TOK_DEBUG, //27 + TOK_COLOR, //28 + TOK_MODEL, //29 + TOK_CLASS, //30 + TOK_PRESS, //31 + TOK_TYPE, //32 + TOK_SIZE, //33 + TOK_DOWN, //34 + TOK_ZOOM, //35 + TOK_ELSE, //36 + TOK_ONUP, //37 + TOK_EOL, //38 + TOK_MAP, //39 + TOK_ROM, //40 + TOK_VGA, //41 + TOK_LCD, //42 + TOK_NOTFLAG, //43 + TOK_END //44 } TokenId; #define TYPE_NONE 00 diff --git a/Sources/Emu48/PCH.H b/Sources/Emu48/PCH.H index 5dfe309..34d1989 100644 --- a/Sources/Emu48/PCH.H +++ b/Sources/Emu48/PCH.H @@ -13,6 +13,7 @@ #include #include #include +#include #include #if !defined VERIFY diff --git a/Sources/Emu48/RESOURCE.H b/Sources/Emu48/RESOURCE.H index b7ab665..e22d0af 100644 --- a/Sources/Emu48/RESOURCE.H +++ b/Sources/Emu48/RESOURCE.H @@ -36,116 +36,120 @@ #define IDC_PORT1EN 1006 #define IDC_PORT1WR 1007 #define IDC_PORT2ISSHARED 1008 -#define IDC_PORT2 1009 -#define IDC_PORT2LOAD 1010 -#define IDC_WIRE 1011 -#define IDC_IR 1012 -#define IDC_EMUDIR 1013 -#define IDC_EMUDIRSEL 1014 -#define IDC_UPDATE 1015 -#define IDC_KMLSCRIPT 1016 -#define IDC_AUTHOR 1017 -#define IDC_TITLE 1018 -#define IDC_KMLLOG 1019 -#define IDC_VERSION 1020 -#define IDC_LICENSE 1021 -#define IDC_DISASM_WIN 1022 -#define IDC_DISASM_MAP 1023 -#define IDC_DISASM_ROM 1024 -#define IDC_DISASM_RAM 1025 -#define IDC_DISASM_PORT1 1026 -#define IDC_DISASM_PORT2 1027 -#define IDC_DISASM_MODULE 1028 -#define IDC_DISASM_HP 1029 -#define IDC_DISASM_CLASS 1030 -#define IDC_ADDRESS 1031 -#define IDC_DISASM_ADR 1032 -#define IDC_DISASM_NEXT 1033 -#define IDC_DISASM_COPY 1034 -#define IDC_DEBUG_CODE 1035 -#define IDC_STATIC_CODE 1036 -#define IDC_STATIC_REGISTERS 1037 -#define IDC_STATIC_MEMORY 1038 -#define IDC_STATIC_STACK 1039 -#define IDC_REG_A 1040 -#define IDC_REG_B 1041 -#define IDC_REG_C 1042 -#define IDC_REG_D 1043 -#define IDC_REG_R0 1044 -#define IDC_REG_R1 1045 -#define IDC_REG_R2 1046 -#define IDC_REG_R3 1047 -#define IDC_REG_R4 1048 -#define IDC_REG_D0 1049 -#define IDC_REG_D1 1050 -#define IDC_REG_P 1051 -#define IDC_REG_PC 1052 -#define IDC_REG_OUT 1053 -#define IDC_REG_IN 1054 -#define IDC_REG_ST 1055 -#define IDC_REG_CY 1056 -#define IDC_REG_MODE 1057 -#define IDC_REG_MP 1058 -#define IDC_REG_SR 1059 -#define IDC_REG_SB 1060 -#define IDC_REG_XM 1061 -#define IDC_MISC_INT 1062 -#define IDC_MISC_KEY 1063 -#define IDC_MISC_BS 1064 -#define IDC_NEWVALUE 1065 -#define IDC_ENTERADR 1066 -#define IDC_DEBUG_MEM 1067 -#define IDC_DEBUG_MEM_ADDR 1068 -#define IDC_DEBUG_MEM_COL0 1069 -#define IDC_DEBUG_MEM_COL1 1070 -#define IDC_DEBUG_MEM_COL2 1071 -#define IDC_DEBUG_MEM_COL3 1072 -#define IDC_DEBUG_MEM_COL4 1073 -#define IDC_DEBUG_MEM_COL5 1074 -#define IDC_DEBUG_MEM_COL6 1075 -#define IDC_DEBUG_MEM_COL7 1076 -#define IDC_DEBUG_MEM_TEXT 1077 -#define IDC_DEBUG_STACK 1078 -#define IDC_STATIC_BREAKPOINT 1079 -#define IDC_BREAKEDIT_ADD 1080 -#define IDC_BREAKEDIT_DELETE 1081 -#define IDC_BREAKEDIT_WND 1082 -#define IDC_STATIC_MMU 1083 -#define IDC_MMU_IO_A 1084 -#define IDC_MMU_NCE2_A 1085 -#define IDC_MMU_CE1_A 1086 -#define IDC_MMU_CE2_A 1087 -#define IDC_MMU_NCE3_A 1088 -#define IDC_MMU_IO_S 1089 -#define IDC_MMU_CE1_S 1090 -#define IDC_MMU_CE2_S 1091 -#define IDC_MMU_NCE2_S 1092 -#define IDC_MMU_NCE3_S 1093 -#define IDC_STATIC_MISC 1094 -#define IDC_MISC_BS_TXT 1095 -#define IDC_INSTR_TEXT 1096 -#define IDC_INSTR_CODE 1097 -#define IDC_INSTR_COPY 1098 -#define IDC_INSTR_CLEAR 1099 -#define IDC_PROFILE_LASTCYCLES 1100 -#define IDC_PROFILE_LASTTIME 1101 -#define IDC_BPCODE 1102 -#define IDC_BPRPL 1103 -#define IDC_BPACCESS 1104 -#define IDC_BPREAD 1105 -#define IDC_BPWRITE 1106 -#define IDC_FIND_DATA 1107 -#define IDC_FIND_ASCII 1108 -#define IDC_FIND_CASE 1109 -#define IDC_ADDR20_24 1110 -#define IDC_ADDR25_27 1111 -#define IDC_ADDR28_29 1112 -#define IDC_ADDR30_34 1113 -#define IDC_MACRO_SLOW 1114 -#define IDC_MACRO_FAST 1115 -#define IDC_MACRO_SLIDER 1116 -#define IDC_MACRO_REAL 1117 -#define IDC_MACRO_MANUAL 1118 +#define IDC_PORT2WR 1009 +#define IDC_PORT2 1010 +#define IDC_PORT2LOAD 1011 +#define IDC_WIRE 1012 +#define IDC_IR 1013 +#define IDC_EMUDIR 1014 +#define IDC_EMUDIRSEL 1015 +#define IDC_UPDATE 1016 +#define IDC_KMLSCRIPT 1017 +#define IDC_AUTHOR 1018 +#define IDC_TITLE 1019 +#define IDC_KMLLOG 1020 +#define IDC_VERSION 1021 +#define IDC_LICENSE 1022 +#define IDC_DISASM_WIN 1023 +#define IDC_DISASM_MAP 1024 +#define IDC_DISASM_ROM 1025 +#define IDC_DISASM_RAM 1026 +#define IDC_DISASM_PORT1 1027 +#define IDC_DISASM_PORT2 1028 +#define IDC_DISASM_MODULE 1029 +#define IDC_DISASM_HP 1030 +#define IDC_DISASM_CLASS 1031 +#define IDC_ADDRESS 1032 +#define IDC_DISASM_ADR 1033 +#define IDC_DISASM_NEXT 1034 +#define IDC_DISASM_COPY 1035 +#define IDC_DEBUG_CODE 1036 +#define IDC_STATIC_CODE 1037 +#define IDC_STATIC_REGISTERS 1038 +#define IDC_STATIC_MEMORY 1039 +#define IDC_STATIC_STACK 1040 +#define IDC_REG_A 1041 +#define IDC_REG_B 1042 +#define IDC_REG_C 1043 +#define IDC_REG_D 1044 +#define IDC_REG_R0 1045 +#define IDC_REG_R1 1046 +#define IDC_REG_R2 1047 +#define IDC_REG_R3 1048 +#define IDC_REG_R4 1049 +#define IDC_REG_D0 1050 +#define IDC_REG_D1 1051 +#define IDC_REG_P 1052 +#define IDC_REG_PC 1053 +#define IDC_REG_OUT 1054 +#define IDC_REG_IN 1055 +#define IDC_REG_ST 1056 +#define IDC_REG_CY 1057 +#define IDC_REG_MODE 1058 +#define IDC_REG_MP 1059 +#define IDC_REG_SR 1060 +#define IDC_REG_SB 1061 +#define IDC_REG_XM 1062 +#define IDC_MISC_INT 1063 +#define IDC_MISC_KEY 1064 +#define IDC_MISC_BS 1065 +#define IDC_NEWVALUE 1066 +#define IDC_ENTERADR 1067 +#define IDC_DEBUG_MEM 1068 +#define IDC_DEBUG_MEM_ADDR 1069 +#define IDC_DEBUG_MEM_COL0 1070 +#define IDC_DEBUG_MEM_COL1 1071 +#define IDC_DEBUG_MEM_COL2 1072 +#define IDC_DEBUG_MEM_COL3 1073 +#define IDC_DEBUG_MEM_COL4 1074 +#define IDC_DEBUG_MEM_COL5 1075 +#define IDC_DEBUG_MEM_COL6 1076 +#define IDC_DEBUG_MEM_COL7 1077 +#define IDC_DEBUG_MEM_TEXT 1078 +#define IDC_DEBUG_STACK 1079 +#define IDC_STATIC_BREAKPOINT 1080 +#define IDC_BREAKEDIT_ADD 1081 +#define IDC_BREAKEDIT_DELETE 1082 +#define IDC_BREAKEDIT_WND 1083 +#define IDC_STATIC_MMU 1084 +#define IDC_MMU_IO_A 1085 +#define IDC_MMU_NCE2_A 1086 +#define IDC_MMU_CE1_A 1087 +#define IDC_MMU_CE2_A 1088 +#define IDC_MMU_NCE3_A 1089 +#define IDC_MMU_IO_S 1090 +#define IDC_MMU_CE1_S 1091 +#define IDC_MMU_CE2_S 1092 +#define IDC_MMU_NCE2_S 1093 +#define IDC_MMU_NCE3_S 1094 +#define IDC_STATIC_MISC 1095 +#define IDC_MISC_BS_TXT 1096 +#define IDC_INSTR_TEXT 1097 +#define IDC_INSTR_CODE 1098 +#define IDC_INSTR_COPY 1099 +#define IDC_INSTR_CLEAR 1100 +#define IDC_PROFILE_LASTCYCLES 1101 +#define IDC_PROFILE_LASTTIME 1102 +#define IDC_BPCODE 1103 +#define IDC_BPRPL 1104 +#define IDC_BPACCESS 1105 +#define IDC_BPREAD 1106 +#define IDC_BPWRITE 1107 +#define IDC_FIND_DATA 1108 +#define IDC_FIND_ASCII 1109 +#define IDC_FIND_CASE 1110 +#define IDC_ADDR20_24 1111 +#define IDC_ADDR25_27 1112 +#define IDC_ADDR28_29 1113 +#define IDC_ADDR30_34 1114 +#define IDC_MACRO_SLOW 1115 +#define IDC_MACRO_FAST 1116 +#define IDC_MACRO_SLIDER 1117 +#define IDC_MACRO_REAL 1118 +#define IDC_MACRO_MANUAL 1119 +#define IDC_SOUND_SLIDER 1120 +#define IDC_SOUND_SPEAKER 1121 +#define IDC_SOUND_WAVE 1122 #define ID_FILE_NEW 40001 #define ID_FILE_OPEN 40002 #define ID_FILE_SAVE 40003 @@ -212,7 +216,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 123 #define _APS_NEXT_COMMAND_VALUE 40062 -#define _APS_NEXT_CONTROL_VALUE 1119 +#define _APS_NEXT_CONTROL_VALUE 1122 #define _APS_NEXT_SYMED_VALUE 108 #endif #endif diff --git a/Sources/Emu48/RPL.C b/Sources/Emu48/RPL.C index 8b84931..147fab4 100644 --- a/Sources/Emu48/RPL.C +++ b/Sources/Emu48/RPL.C @@ -18,13 +18,15 @@ //#F0697 #806F8 #806F8 #70579 #806F8 #806F8 =DSKTOP (D1) //#F0DEA #80E9B #80E9B #7066E #807ED #80E9B =AVMEM (D) //#F0705 #8076B #8076B #705B0 #8072F #8076B =INTRPPTR (D0) +// #80F02 #80F02 #706C5 #80843 #80F02 =SystemFlags -#define TEMPOB ((cCurrentRomType=='S')?0x7056A:0x806E9) -#define TEMPTOP ((cCurrentRomType=='S')?0x7056F:0x806EE) -#define RSKTOP ((cCurrentRomType=='S')?0x70574:0x806F3) -#define DSKTOP ((cCurrentRomType=='S')?0x70579:0x806F8) -#define AVMEM ((cCurrentRomType!='X')?((cCurrentRomType=='S')?0x7066E:0x807ED):0x80E9B) -#define INTRPPTR ((cCurrentRomType!='X')?((cCurrentRomType=='S')?0x705B0:0x8072F):0x8076B) +#define TEMPOB ((cCurrentRomType=='S')?0x7056A:0x806E9) +#define TEMPTOP ((cCurrentRomType=='S')?0x7056F:0x806EE) +#define RSKTOP ((cCurrentRomType=='S')?0x70574:0x806F3) +#define DSKTOP ((cCurrentRomType=='S')?0x70579:0x806F8) +#define AVMEM ((cCurrentRomType!='X')?((cCurrentRomType=='S')?0x7066E:0x807ED):0x80E9B) +#define INTRPPTR ((cCurrentRomType!='X')?((cCurrentRomType=='S')?0x705B0:0x8072F):0x8076B) +#define SYSTEMFLAGS ((cCurrentRomType!='X')?((cCurrentRomType=='S')?0x706C5:0x80843):0x80F02) #define DOINT 0x02614 // Precision Integer (HP49G) #define DOLNGREAL 0x0263A // Precision Real (HP49G) @@ -93,6 +95,21 @@ static BOOL Metakernel(VOID) return bMkDetect; } +BOOL RPL_GetSystemFlag(INT nFlag) +{ + DWORD dwAddr; + BYTE byMask,byFlag; + + _ASSERT(nFlag > 0); // first flag is 1 + + // calculate memory address and bit mask + dwAddr = SYSTEMFLAGS + (nFlag - 1) / 4; + byMask = 1 << ((nFlag - 1) & 0x3); + + Npeek(&byFlag,dwAddr,sizeof(byFlag)); + return (byFlag & byMask) != 0; +} + DWORD RPL_SkipOb(DWORD d) { BYTE X[8]; diff --git a/Sources/Emu48/SETTINGS.C b/Sources/Emu48/SETTINGS.C index 63dc282..0a68aa7 100644 --- a/Sources/Emu48/SETTINGS.C +++ b/Sources/Emu48/SETTINGS.C @@ -141,6 +141,7 @@ VOID ReadSettings(VOID) ReadString(_T("Files"),_T("Emu48Directory"),szCurrentDirectory,szEmuDirectory,ARRAYSIZEOF(szEmuDirectory)); bAutoSave = ReadInt(_T("Files"),_T("AutoSave"),bAutoSave); bAutoSaveOnExit = ReadInt(_T("Files"),_T("AutoSaveOnExit"),bAutoSaveOnExit); + bSaveDefConfirm = ReadInt(_T("Files"),_T("SaveDefaultConfirm"),bSaveDefConfirm); bLoadObjectWarning = ReadInt(_T("Files"),_T("LoadObjectWarning"),bLoadObjectWarning); // Port2 bPort2IsShared = ReadInt(_T("Port2"),_T("IsShared"),bPort2IsShared); @@ -152,9 +153,11 @@ VOID ReadSettings(VOID) disassembler_mode = ReadInt(_T("Disassembler"),_T("Mnemonics"),disassembler_mode); // Emulator bRealSpeed = ReadInt(_T("Emulator"),_T("RealSpeed"),bRealSpeed); - bGrayscale = ReadInt(_T("Emulator"),_T("Grayscale"),bGrayscale); dwSXCycles = ReadInt(_T("Emulator"),_T("SXCycles"),dwSXCycles); dwGXCycles = ReadInt(_T("Emulator"),_T("GXCycles"),dwGXCycles); + bGrayscale = ReadInt(_T("Emulator"),_T("Grayscale"),bGrayscale); + bWaveBeep = ReadInt(_T("Emulator"),_T("WaveBeep"),bWaveBeep); + dwWaveVol = ReadInt(_T("Emulator"),_T("WaveVolume"),dwWaveVol); SetSpeed(bRealSpeed); // set speed // Macro bMacroRealSpeed = ReadInt(_T("Macro"),_T("RealSpeed"),bMacroRealSpeed); @@ -174,6 +177,7 @@ VOID WriteSettings(VOID) WriteString(_T("Files"),_T("Emu48Directory"),szEmuDirectory); WriteInt(_T("Files"),_T("AutoSave"),bAutoSave); WriteInt(_T("Files"),_T("AutoSaveOnExit"),bAutoSaveOnExit); + WriteInt(_T("Files"),_T("SaveDefaultConfirm"),bSaveDefConfirm); WriteInt(_T("Files"),_T("LoadObjectWarning"),bLoadObjectWarning); // Port2 WriteInt(_T("Port2"),_T("IsShared"),bPort2IsShared); @@ -185,9 +189,11 @@ VOID WriteSettings(VOID) WriteInt(_T("Disassembler"),_T("Mnemonics"),disassembler_mode); // Emulator WriteInt(_T("Emulator"),_T("RealSpeed"),bRealSpeed); - WriteInt(_T("Emulator"),_T("Grayscale"),bGrayscale); WriteInt(_T("Emulator"),_T("SXCycles"),dwSXCycles); WriteInt(_T("Emulator"),_T("GXCycles"),dwGXCycles); + WriteInt(_T("Emulator"),_T("Grayscale"),bGrayscale); + WriteInt(_T("Emulator"),_T("WaveBeep"),bWaveBeep); + WriteInt(_T("Emulator"),_T("WaveVolume"),dwWaveVol); // Macro WriteInt(_T("Macro"),_T("RealSpeed"),bMacroRealSpeed); WriteInt(_T("Macro"),_T("ReplayTimeout"),nMacroTimeout); diff --git a/Sources/Emu48/STACK.C b/Sources/Emu48/STACK.C new file mode 100644 index 0000000..48f6e50 --- /dev/null +++ b/Sources/Emu48/STACK.C @@ -0,0 +1,646 @@ +/* + * stack.c + * + * This file is part of Emu48 + * + * Copyright (C) 2005 Christoph Gießelink + * + */ +#include "pch.h" +#include "resource.h" +#include "Emu48.h" +#include "io.h" + +#define fnRadix 51 // fraction mark +#define fnApprox 105 // exact / approx. mode (HP49G) + +#define DOINT 0x02614 // Precision Integer (HP49G) +#define DOREAL 0x02933 // Real +#define DOCSTR 0x02A2C // String + +//################ +//# +//# Low level subroutines +//# +//################ + +static INT RPL_GetZInt(BYTE CONST *pbyNum,INT nIntLen,LPTSTR cp,INT nSize) +{ + INT i = 0; // character counter + + _ASSERT(nSize > 0); // target buffer size + + if (nIntLen > 1) // has sign nibble + { + --nIntLen; // remove sign from digit length + + // check for valid sign + _ASSERT(pbyNum[nIntLen] == 0 || pbyNum[nIntLen] == 9); + if (pbyNum[nIntLen] == 9) // negative number + { + *cp++ = _T('-'); // add sign + --nSize; // dec dest buffer size + ++i; // wrote one character + } + } + + if (nIntLen >= nSize) return 0; // dest buffer overflow + i += nIntLen; // adjust character counter + + while (nIntLen-- > 0) // write all digits + { + // check for valid digit + _ASSERT(pbyNum[nIntLen] >= 0 && pbyNum[nIntLen] <= 9); + *cp++ = _T('0') + pbyNum[nIntLen]; // and write + } + *cp = 0; // set EOS + return i; +} + +static INT RPL_SetZInt(LPCTSTR cp,LPBYTE pbyNum,INT nSize) +{ + BYTE bySign; + INT nStrLen,nNumSize; + + _ASSERT(nSize > 0); // target buffer size + + nStrLen = lstrlen(cp); // source string length + + if ( nStrLen == 0 // empty string + // precisition integer contain only these numbers + || _tcsspn(cp,_T("0123456789+-")) != (SIZE_T) nStrLen) + return 0; + + bySign = (*cp != _T('-')) ? 0 : 9; // set sign nibble + if (*cp == _T('-') || *cp == _T('+')) // skip sign character + { + ++cp; + --nStrLen; + } + + if (nStrLen == 1 && *cp == _T('0')) // special code for zero + { + *pbyNum = 0; // zero data + return 1; // finish + } + + // nStrLen = no. of digits without sign + if (nStrLen >= nSize) // destination buffer too small + return 0; + + nNumSize = nStrLen + 1; // no. of written data + + while (--nStrLen >= 0) // eval all digits + { + TCHAR c = cp[nStrLen]; + + // only '0' .. '9' are valid here + if (!((c >= _T('0')) || (c <= _T('9')))) + return 0; + + c -= _T('0'); + *pbyNum++ = (BYTE) c; + } + *pbyNum = bySign; // add sign + + return nNumSize; +} + +static INT RPL_GetBcd(BYTE CONST *pbyNum,INT nMantLen,INT nExpLen,CONST TCHAR cDec,LPTSTR cp,INT nSize) +{ + BYTE byNib; + LONG v,lExp; + BOOL bPflag,bExpflag; + INT i; + + lExp = 0; + for (v = 1; nExpLen--; v *= 10) // fetch exponent + { + lExp += (LONG) *pbyNum++ * v; // calc. exponent + } + + if (lExp > v / 2) lExp -= v; // negative exponent + + lExp -= nMantLen - 1; // set decimal point to end of mantissa + + i = 0; // first character + bPflag = FALSE; // show no decimal point + + // scan mantissa + for (v = (LONG) nMantLen - 1; v >= 0 || bPflag; v--) + { + if (v >= 0L) // still mantissa digits left + byNib = *pbyNum++; + else + byNib = 0; // zero for negativ exponent + + if (!i) // still delete zeros at end + { + if (byNib == 0 && lExp && v > 0) // delete zeros + { + lExp++; // adjust exponent + continue; + } + + // TRUE at x.E + bExpflag = v + lExp > 14 || v + lExp < -nMantLen; + bPflag = !bExpflag && v < -lExp; // decimal point flag at neg. exponent + } + + // set decimal point + if ((bExpflag && v == 0) || (!lExp && i)) + { + if (i >= nSize) return 0; // dest buffer overflow + cp[i++] = cDec; // write decimal point + if (v < 0) // no mantissa digits any more + { + if (i >= nSize) return 0; // dest buffer overflow + cp[i++] = _T('0'); // write heading zero + } + bPflag = FALSE; // finished with negativ exponents + } + + if (v >= 0 || bPflag) + { + if (i >= nSize) return 0; // dest buffer overflow + cp[i++] = (TCHAR) byNib + _T('0'); // write character + } + + lExp++; // next position + } + + if (*pbyNum == 9) // negative number + { + if (i >= nSize) return 0; // dest buffer overflow + cp[i++] = _T('-'); // write sign + } + + if (i >= nSize) return 0; // dest buffer overflow + cp[i] = 0; // set EOS + + for (v = 0; v < (i / 2); v++) // reverse string + { + TCHAR cNib = cp[v]; // swap chars + cp[v] = cp[i-v-1]; + cp[i-v-1] = cNib; + } + + // write number with exponent + if (bExpflag) + { + if (i + 5 >= nSize) return 0; // dest buffer overflow + i += wsprintf(&cp[i],_T("E%d"),lExp-1); + } + return i; +} + +static INT RPL_SetBcd(LPCTSTR cp,INT nMantLen,INT nExpLen,CONST TCHAR cDec,LPBYTE pbyNum,INT nSize) +{ + TCHAR cVc[] = _T(".0123456789eE+-"); + + BYTE byNum[80]; + INT i,nIp,nDp,nMaxExp; + LONG lExp; + + cVc[0] = cDec; // replace decimal char + + if ( nMantLen + nExpLen >= nSize // destination buffer too small + || !*cp // empty string + || _tcsspn(cp,cVc) != (SIZE_T) lstrlen(cp) // real contain only these numbers + || lstrlen(cp) >= ARRAYSIZEOF(byNum)) // ignore too long reals + return 0; + + byNum[0] = (*cp != _T('-')) ? 0 : 9; // set sign nibble + if (*cp == _T('-') || *cp == _T('+')) // skip sign character + cp++; + + // only '.', '0' .. '9' are valid here + if (!((*cp == cDec) || (*cp >= _T('0')) || (*cp <= _T('9')))) + return 0; + + nIp = 0; // length of integer part + if (*cp != cDec) // no decimal point + { + // count integer part + while (*cp >= _T('0') && *cp <= _T('9')) + byNum[++nIp] = *cp++ - _T('0'); + if (!nIp) return 0; + } + + // only '.', 'E', 'e' or end are valid here + if (!(!*cp || (*cp == cDec) || (*cp == _T('E')) || (*cp == _T('e')))) + return 0; + + nDp = 0; // length of decimal part + if (*cp == cDec) // decimal point + { + cp++; // skip '.' + + // count decimal part + while (*cp >= _T('0') && *cp <= _T('9')) + byNum[nIp + ++nDp] = *cp++ - _T('0'); + } + + // count number of heading zeros in mantissa + for (i = 0; byNum[i+1] == 0 && i + 1 < nIp + nDp; ++i) { } + + if (i > 0) // have to normalize + { + INT j; + + nIp -= i; // for later ajust of exponent + for (j = 1; j <= nIp + nDp; ++j) // normalize mantissa + byNum[j] = byNum[j + i]; + } + + if(byNum[1] == 0) // number is 0 + { + ZeroMemory(pbyNum,nMantLen + nExpLen + 1); + return nMantLen + nExpLen + 1; + } + + for (i = nIp + nDp; i < nMantLen;) // fill rest of mantissa with 0 + byNum[++i] = 0; + + // must be 'E', 'e' or end + if (!(!*cp || (*cp == _T('E')) || (*cp == _T('e')))) + return 0; + + lExp = 0; + if (*cp == _T('E') || *cp == _T('e')) + { + cp++; // skip 'E' + + i = FALSE; // positive exponent + if (*cp == _T('-') || *cp == _T('+')) + { + i = (*cp++ == _T('-')); // adjust exponent sign + } + + // exponent symbol must be followed by number + if (*cp < _T('0') || *cp > _T('9')) return 0; + + while (*cp >= _T('0') && *cp <= _T('9')) + lExp = lExp * 10 + *cp++ - _T('0'); + + if(i) lExp = -lExp; + } + + if (*cp != 0) return 0; + + // adjust exponent value with exponent from normalized mantissa + lExp += nIp - 1; + + // calculate max. posive exponent + for (nMaxExp = 5, i = 1; i < nExpLen; ++i) + nMaxExp *= 10; + + // check range of exponent + if ((lExp < 0 && -lExp >= nMaxExp) || (lExp >= nMaxExp)) + return 0; + + if (lExp < 0) lExp += 2 * nMaxExp; // adjust negative offset + + for (i = nExpLen; i > 0; --i) // convert number into digits + { + byNum[nMantLen + i] = lExp % 10; + lExp /= 10; + } + + // copy to target in reversed order + for (i = nMantLen + nExpLen; i >= 0; --i) + *pbyNum++ = byNum[i]; + + return nMantLen + nExpLen + 1; +} + +//################ +//# +//# Object subroutines +//# +//################ + +#if 0 +static INT IsRealNumber(LPCTSTR cp,INT nMantLen,INT nExpLen,CONST TCHAR cDec,LPBYTE pbyNum,INT nSize) +{ + LPTSTR lpszNumber; + INT nLength = 0; + + if ((lpszNumber = DuplicateString(cp)) != NULL) + { + LPTSTR p = lpszNumber; + INT i; + + // cut heading whitespaces + for (; *p == _T(' ') || *p == _T('\t'); ++p) { } + + // cut tailing whitespaces + for (i = lstrlen(p); --i >= 0;) + { + if (p[i] != _T(' ') && p[i] != _T('\t')) + break; + } + p[++i] = 0; // new EOS + + nLength = RPL_SetBcd(p,nMantLen,nExpLen,cDec,pbyNum,nSize); + HeapFree(hHeap,0,lpszNumber); + } + return nLength; +} +#endif + +static TCHAR GetRadix(VOID) +{ + // get locale decimal point + // GetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_SDECIMAL,&cDecimal,1); + + return RPL_GetSystemFlag(fnRadix) ? _T(',') : _T('.'); +} + +static INT DoInt(DWORD dwAddress,LPTSTR cp,INT nSize) +{ + LPBYTE lpbyData; + INT nLength,nIntLen; + + nIntLen = Read5(dwAddress) - 5; // no. of digits + if (nIntLen <= 0) return 0; // error in calculator object + + nLength = 0; + if ((lpbyData = HeapAlloc(hHeap,0,nIntLen))) + { + // get precisition integer object content and decode it + Npeek(lpbyData,dwAddress+5,nIntLen); + nLength = RPL_GetZInt(lpbyData,nIntLen,cp,nSize); + HeapFree(hHeap,0,lpbyData); + } + return nLength; +} + +static INT DoReal(DWORD dwAddress,LPTSTR cp,INT nSize) +{ + BYTE byNumber[16]; + + // get real object content and decode it + Npeek(byNumber,dwAddress,ARRAYSIZEOF(byNumber)); + return RPL_GetBcd(byNumber,12,3,GetRadix(),cp,nSize); +} + + +//################ +//# +//# Stack routines +//# +//################ + +// +// ID_STACK_COPY +// +LRESULT OnStackCopy(VOID) // copy data from stack +{ + TCHAR cBuffer[128]; + HANDLE hClipObj; + LPBYTE lpbyData; + DWORD dwAddress,dwObject,dwSize; + UINT uClipboardFormat; + + _ASSERT(nState == SM_RUN); // emulator must be in RUN state + if (WaitForSleepState()) // wait for cpu SHUTDN then sleep state + { + InfoMessage(_T("The emulator is busy.")); + return 0; + } + + _ASSERT(nState == SM_SLEEP); + + if ((dwAddress = RPL_Pick(1)) == 0) // pick address of level1 object + { + MessageBeep(MB_OK); // error beep + goto error; + } + + switch (dwObject = Read5(dwAddress)) // select object + { + case DOINT: // Precision Integer (HP49G) + case DOREAL: // real object + dwAddress += 5; // object content + + switch (dwObject) + { + case DOINT: // Precision Integer (HP49G) + // get precision integer object content and decode it + dwSize = DoInt(dwAddress,cBuffer,ARRAYSIZEOF(cBuffer)); + break; + case DOREAL: // real object + // get real object content and decode it + dwSize = DoReal(dwAddress,cBuffer,ARRAYSIZEOF(cBuffer)); + break; + } + + // calculate buffer size + dwSize = (dwSize + 1) * sizeof(*cBuffer); + + // memory allocation for clipboard data + if ((hClipObj = GlobalAlloc(GMEM_MOVEABLE,dwSize)) == NULL) + goto error; + + if ((lpbyData = GlobalLock(hClipObj))) + { + // copy data to memory + CopyMemory(lpbyData,cBuffer,dwSize); + GlobalUnlock(hClipObj); // unlock memory + } + + #if defined _UNICODE + uClipboardFormat = CF_UNICODETEXT; + #else + uClipboardFormat = CF_TEXT; + #endif + break; + case DOCSTR: // string + dwAddress += 5; // address of string length + dwSize = (Read5(dwAddress) - 5) / 2; // length of string + + // memory allocation for clipboard data + if ((hClipObj = GlobalAlloc(GMEM_MOVEABLE,dwSize + 1)) == NULL) + goto error; + + if ((lpbyData = GlobalLock(hClipObj))) // lock memory + { + // copy data into clipboard buffer + for (dwAddress += 5;dwSize-- > 0;dwAddress += 2,++lpbyData) + *lpbyData = Read2(dwAddress); + *lpbyData = 0; // set EOS + + GlobalUnlock(hClipObj); // unlock memory + uClipboardFormat = CF_TEXT; // always text + } + break; + default: + MessageBeep(MB_OK); // error beep + goto error; + } + + if (OpenClipboard(hWnd)) + { + if (EmptyClipboard()) + SetClipboardData(uClipboardFormat,hClipObj); + else + GlobalFree(hClipObj); + CloseClipboard(); + } + else // clipboard open failed + { + GlobalFree(hClipObj); + } + +error: + SwitchToState(SM_RUN); + return 0; +} + +// +// ID_STACK_PASTE +// +LRESULT OnStackPaste(VOID) // paste data to stack +{ + #if defined _UNICODE + #define CF_TEXTFORMAT CF_UNICODETEXT + #else + #define CF_TEXTFORMAT CF_TEXT + #endif + + HANDLE hClipObj; + + BOOL bSuccess = FALSE; + + // check if clipboard format is available + if (!IsClipboardFormatAvailable(CF_TEXTFORMAT)) + { + MessageBeep(MB_OK); // error beep + return 0; + } + + SuspendDebugger(); // suspend debugger + bDbgAutoStateCtrl = FALSE; // disable automatic debugger state control + + // calculator off, turn on + if (!(Chipset.IORam[BITOFFSET]&DON)) + { + KeyboardEvent(TRUE,0,0x8000); + KeyboardEvent(FALSE,0,0x8000); + + // wait for sleep mode + while(Chipset.Shutdn == FALSE) Sleep(0); + } + + _ASSERT(nState == SM_RUN); // emulator must be in RUN state + if (WaitForSleepState()) // wait for cpu SHUTDN then sleep state + { + InfoMessage(_T("The emulator is busy.")); + goto cancel; + } + + _ASSERT(nState == SM_SLEEP); + + if (OpenClipboard(hWnd)) + { + if ((hClipObj = GetClipboardData(CF_TEXTFORMAT))) + { + LPCTSTR lpstrClipdata; + LPBYTE lpbyData; + + if ((lpstrClipdata = GlobalLock(hClipObj))) + { + BYTE byNumber[128]; + DWORD dwAddress; + INT s; + + do + { + // HP49G in exact mode + if (cCurrentRomType == 'X' && !RPL_GetSystemFlag(fnApprox)) + { + // try to convert string to HP49 precision integer + s = RPL_SetZInt(lpstrClipdata,byNumber,sizeof(byNumber)); + + if (s > 0) // is a real number for exact mode + { + // get TEMPOB memory for HP49 precision integer object + dwAddress = RPL_CreateTemp(s+5+5); + if ((bSuccess = (dwAddress > 0))) + { + Write5(dwAddress,DOINT); // prolog + Write5(dwAddress+5,s+5); // size + Nwrite(byNumber,dwAddress+10,s); // data + + // push object to stack + RPL_Push(dwAddress); + } + break; + } + } + + // try to convert string to real format + s = RPL_SetBcd(lpstrClipdata,12,3,GetRadix(),byNumber,sizeof(byNumber)); + + if (s > 0) // is a real number + { + // get TEMPOB memory for real object + dwAddress = RPL_CreateTemp(16+5); + if ((bSuccess = (dwAddress > 0))) + { + Write5(dwAddress,DOREAL); // prolog + Nwrite(byNumber,dwAddress+5,s); // data + + // push object to stack + RPL_Push(dwAddress); + } + break; + } + + // any other format + { + DWORD dwSize = lstrlen(lpstrClipdata); + if ((lpbyData = HeapAlloc(hHeap,0,dwSize * 2))) + { + #if defined _UNICODE + // copy data UNICODE -> ASCII + WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, + lpstrClipdata, dwSize, + lpbyData+dwSize, dwSize, NULL, NULL); + #else + // copy data + memcpy(lpbyData+dwSize,lpstrClipdata,dwSize); + #endif + bSuccess = (WriteStack(lpbyData,dwSize) == S_ERR_NO); + HeapFree(hHeap,0,lpbyData); + } + } + } + while(FALSE); + + GlobalUnlock(hClipObj); + } + } + CloseClipboard(); + } + + SwitchToState(SM_RUN); // run state + while (nState!=nNextState) Sleep(0); + _ASSERT(nState == SM_RUN); + + if (bSuccess == FALSE) // data not copied + goto cancel; + + KeyboardEvent(TRUE,0,0x8000); + KeyboardEvent(FALSE,0,0x8000); + + // wait for sleep mode + while(Chipset.Shutdn == FALSE) Sleep(0); + +cancel: + bDbgAutoStateCtrl = TRUE; // enable automatic debugger state control + ResumeDebugger(); + return 0; + #undef CF_TEXTFORMAT +} diff --git a/Sources/Emu48/TIMER.C b/Sources/Emu48/TIMER.C index d357893..0c04bad 100644 --- a/Sources/Emu48/TIMER.C +++ b/Sources/Emu48/TIMER.C @@ -108,9 +108,8 @@ static VOID CheckT1(BYTE nT1) _ASSERT((nT1&8) != 0); // timer1 MSB set - // timer MSB is one and either INT or WAKE is set - if ( (Chipset.IORam[TIMER1_CTRL]&WKE) - || (Chipset.IORam[TIMER1_CTRL]&INTR)) + // timer MSB and INT or WAKE bit is set + if ((Chipset.IORam[TIMER1_CTRL]&(WKE|INTR)) != 0) Chipset.IORam[TIMER1_CTRL] |= SRQ; // set SRQ // cpu not sleeping and T1 -> Interrupt if ( (!Chipset.Shutdn || (Chipset.IORam[TIMER1_CTRL]&WKE)) @@ -143,9 +142,8 @@ static VOID CheckT2(DWORD dwT2) _ASSERT((dwT2&0x80000000) != 0); // timer2 MSB set - // timer MSB is one and either INT or WAKE is set - if ( (Chipset.IORam[TIMER2_CTRL]&WKE) - || (Chipset.IORam[TIMER2_CTRL]&INTR)) + // timer MSB and INT or WAKE bit is set + if ((Chipset.IORam[TIMER2_CTRL]&(WKE|INTR)) != 0) Chipset.IORam[TIMER2_CTRL] |= SRQ; // set SRQ // cpu not sleeping and T2 -> Interrupt if ( (!Chipset.Shutdn || (Chipset.IORam[TIMER2_CTRL]&WKE)) @@ -185,7 +183,7 @@ static VOID RescheduleT2(BOOL bRefPoint) uDelay = __max(tc.wPeriodMin,uDelay); // wait minimum delay of timer _ASSERT(uDelay <= tc.wPeriodMax); // inside maximum event delay // start timer2; schedule event, when Chipset.t2 will be zero - VERIFY(uT2TimerId = timeSetEvent(uDelay,0,(LPTIMECALLBACK)&TimeProc,2,TIME_ONESHOT)); + VERIFY(uT2TimerId = timeSetEvent(uDelay,0,&TimeProc,2,TIME_ONESHOT)); return; } @@ -323,7 +321,7 @@ VOID StartTimers(VOID) // set timer resolution to greatest possible one bAccurateTimer = (timeBeginPeriod(tc.wPeriodMin) == TIMERR_NOERROR); // set timer1 with given period - VERIFY(uT1TimerId = timeSetEvent(T1_FREQ,0,(LPTIMECALLBACK)&TimeProc,1,TIME_PERIODIC)); + VERIFY(uT1TimerId = timeSetEvent(T1_FREQ,0,&TimeProc,1,TIME_PERIODIC)); RescheduleT2(TRUE); // start timer2 } return; @@ -398,20 +396,32 @@ BYTE ReadT1(VOID) VOID SetT1(BYTE byValue) { + BOOL bEqual; + _ASSERT(byValue < 0x10); // timer1 is only a 4bit counter - if (Chipset.t1 == byValue) // same value doesn't restart timer period - return; + EnterCriticalSection(&csT1Lock); + { + bEqual = (Chipset.t1 == byValue); // check for same value + } + LeaveCriticalSection(&csT1Lock); + if (bEqual) return; // same value doesn't restart timer period - timeKillEvent(uT1TimerId); // stop timer1 - uT1TimerId = 0; // set flag timer1 stopped + if (uT1TimerId != 0) // timer1 running + { + timeKillEvent(uT1TimerId); // stop timer1 + uT1TimerId = 0; // set flag timer1 stopped + } EnterCriticalSection(&csT1Lock); { Chipset.t1 = byValue; // set new timer1 value CheckT1(Chipset.t1); // test timer1 control bits } LeaveCriticalSection(&csT1Lock); - // restart timer1 to get full period of frequency - VERIFY(uT1TimerId = timeSetEvent(T1_FREQ,0,(LPTIMECALLBACK)&TimeProc,1,TIME_PERIODIC)); + if (bStarted) // timer running + { + // restart timer1 to get full period of frequency + VERIFY(uT1TimerId = timeSetEvent(T1_FREQ,0,&TimeProc,1,TIME_PERIODIC)); + } return; } diff --git a/Sources/GCCPatch/EMU48GCC.RC b/Sources/GCCPatch/EMU48GCC.RC index 9c5c1f4..33f09c8 100644 --- a/Sources/GCCPatch/EMU48GCC.RC +++ b/Sources/GCCPatch/EMU48GCC.RC @@ -74,7 +74,7 @@ BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 160 TOPMARGIN, 4 - BOTTOMMARGIN, 210 + BOTTOMMARGIN, 256 END IDD_CHOOSEKML, DIALOG @@ -232,15 +232,15 @@ BEGIN ES_READONLY END -IDD_SETTINGS DIALOG DISCARDABLE 0, 0, 167, 229 +IDD_SETTINGS DIALOG DISCARDABLE 0, 0, 167, 263 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Settings" FONT 8, "MS Sans Serif" BEGIN CONTROL "Authentic Calculator Speed",IDC_REALSPEED,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,13,13,100,10 - CONTROL "Enable Virtual LCD Delay",IDC_GRAYSCALE, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,25,100,10 + CONTROL "Enable Virtual LCD Delay",IDC_GRAYSCALE,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,13,25,100,10 CONTROL "Automatically Save Files",IDC_AUTOSAVE,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,13,37,89,10 CONTROL "Automatically Save Files On Exit",IDC_AUTOSAVEONEXIT, @@ -255,25 +255,35 @@ BEGIN CONTROL "Class Mnemonics",IDC_DISASM_CLASS,"Button", BS_AUTORADIOBUTTON,84,101,70,11 GROUPBOX "Disassembler",IDC_STATIC,7,90,153,28 + LTEXT "Volume",IDC_STATIC,13,134,24,8 + CONTROL "Slider1",IDC_SOUND_SLIDER,"msctls_trackbar32", + TBS_AUTOTICKS | WS_TABSTOP,39,129,68,18 + CONTROL "Speaker",IDC_SOUND_SPEAKER,"Button",BS_AUTORADIOBUTTON | + WS_GROUP | WS_TABSTOP,111,128,43,10 + CONTROL "Wave",IDC_SOUND_WAVE,"Button",BS_AUTORADIOBUTTON,111, + 139,43,10 + GROUPBOX "Sound",IDC_STATIC,7,120,153,34 CONTROL "Port 1 is Plugged",IDC_PORT1EN,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,13,131,67,10 + WS_TABSTOP,13,165,67,10 CONTROL "Port 1 is Writeable",IDC_PORT1WR,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,84,131,69,10 + BS_AUTOCHECKBOX | WS_TABSTOP,84,165,69,10 CONTROL "Port 2 is Shared",IDC_PORT2ISSHARED,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,13,143,65,10 - LTEXT "Port 2 File :",IDC_STATIC,13,159,37,8 - EDITTEXT IDC_PORT2,51,156,94,12,ES_AUTOHSCROLL - PUSHBUTTON "...",IDC_PORT2LOAD,145,156,10,12 - GROUPBOX "Memory Cards",IDC_STATIC,7,122,153,51 - LTEXT "Wire:",IDC_STATIC,13,188,17,8 - COMBOBOX IDC_WIRE,31,186,48,42,CBS_DROPDOWNLIST | WS_VSCROLL | + BS_AUTOCHECKBOX | WS_TABSTOP,13,177,65,10 + CONTROL "Port 2 is Writeable",IDC_PORT2WR,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,84,177,69,10 + LTEXT "Port 2 File :",IDC_STATIC,13,192,37,8 + EDITTEXT IDC_PORT2,51,190,94,12,ES_AUTOHSCROLL + PUSHBUTTON "...",IDC_PORT2LOAD,145,190,10,12 + GROUPBOX "Memory Cards",IDC_STATIC,7,156,153,51 + LTEXT "Wire:",IDC_STATIC,13,221,17,8 + COMBOBOX IDC_WIRE,31,219,48,42,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "IR:",IDC_STATIC,89,188,9,8 - COMBOBOX IDC_IR,107,186,48,43,CBS_DROPDOWNLIST | WS_VSCROLL | + LTEXT "IR:",IDC_STATIC,89,221,9,8 + COMBOBOX IDC_IR,107,219,48,43,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - GROUPBOX "Serial Ports",IDC_STATIC,7,176,153,27 - DEFPUSHBUTTON "&Ok",IDOK,9,208,50,14 - PUSHBUTTON "&Cancel",IDCANCEL,107,208,50,14 + GROUPBOX "Serial Ports",IDC_STATIC,7,209,153,27 + DEFPUSHBUTTON "&Ok",IDOK,9,242,50,14 + PUSHBUTTON "&Cancel",IDCANCEL,107,242,50,14 END IDD_CHOOSEKML DIALOG DISCARDABLE 0, 0, 195, 66 @@ -566,8 +576,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,3,7,0 - PRODUCTVERSION 1,3,7,0 + FILEVERSION 1,4,0,0 + PRODUCTVERSION 1,4,0,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -584,12 +594,12 @@ BEGIN BEGIN VALUE "CompanyName", "Sebastien Carlier & Christoph Gießelink\0" VALUE "FileDescription", "HP38/39/40/48/49 Emulator\0" - VALUE "FileVersion", "1, 3, 7, 0\0" + VALUE "FileVersion", "1, 4, 0, 0\0" VALUE "InternalName", "Emu48\0" VALUE "LegalCopyright", "Copyright © 2005\0" VALUE "OriginalFilename", "Emu48.exe\0" VALUE "ProductName", "Emu48\0" - VALUE "ProductVersion", "1, 3, 7, 0\0" + VALUE "ProductVersion", "1, 4, 0, 0\0" END END BLOCK "VarFileInfo" @@ -634,9 +644,9 @@ BEGIN MENUITEM "&Load Object...", ID_OBJECT_LOAD MENUITEM "&Save Object...", ID_OBJECT_SAVE MENUITEM SEPARATOR - MENUITEM "&Copy String", ID_STACK_COPY MENUITEM "C&opy Screen", ID_VIEW_COPY - MENUITEM "&Paste String", ID_STACK_PASTE + MENUITEM "&Copy Stack", ID_STACK_COPY + MENUITEM "&Paste Stack", ID_STACK_PASTE MENUITEM SEPARATOR MENUITEM "&Reset Calculator", ID_VIEW_RESET, GRAYED POPUP "&Backup" @@ -783,6 +793,18 @@ END #endif // APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Accelerator +// + +IDR_MENU ACCELERATORS DISCARDABLE +BEGIN + "C", ID_STACK_COPY, VIRTKEY, CONTROL, NOINVERT + "V", ID_STACK_PASTE, VIRTKEY, CONTROL, NOINVERT +END + + ///////////////////////////////////////////////////////////////////////////// // // String Table diff --git a/Sources/GCCPatch/Makefile b/Sources/GCCPatch/Makefile index fa073c3..6f5fdbc 100644 --- a/Sources/GCCPatch/Makefile +++ b/Sources/GCCPatch/Makefile @@ -24,7 +24,8 @@ RSRCOBJ=$(PRJ).o OBJS=cursor.o disasm.o display.o debugger.o ddeserv.o \ emu48.o engine.o external.o fetch.o files.o i28f160.o keyboard.o \ - keymacro.o kml.o mops.o opcodes.o rpl.o serial.o settings.o timer.o \ + keymacro.o kml.o mops.o opcodes.o rpl.o serial.o settings.o stack.o \ + timer.o \ $(RSRCOBJ) LIBS=-lwinmm -lcomctl32 @@ -111,6 +112,9 @@ serial.o: serial.c pch.h emu48.h types.h io.h settings.o: settings.c pch.h emu48.h types.h i28f160.h $(CC) $(CFLAGS) $(DEFINES) -c -o settings.o settings.c +stack.o: stack.c pch.h resource.h Emu48.h io.h + $(CC) $(CFLAGS) $(DEFINES) -c -o stack.o stack.c + timer.o: timer.c pch.h emu48.h types.h io.h $(CC) $(CFLAGS) $(DEFINES) -c -o timer.o timer.c diff --git a/Sources/GCCPatch/PCH.H b/Sources/GCCPatch/PCH.H index 698e95b..7a94210 100644 --- a/Sources/GCCPatch/PCH.H +++ b/Sources/GCCPatch/PCH.H @@ -13,6 +13,7 @@ #include #include #include +#include // #include // missing file #if !defined VERIFY diff --git a/Sources/GCCPatch/README.TXT b/Sources/GCCPatch/README.TXT index d2c7582..4b2ea1b 100644 --- a/Sources/GCCPatch/README.TXT +++ b/Sources/GCCPatch/README.TXT @@ -29,7 +29,7 @@ or MinGW-3.1.0-1.exe w32api-3.3.tar.gz mingw-runtime-3.8.tar.gz -binutils-2.15.94-20050118-1.tar.gz +binutils-2.16.91-20050827-1.tar.gz gcc-core-3.4.4-20050522-1.tar.gz Older versions of the MinGW package might not work, because there are several @@ -43,4 +43,4 @@ Many thanks to Pedro A. Arranda Guti compatible. -08/22/05 (c) by Christoph Gießelink +12/05/05 (c) by Christoph Gießelink diff --git a/uninst.exe b/uninst.exe index 62ef141682f94084db1abbe1e7d7fd0fbe717ea6..238d4246c668095d6708aa9fe444de85cd8a7923 100755 GIT binary patch delta 14849 zcmeHtdstJ)*7x2?fPi445=8_I2#SJ;2C4{1K!TTo1|o?!)Ow96Rm8;FRvK)eC5Cw0 z*jnqcrD$u9wzkE#)+*qof~|dP)hb?U(Ndi>sHliok^TN=qdn*O{{8;@o-fa{vS((m zS+i!{X3flgyir`WNxU(MJ-sP8-I_IdcV%?=<7Y4;{I$nbLOtSf5}sk%kPuSB-!6s)>=YJy=hMnTeK5EW=0`=Ikhx z-#q>foV_Ve5 z*fqXRO|zD_NO{FZJI-!JgG=&+2ewNOz0OJrc5f&7R>kY4!|hqM{rqE7KiE zm)6lP&NTs2XBz8}wI30geN1c)*~Rm`L&nYY9Ha2GO_8eIHyu-?#n-I1ldOG;)P1pf zr)N)AbSi_}?=^+ha$@ONb{jWNYOucN&oF$rGjXVz(P>HCScY-^<%cGZ=)^Q8A+JML zav4<}uV64O*Uu;?9xLjl{+7|EF-Mwwq8hTvN09eKbgt;)d6ypa63?24wjY(6WtGy6 zYNl%cX7p5{y^@yf3i@9~-?&2jCxNz>)Ffco-oVh2nF@xnb+A^ks!pxt73Bp$>*xc9 zEFHW;LV5TLH4{rl0@0Cm#V&C+K{l>)T%NbmT0=48w$K*6YYHk3zgWz}5idp0#2?LG zIobSqhvtgIFCEQ^Kgvqh0!fQT*J?_(m0Y3nury)lG7Mc>Co7$c7cP%p!rL0Wb#xfW zaW%t?8R%#=XC&S?r#%AeZ;1z4Q zP@f?)YSS48mDO~9S9*i^16O$uDuA&VLQ7tsfI*94ucp%^5-q0R?HVZw5tx(K#BPNg zH642L3aCIbzwX(J<07Z2u5la7&3dA{&4liPzia>vXUnJHzrVr(63xwdzI#omcCflIbf*W2@&`of#Lvt!oBV9FQOn`Y1 z?fIn@)Dn-Gd)n%vVf&}ZarmLzyI#`?$79L{(veFqLZW&DM37HK@FSHkPeusCNVD}u zI*?8ayE6)d$Vxu}hHDVmGuniBG)7M+ng zje%@S16M+sY(SB>v>K^GNd+o~?)H~a#9WSah_&7CHYS1|k;qEY;ph|1Swr-uzg@1! zs8~*!u9JZ0@VZDUl9euzgQ5qaE;0K*#hJ7S%)iL(c>12YpiW19%F;}7xhK96)_Itb z;AEepkoZ{Uq^4oxyDWW7E-8wWmh75yWg%v7h*(xK3Ej0s3Dy!HLx~--ve9Ts?08+| z=x}JxiR)oDoiH0mkrZ<*3B=1HnV#HHTNy^&@rs8%PwIHQmZ#PS3G{@u290(-z|*88 zGw8S@9j!!*0#$t{Bvo2xnd{IryRHC7#ZNF0RX0FOhrOs1 zAz}wF#&ox#n~q$UG0)Q}wUUcqC?T)aB28>vBYpj2chAJul~RX>xQc+d>K%us#kG=h z!;*c#G+|ccBNQABz_E4szWfp&UOJxpt7oA#<=OlGC}<5}*SAp3*pBH}nxio8tcn+{JRFQL?~X=PyqmL4?hrNDXd0&ODNASE$EgVa{km>X(hE$JkLcBWEN zpy0@AJ@QCo4sqt5%E^ZHOF=`62qcGK9ySiBQ`PhBe*0*g_tyT)atCWX-#v=B$w?&{^8Ix2v41k zjG>(oGSxuP>Wqc(IN;M+P*278qkN;95rUorD}J}l%1tfg!~>pR=fzt{J2b_u z?A^~=01j;(p)%(-5Ok>_Ngeqc!#G;?CO3(W1&7^{UW}NRcnnqphX)oyhB?C#FGqK` zmq|ue!}3fEsoKvciy$+z+o?I#owNA^Cn2wC4UFrQfh<7~cKaseoicl2Ewcg@x`%_) zi0SGJCLq06sgy|#>`)ld+{e+#uk<&NX!PY*2Drwz^E|wNplcH(=G5#q-KHTe9le}c zrxD4rwWMe=!cGY7-cdI2>7pqs`5G}+`^;_V%igDCB_Gm8C=tedj;JSdwSD>x4Mle> zcLN+)q6@I-RU)hkWnTl?g0elYlUl4#C&%{*^WF}&4bVabH_Shky}{-CKW8<>2->sw z!#5(SlzN!j-6GRX^7egLIj;yno67-7B7ENg2Q)c3P5z`M5lCI3g`Y4Na)y>P@D>q?9R;l&Q^q zPe(q$n2rupFME-cRM0XO{0@U%v%OyPfe6|lcgJ9uve{!;auX$CEjM)-%4Wy1*$jyTa@OWq&J zFbA;eT3zp>1MksB7g{@ts&*BRSlUBJZh&1!Zj+-GA<^5^i=3zRj)c4x)WS#ut;IK* zej>FfX>~L($5MG-#Z*mfy+#^3<#mR9h?hdld6yP`qw?Lrjp!E=qHp7Q(6U6q)~Ly2 znESGlZCFbXDs|k8{rXQ#phIM}*sh6?uUMK$D;eil?3|1-{nR_6P#HMP30z$XaNQPWFxha~(YV0KTYoO=zXEX*Tyl zkc|i0hcvCiKEmw>HKd|JOFjiDN_ZtYIJ2a>?C$(ZPdw-tydsIJBE2sNK^%GK$Q>|% z?Fh}|%C~Se{e##O+~xi=Jauu9VHh_yaFliJ9iFEoufhT`WgQel*+!xf2qe%<2TcSK zS@|JgxbpBv(f8r0Cl6Hu%0xQszv!ER<^X5uY~-|9W-oQW%*0E$OvA{) zbm-*Vfg#dKXh4UTxn2YMTRAi%29m-N)YbH6KViS1CpSUPtu!(_)4Jm;IZx@6-{I|A zq5Kq2f@IPpGQyvb$d)3E3W+R&=Z9#j%!kE0;_2FrXapz6ehOA)eoaSYG{jrZAqP5# zpaLBsTAio%X}6p<$Dyu=Ni>l?Fa~#kqo*T7Vml$t7T04pk<~z+fLpPpVN3|s?P;tU zTBCmD+;qG&sz5n{6lgs0Mphv)LDx z-~-v%HBD|gZ)tI61Yn;E%;G8DEX{$kn(V%BVx^LmY(ZC$Cf5i;P8ljXavDZr>rl#U z;m`+=%!8}ErMid?Z5KhQzHkG2|^6tCrjt!5s{V@ykY~wB6BBEspL3y}X= z+U%B&8fGtiiEbA3SmxvB!8O(%BXB=nu@y)rF?FJ1JsA~6W3P?p?a4tK)r`gGK*J_D zyaSf0CtHVNbb1z0fi9(WRo(%2Q{lg|^+UNQ$_VRB#4Wl&Z3Yjjx&#mEe-^7L$f;>G z2CPWMe76h(^{mE+M-a7mS?M;6xwh!aotjUt%1WI=g-lwu(kv@27AnmvmoGM3US3<& zG{usiZ&`-WpLjyHp#=23v!o6r>Z!=GrBb_s4rR4?q9U=Z;58l2g3iRQRpT68?y+bS zS>h5joo1<)?1rS>L%Ic%cx+X$aW7_P+!X~0Fs9|*a^V%NkT??T#CSTtqFx4pd*0GU zwxhdU)5a##k)s}#w#zo$fWz5}IvKOKm8T+aLtk4m<%f}#T){MKMIDTJ7#~l&kQbo< zr>4V%T|^9uR9XjsAQDz7sRjoeFj5VEDzE}RGyh@JohpP#TV0TroTZUCs}X}g z{Ka-nQWb=mM;*a7L~n4WOPfu6m7Maw3{Km*=^SPbEwMrCa0RD*i4jhtrC zXtuDr2>;gXY+bHib<1GS50`h#oQ7kVOh;6F5~jAcz747ro5O<=AIR44M46AL1C#S8 z=H~JO5+6^e(Y-d=1&!E;Q(0D0hQ4Fe3=`!+J0%{oiX4qK4Y8?k05TsGtW>;#D6qj4 z!5%*yW7>mf<3C}z5gIZtNEptf!$@Z(fJ1XwCDnIsln3Q8Dm`2&_Mlu=37QiPhvlfA zT2B3{p_L0kfNsSeo{ngSfVF}Z<^H!3apxkG$^!HQALYf6oFjf7=pAUlUsS7klruBj zKbP|#tc)8@d6JdJ!Yh!q3pLB=#NW)SN=}Fm!pI`{Nxtwuu*surY zf!$2!8v9_PdV$yO2o4QVTU6B{K+KvkgZpamH0w6_9}Y$aQI;&CImh%Q2W1o8d(ksM z9QAyV#*mQ_3^V80+LmHaqzXhZF^2~nre=hK{6u=VzY?h+?SOuTkdPcg)H~C|aE3`P%tZA1j#_Xn4MaKwk^>+@=3?65C*1fLMu?<+KN^iC z=%yoIpa)42-pfidK)Z%=h+(IJH2P1+gYGoM0&D0pqoYz zXcUhLv#{!Q(vp)F&fU9sUKdUlL^wP{ZbFU@hRH%Cq!%{T4w87s@wm&XE;chsLZJPYzxEXOpOvYT&sLUyCb9Hs3%N`MlT0VX znEix_8AuW6y0L=&s04j8*wd3$Xo7r#^dz4SnlCiIfFh(b6Av7{7=R6by&o({$r~Kd zJ*w(fmj~sRPY;*d)`ZIgW#xUrkgI`4+hn?xL3CXYm#Uc!n#PF&;r@{rBbF8&g!s}* zfKcfmJj_Vd?r2QBZJwCeWlm4LYF5KsgMziDNM7*)2GsJuVt&zR4A&YZv>Shcdw*C+ z@3VR;^4LN;f9wUlvAH=tte+p%K_y)w^^W+@xwc_3>{f12R1|xMn;I3()^ls3`p>){ zg57a|fqVlWbEc2!Osrou*mw@K{}HpLFJwy(Xc4W=lHGC(#CH+B45S?Y+FY^tE7kBsovm)EvCmk9oNwxM+Gnd?I9{7Pu-x>%3}Zgwj?$4GeFd!q zBm~nt7FlTqH3|{AdkLx-OUo?zlY4de;Jy)|RQJ5%5a!~D-wFMcwwpEFf#Fd({T7zFm<-$N7fU>IetJFm-iDjzo|L zpLAldP;P9DQsfuP&5oJEZshjF1ofroHfx{wA*fgafd(2h_;J6*1hGln-!b7{kwQEw z=ORW7R|-c|!St-j(NW5q2VmuAjQ3$n2L3G6QO*^P7(M7vBT}IFST>C@ttKlegOS)i zeuP#iBG{gcH{7Wa~MAwCmuNp6rUS8Fp18{Q6GV&9cIvd8s(_BHHoxDj5uMt zDKYTz-IJmRRVrx0U~I!2avj69+@_I%Y$UgLWY8cd+=^cnkW1E~ApTxU*5jEA?r2hJ z;8#gWBj+AD&Wo-T_V_q1c2tb0bp!mQ2;dnERM~@Jh=0s}i!PE{;lQ zr0_**>>GqRBVYFQp!unmwvyZa40F_%Vo3P-X@VKhd83nwMWYmM98ZVC(#LI61>)ZD zD^-O5Rt)TDg(ViXXZVX8o(4y91$SHZ#-M0w4i>q%Asg49SUq61D3Ei343Z#!JIi`R zb6lK>m2q8hQG<4ZjGm0A>6ef((}Og@h#GZ7jaEmzmdlJ+vK8D*@dKrlHXOKttB8;D zdTMLj&+*}G9M=}V#OnjfQ}T9h{&QNkfUAD)-2kdai$^7$m5DX6f*K)sEw^y=bL=th zz0m{E^_$Vr)?zsWKECKrlV)EzEW=Vj_nY0!=y4)(s<+^-ay@YgC5xw?WTK>pSyP2O zH2!=6rbRc8O5Df@^;nZXt;q9-i3 zbWEI8lL4c#oFDw49Gl zhFV62Yo=$5j@b{(LUu3coJ_=9-eV#}LU-a)5{H`sH;yuWsqbL+^uYxs^yr@qlD0*i zfDWMAe&&fcQ1zslQz!Hta#caguYx3o6&EXU5WE?4YsMeB8bDjWqnQY2PZ-VCaYqs& z*n`~7goF^9z6j$E1oIB;1Wr^*5VtHoCNJXuKis&nfzNy3j3>d;Y4J;lr)*k0$dOJO zGH8X~rdzOy_a))LnmcFK$?ol$t;mWouTEUr6CxYWde@GE^F6BtVap5hJ&zx&`iKu=9ch@E5~ zSCp8-?&c0B4p0nFE46I{Zl{co;HLP7z$gW;IO6Q!&tvmc zSw>YZ%oRH(!2nd3Jt|-vPmR}3Z`eX%Se50#wC6P+L3A^z>v2N@BztllTDxyvOv|dY zRI0+R72XPtjIJyz!Yhu4JL%awy@b%2JWZh{xk+A?Ns$$CaB3sZ@QguQl_a!8q6K>j zlyPR{Elj49Kd;jngPxUb9r7YSok?yS@T>*$q1O;9_)3dIascP1Lu|a#EVk!)v|^DO z%Johj{9G$MEe=MrvN@@%%5 z`!PAyN+zs5O23v!6!7p)R{lKb*ovANOMg?Vuw$daEc~(dX^qYp3zw%+0SBP(&)bSx z8B2i4LpZXb%LfYNKF(lWo9V)2=_EH$QC)`kJusA|w~Dvt$tO^s;+*3KSUbU6g2vbE zx7I45nv|9Pg_d@Y72q7VweLNB?QgS6yJV&1s8X62Vf1c@%-iVmOl0)Lzs|hOsX0`y zIRrxVg2(sSOZee5Tr@ed+Ma$Nk|~usSY$rj;FN*v3tUFZKr7DZ#;vtVmm#!Tdh##N z)*1VQj4(+wn`m>0W5VozXxOa2B5YEn$l;|*x7eoq9dqmjxmXGpuPu^463a?8uqlT| zeuT&uBVx!(<57p=CkVoW!3sySO4_J3hG?I)3I`!(Txzx?1Rb!5P0G0ja)gtpBdxyZ zjKkokOcnX|pb{NbNo@-z;)U=X4Xdf7X8W{Gcgyx*ieL|>&Gukw;7>!DtTY{C;+*d7 z@9FWK9A7?2$)0*z_BW^S@w5YZ=>#G+zUT-#!Ta*6I^6a@e!Zt7w}m^P4$Vd16!aBF zOb8Y{O4BU(AVP9%D;x?R$gJN5Z8%qBLO4$Ba7fC)TalxmNeYEccl=<_ZNt|>%0Ug{ zlQ>oHk=4dUrN&v0H2LzDx*iQU(aCGGXC0Rb-wueLDHLjke*Kphz~w}Mxk!^~jiG{1P1ZjAc=7SFeP z6o9VSJXD7)OJIe%dUvbH;)isM9zsdEa!m|-m-|i=WIczWp80$vy~NTPTZDk{G;z=x zKbnf@iDc{)Ocs_)_g_yPsQYUq%K+*|Vu>aG*`Vi5QUrX`jAJ}t(pz#%ZucI+JlM3l z-h<}N@D7ITX|X~e|15`5n8DNKkS2~o#&$j-n2O5Mvoa37bVyK0A%Y6F7Ry^`2=sl; zQj<_5w|onilgQ~x^Yoq=U$x2BKcsO;aTNYJoKit?zOD@ zbEF1{nBI~fw_6%uX(H@9F20kug3o&v(s5&<8E_Kmoa%;t(aPIDmgu zo$GV%iwR@HhNdy;f*|N#Qg!m#Zc=Q|!iRsYTI0N-oZrOYAyl)N`pKhGhL30j0pUQH zCfEWz-8fz0vL~i`HsSSADfjWjSwo-mM5c5Z`+R>6Ga)Ke=|0~Aff;=_s*&s}(PSY0 zT-2m=_9Ry@DKf4MLqXotKm{8nWxK{#V(x7)-6aONJI;{FN!SN2I)v|k+){(-9!cg- zO-g0Gxt^25k{fZJf-BJHDH2}(N$SxscMj!T??Aq=NsOsD~1~LNk z>h`T-v(GxOk~;Ivq}k>_qPpDvWG|IUo!O(Ek(+)I3Hx|J;<;$W=d`* z_T|Fi+hJOVv$8n+Bk|y!IzH#l>@S)Z!Fgtd^`93iq+ejdc3kct##YP>T@^fDC5MeIOT(6vfezOp~F;aX049s9;iy4MLU%PuKmzonb6Vs9K zilA=u?%7>a3N>>N)T9t+II7@P2>(HP2cm={xdm-*AK_zM1wq-w>h-9Z5O*)YPj0}( zxurP=$0~go#*uf(VcF{_T@CHnI)Y?xNzsUpre-XKPKqjU0CpXpB{(!2`K$_FvvD1h zbWQeFGnc2E96GrBMxuKyz%YhqHwvY7NX=y>uW;Y%2D2Y=ExPECNP0nG*OZ&RyE8|i zW4(XYp;|RjiOA~iGh1vMj`uVzjGenb6J;Iu4OGoPT}HX|M7dJUjrHdR{*U5=2eF24G05_0i*-8fZ2e9 zFJpEefM5w=6~G9{0VDyU0RaFhpnVk>0h|Hs2Sft40?Gl!fMtOBfE<7tFbWVx2gffH zW5fYM0KR}uNQMArqKxAy?(g|&K5rC31At{~xQqoMJtOft32^l_hWVe@xZ86>B4)1v z>wr;!Fn}B&0qjJtHlQT|Vz|l$edae~V&?!y0s8?v0b2p(fMUQzVA9`}Vh9tkA3%TG ziXljV89;w4jrlLXP_Q&+VSYZNo0w`bFCV}BrGorL=0)84d84dtE4$I?e<8@uD_|IZ z%YWK3!GG}z7|DO(U8VB^UYq$pc&j0XdBCgqFTB8Fya(Q)|7u%|wn(%EK(zP`6#oBR z4BZt%N8OD=TRYm!g_}bA{(sy4f6ca2|F3Pk`pJR`tlw>RLjLmkFXX4@=PzGSJ$}(h zQS}>3v}|>|ag>-lV+`ja^Xq!;h1E}3WX@Qczi863#miHf>YMq0h&C5U*q5q33f>X* z8n0F}7bhU28?R=1XmJ_9eOfr$_jygu6iudT6!jafsW6~gx>B9Sp5Z2aHNc~p(J@KY zOTQZ7h4VL7u-2!~>W>eluwHRYG^1oDsQiP`tl*VJ%Oien-lk4*d5=b?izPdn!j?v+hJ@-QpvmS z_a0swU9c$h`HrtTuU=Z7u%*ZM>rPs%uU7t5wx;;*of+1dJDR7?{AhV$$ho=I!@hnn zc8PM+xRVw3F#r9({GK>z!F1O=XHxGWOQJVq=1gCb<<%j%mH76HULjA8B}|nKw)Xkv zv#|MT!MSrL`Bn8+U1>CPmlh^!eLm zb0&}Y-fK=Bm$G1{`A_43oxV*LQH-HroASqn3E8`QTc>jil*;63@=u<4T-@Y+{;0>g z=}|4sn|t(5+Y=vlIpwSKw~Nbne-LD!@hY1*>+UpbpI2qvy8S=a-#Ga|edKX=&GhI! zf8C!kwb64=ZSBC4jXnp)wd~kh6Sx1@bH~3pw`y(eEA3zIySi}5(rVum0Ye_V+t91| z==&Gy%vGOmi+*i;Tkep*vJF>1k&?Y19rsOg%s@!+ugqQ9% z7Ci6@$+PC>C)Hi*Wwowu>pbh*bt(S-oZiWcr+4o8j6AVbdR+OU=Qn|}H7&Kf-+0*m zQrU?OhYR{wkJ!6>Zf3=spAOrXJLBgwr!$?NC3C%=WUikRqFO$9GCNSrXMV7C!<$du z`lQ#pQ*HdoBO6~5k2}0HtF_`g|6@yEIK0NVIq-|dn|-H^`$1Nf5%i90&k3vCRo5r} zty{-s>YW-#;jw-L7xh*qMCo2VIAZuZ@1Kf%-dR;t-}7z%x4&?6>)w#WANuRu#1-#& zPrdZz;>`^UF1g=}seWPVzL<~ON88^Uu=$tdKcsh(ZJ&|of2E}DZu;F)@y57mqnoZ> zQ^uu+t|~e>^G?|0eATV;$s>R8{%rZ_{x^TNE>fk%kBbwx|L{{wc#in@SE{~VRjS#1 z_T{it1K(2qQS6~nUClc(rjwta`}Wr8-j8zL*39~Kb4%8^zV)J-`O^o#rY}7+SoY3< zeIM@+Y^v_P>A^xp`wu;3ul+uL0y9dRwej$)pZV_d%r%^t)5A19=tjZeY0>YO|9JVu z6I(hrF@JfEw?1KSy}l#u>m^ay-|gDEbo$#fR@!TCuT&nKGV^H9RB9p zVM8viYRXx>EWY-+h9CBSay#XlnR{0afAh0;bNRO0sk=_T-np&nZi?r9{$h+i_+hW> zhv%-@QTWO410y`Y*#7v<6P1f>mEYg7S0tRjp_?4AJv8)>hkxatO8oh#HLr2aZ~c<5 zEJ>OXlX+Nw^-n`i_0Y>>C%DHQvA*%nwbP%hxOs2*JBgYjy*Br}%oVJ!+fnevtJjYN zCe|(;^kUxXJm33YU4Qsib=bApe2`{R(};s7r&f4Q@|!2V*XIA@ZST;6cmMt3K~-SR zhBr2KRkwZBMgH}M$5Q9RoDDlBjWitJ)oA?}b1B0Ay%#(8q|ZGy*E4ga>!Hty^b1Lk zjvrVR_^4H+e^&8GoL;IJV+$%kS@KLzOueu)F=tl!Jddwl zGJQ7C^zp~He%(+O^)J4B#~l4Rx$&ErrrUlWC*PJ%44yddTG)D>@kWXB$(@H|UYqmP z#WlCT&HQoqcQ1I_F6M=#vvIrObu zx3OGYR{lrMKI3FTom&|0OI)(u;HIw{yvMNAbr?`KZ5?{j^B`2Gbi*LCO2%(-Xg z-shf~L**v%({ge72)2GxYR0I7m-bYIE1$lAK_PEEtrY4pPgC)X4q5edAD)j!g*@GZ z=e)4!r@Qc+Jb$*4_SqB_y6K8k9F`~BbR$BPsM_>I&pNqmcABVMv?(ggcc6LhN;AVS zwcPh?A5m>k)f2XZ-7Fc%YPms@F!_|FYQ{FVm9c9A$~28y-Xi7YQ@QDq^=vNpn`BA% znRw4z0u20h-V(xJE7R=u;LPEcc&)LTSQA57j9#7NXwJ@dJW*+1D5VDYxyJ)UltrpQZywJgJN%G0gPoFpwvXC0j= zqMwPGOe%Pur&WoiZ`(<=S~i{BN#D3ehFCGSmi&^8X@>wqM_!jRjLpqj#VV&-%gfj211*%& zXmRuMc1nXEY9^Ls1JRLn(=I7%fUsPxT~O6DmL-(Xs>;! z1A$N2O5f^Tizs$rd`h~6aU?Qasc)#Y0!`X%{<>=$3Z@p)E=<}08j3+fiBnc$#S2%T zVBzg;ymhz@n$u0Wdh!NZ94$J-2JiKe>oxwoyin+F>A}laqm+6G zreX0n@bZ1nCOw~3x6t=S1_HHRF4G#1>R`C zLdH=k+_7t2v_6QlS3E<;vxrxr_|vlpP?jn7xB-;3{wzd3@ukPda~Vv zrYD@Iz*}-)==qqt#A)_1{pw1<)X8~`vf`dWbU-P|!2A$Iu}rADY14)@kkRP!6{tJ_ z0hMLd9%m#BlWovzK^-q&zyQepi)5_24n-y$$6g|$kt2p;)B>qU zR`MoQf)}B-zxscRuM4WFHT_OH1C#fnzNXVr=dm;rJNF z9hNR8m!5PJ=&98cDGE(e(;s>wLCF}zDBw5QzR*Ea0;H>h@OjHk_%1?5O0}%Gn1%)o ztR(>|P0=*VO3pwv4o!>e992;Zi4uA=Sha*rftL2rR+a>yRZHH68M$`Ch)g1K3*?x@ zR9V+(iG}_Ch5}5)uBlreY4(LAWySN+T}!5;U&>SH#w}ZKKud~yjmY74XzIi@u!iAy z>nMGs0cnUhV)rU9d!E$sw1}rh1qtBo`tV^cIi4m3Sw-g^>}VnRC{T?u zOQ^kAW+1@0+7TU9{8$6gd59A1Qm-|`)FnV`^5*4I54xAVpdB$_2M@1veS>Z~A_`(A zP?lQA-nuf-xwX<02@^KnzBl$K>uhlaS`2jcQ~9GYeqhY}?89VH4}k+Uc`&H=~f z4p^~}SC%Z|?sQseo$=y*G74G)$dxRG!JZCq{S1|WWJhZJ9yRs8jB!*Hav!vgN~yN| zMQc8&*=i($OBfIoV6_z#-R6{N4W#TvRZr`#uL2WL9p4j)4$ z?Z?Xlz`biGrZ!3-T=HI$U?`53vM~}Zne<{nySF`&;=6_d)1)HrQf4#YEuE8)(TOX|yvHQ4%*JsE1Vw{vX%(aH{Q^_NGzj zfl;)GE176-iX&kZyECwZQP?1D`>DtIUgtLWw4q0KuNq-3r;AMhu61ib{j(&~&$;aqq}IiXH>6-odl8SrG+ zS?WIHOs@zdB~f%WalYynF;LDp1ss5{gURg-Xd3?WiZqxU|k){5@tEWNIeo zxfz{%Sr=e-n>$KYcFd1qTyr529f?2}M~mLnM0D|>!xM-5Cc@0Bp?_KNC}6?!&5KNP zsKhZsst6*mBsvn+prFaGOtYN|0A(azGLsB-otD22Z@p)lLskDzCo5yVRi>%+DmbSm1*{v{-6=vOO9(TOw7+|O&*u}#ioZfk)smJ3 z&&aj1;$5@>T142cBm8)}=9&}AG)J{%8mZP8P!3gL1#R%W=;6R3n~#<37~-%{4lt0f zP`2l_Q;Q`}d0xdE*+Pc;bxC7SbE86rT3;S0sMrz$7wHSRH2Is_ znnb4Gi1{I`otKBA&1Huo5XA3;Hkx)^A-~d+2t)l$3zxtmxk5`C_zXFVlHRU4N)AAk z(1njFihPYWfrD~ESvun`Jdxpr-~n4Mt;Zq>2Fh~Wla2d0sr)Bv)B_}xsgS3swdsM5 z>;MT4w<*|OASIh=8H>ByVApJ~(d-hTGYLc*sb8O)#1b(|!n$p88`kH>v!nx2NN*s2 z;ek2OY4`v^pBX<3Ym=*HH+-#MWq}Q4`lNWEb8FaqAsgxJ8vvMmrek z0t3nFVKi5u!zA=|c&BKju7p;e$0U|m81P6zVkr-0#qRLcd3keae?K*5F{u!p zr*R3P(<2&TKux*pBkfu3O*zKyjEEs;=&WL3RC8a3W?B0{F-eigQt{N265wlHkN<|? z?voXu2Z;~((vqV?K%1MF6@P&Ep>@TyP|-A+gAu4zK>L6uVAyjs1wuWe(4ZyfF%%tm z89J0@Np;ztOiWLr=o|=v)GwmDVjxH(ua4XY0oc0GjIWgAHgykYf8oC9{<8OCxVB5d z1%?f=&iIq(>5w;Jui#h*y->1|s|*Da4P+P-aYaCY2Tx7 zdYVJaN^+6yVx?|V3H>wi68<*oMP?o8S^`W=^8>XJ?s!S{E#bSWd7fQpz*iUv{N)tdu_t%aV5F@KZ7$m~vMJSph|Iw$!9;X_Mk`8l2fnWsr) zgh#6NWNW-2b|IL5fTjxT0=NgZ26aR-;DwPD;f0Q9=)z*DGY~(a&`5rT-@#=b+AUYi z3DBb+R?;9iNmHn!lVgm;c2=4#uE9nl>l_KhL}JUiq)4joE1on2K@*Dsh7`g%)t7-+ z2nhp9qr>oSPTZdz(P&&Qs#XEmAwU@=n2 z(5`7{3gRuzWn)6MWFIgKC;GB9-O6gP2du-IDJ$mC6{C{<1c7Xwz~p5}+U8csY)VKT zNaiSNg@Iaf$OX|q17g!m9eId~)*vDuao56Q*?}A%-qlLid?X_XC!ihq$vD&<*gy$; z0F`sb^l9f$NthY^)Xc6BHM18`18@PNww5`4>aKU3=kTjW)c7!0n$j6 z0owtid#agb09K)9E&_T)tC<~uOMu{BY9<@-IejWIK43tMnn?p#XXEEHKz?sEvlDOx z@GBsykD3|RSIt}oOab>41_ADaxW5380PO%@5E%#v2FNMFfWCl4Ko%ey;K)!)9Dyw~ z8%ij`InIYLDlL)V_Y}7|GB$8AN+oR$cY(Koyv<#R98PoGr&S|HD7#s{0HD|&Qbb8ed16`=)+wvh@W-mO8 z?nv}r1U|?o&V;KVoY?bP?RhP{d<&3FV(M6hdXmBIP;`yl2}9JAPx@gjME-Ihq*Pai z{*?y5k!{p-*Ay|cHzSzQ;l~kY$uW2dEZ%^r1KGf0CGz9G;OI&hZyCv7dXo|+YJlwc0% zmn&h@NZL~pDGLR`27yH0(n_e{?V46LRSKG8A7dGNs|60!G_*`}n1;=zYAX^zoeoua zyqxBS2!p>i9mKS<;`@{)3&b3UcGn%$&}{bor^zE0S@9X+O^dldpGfB+E1`=rjoXBc zOA3lqiXQ;Qp=kvRvXZxjVF_V+Gt3dIdLQhkg(QN~vXcEE&dBUXq$75!93#Ur5|ao7 zK7Yk9PS9Bjg<(;uRFtb3i{D`*MB>_xQ7fpLY|d~kX`{h7s}76B3CTkMcQ0DO)^XmwhOzloBk^msH7j*FdV`9$uT}m`IluVLp|z;_6-J9m4@fpf0OFD zu~jecS7DulDd?8)@s*fH2w5u_p5gy7ybNW~5vs)+ubKEgCzR&kmjP)+gw+ZLP)f;k zBvORK6eG69JftjB8Dhvr`t@8qbfH1co|9r$hFB)C5Zy4!CS_JuB7>J+I^v|1S zJFVn&y{A}<;Lv)qyBDR`BAQ;UCvhm7=)RGjMdILTS2{xiVi;z6wXInJyHK?m>}F-? zF=~G(gq(#W6i7lTHacMjW9er6%*2^+We_w(>Ji?)rS^S-#w!|o_5+!$0&@|VRcU+* zyT#sNDnwx{MqeHI8ePcCTwb3r-@U-4TiiWdVV|DXpy zY<9klQpo z^kf2%b$U`CA&Acx6wr;e>VAh8WrNR9hS*jsL&9XGT|toR91P!{{;o{;}*&+_V01*5eS=E=HBk46im%84+!fonTQhMH|SiNbL7R4de^BA8vfw zQ)-s?Hr8Rnf0SV93dz%xV=Mw@32p-*+iLVOkmdN*=8%QxnnT9JUO-U*e=rnAltbpD z)u=9nSaqfV*7Vv7T_Py1G=;pRGzqa7M~Mzf7`T8#W!t{9b&aQVuL}MI)rFMVlgVn zqx|slR_^Wqh3J`r6AzrI-3C@{&%7+5Nb2Io(cs_f%s-e67%6%dh}dNbLvPIIiKG;_ zl2%Z5low%7#T#zfppgpN5y^@@g04#Zb)*HAQz-q{O}r^wSE=B>AJoOS z9ORoMGa%A1*I5_t?;cJ#{jym;D1O?Z3ZpoE(UDeSQ^p!A3Qyv zu|!H7xrDKgO+`tNdk!gpJM+s!bI9uvOgBb+2B8}*If!614L0!0aXG|o9z4>AE>Jk@ z<$fGIP^4VS`3&h}r2>EtlmZd<8AQ)F*P{%&nn9$Jz z^Dbx`6C!eWy+cCEmVSKdbJ@yN% z1XYcvYKx&HAi^BxQW6th7%{gzQOU-0?4UCK?(OYdYyrUp^rlo!skO21`>-yOraKU!jWqPYBb{ztcYZw z#swxti+n}g;G_g!`xuy;fS_eKL4!8N@vMjD zKrC1}!7u>wGT!oDZxWqk44x12$ldfb-yCpC=krHh2BG;h=yHKH@ zCwLT-3@qV*K-hfR3IbRxWz>)?;Xo3SHL{hPF+7$X&pCz-;gbs&9(qU501>GlxofLVWEw(vq9rl&Z8GOy)^CgGz2?sTeDUNW~s3ljDI62Q{?ML zDOkkTTBtZ8)>9V}1cKeCU@u@ZIRY)*rV*iPy7m~u1rFQ!>nSw_fhKU#<3$4^8@>8b-B7_jS{#zYIBo7@;}vEx zjtsC+j^X|@qW92N-n=v3BnPV`5VsVlC78O>8vlsi4XAD;r&10+B3L@!!vG+f@u2ckLqbf20Eh1DqVzNY?1LR za-pH_7)I!gb`x#y;TW6i8Ny}_5S3+wO0h4IDw@PL#T_sh45?U_&nqej`dch3884Vr z5Da}@DhtMvQ5O_HRuG;W!lUQb(P&oP&?&S=?TdDY+Xi*w+PEb-{IErAQp_-r_qiWN z^|ex-u@OKQ4_yTT{#2-gE2wFKM;`>8IG9cawbSQydU30A3dSdxuVCMxmS#e-lF^uy z7|+0BZY1Xg;R6vVSyw}kFhk6v_(VDk8Fv;M#78lY&jbR^iSHzyuIc2+Y2ntZqb8GJ z^cAM_d<13J5S24If?8gU=3IOWb;m~8#t)znTaDC#?{*|bAZ)dx8`R~v;P}~gS8DrJ zAwCbSNrB{lk?T+=Sb2-{WJ7@eIhC{IhHNXYe6vn#jiMLYq_<{}L*R=#th=a&nzA~@ zi_T1^EPWNWTp=W$D}xwwh{=n5hj6JiJryoiNPkoy1qGE~qQ~G^bDYX)D+p0IMEH8> ztF-XWo{UELAj}hSKjrSE#j>+G|Ma-PqYx}uSxS9wB$tsMg(P8K`k<~w2o+d#>Tz^q z@+KO{2iv3t+-K=M*uz{+dg=%z5cH%oev=CVaD;B|L04H3>SB#Fm4O(Rtq{WMBMi}2 zEinh`k@*P8EN*m1cf&kWN6%ynxg(<^*+pFa=$-?Y;|9XBC#`6P0A@^o5hX{^D4Bu2 zsvF>zF4G3Pg^S4;fK)`6F-Cgq4G(u^V1>v=z1`C)vIHW3qv3+#@-ze4KeV*q^94i z$ZKJnFj2ZueC{ufR635O2lX1U#FF@8_#aJDJ^v%=^p~I|`pJPM$FmnP_cpDp@uKNC z+<+lJG=uYhR>T~T`g}#CDdik1h~|Gxj-W!ZbgGDF>B^g*K$aqcU<>nabjGszhUIv& zCCG9_r!z`|pqm#r@$`CQ<0H(%%j+Q$(_J0bI1c*3cK|e1siShzgust2UCK1g^z4Hs zzc|K&?>6~jnX`JGSd{KtTjdsqw@&hec}7tF6)0)77*_bCbvS9%Y)- z6SaEd01zX{l`euQ56f2jh%Aj%j2Hozx@a_*(s}tgDph>e$jeWoM87mRZMW3pvw{IZ zY4E>-oBxcVCl`HSWi9h+yaWBlj2WGhCtZCNrpC*i=!pW7U-@ZabSI_K>H3;09y>fb zDxJv?#6UN-s`D?lwPJe~zNKu@8fQjv4PztvP`!fl^QWW?AJc#Vgfk18Zwv4|@o(gm z~=uPGi9aFg1@!zl^(uW{4*jrK<7bpxjpA)Fe1qDGY-PFNs4;hNk)2B676qPRcD zWw6(|gz+c;??CFWCx64-#Am5Gn?Yq^Qm)xwm|0Kmaf4q9RnlXu4btNCmizzP z=WC%4#SIWTatmKdX2ZFUU&^u4{ivQ~f@nQ?8`g@nQlfG;P4ak8q1m5~WxikdcdnT@ z+_4=^A>;&=fz#~O#srz`^dtnmpgSz7DK&cQU2+Vo5vcn|8?vn@9VZ2+*Xij_D}?L> zF0OQO_}0X|K0(&alMUl*D02^Vqzurzz{T9I3CZkA?&k?nY$?}1p$EH-3(Xuh^uKdj zj1g*%GG;&-|D?3IU-i;so^bvOP9#b)pc+Snkz17+)vF&!eeU9h96ddgkrj8sdzkxM z-gq7-y}4tV(cMWj4I-XAF~~uTEg%?_O54PB_nbzK81allsilB z(Gz0CdK%?JfnlJZgy6{G#2&b;U2J1p%M1FX!EEzK&`FX(>oW5m01Omx z(`QF=rL)7WLr-(zwo|6+X&#*{TCii+nJfbGyfM}BNYemw*OaKd?Cg}TdPHwqo?p|Mq}Yp=)}_~ zv^mk1zjRYn*Z;HS|Fh-)uPs;gnxkQ>md}kB1^&T~U9fo8s|(T=ELc3d>ciKvS+4H_ zWmTJTh?vV<;H-*V_=||kXNPXim#{0Vyz<`>1#efY@!ue7=F8D)X1ErK9ryXtVO;Cd z5ZMIHwqhOM_`^S>SDm?ogFB6_ej%$P`dm{M-PF328S*$2Nx#~mbV%9nX4)KOJ!{oss z7-rC$M?+UNymtTi$W>RTpQ~Ygew^jC{q~z)_S6f7V?LQ}?%6mgT(q%t!i~aD=M?qc z^4{@onP0te`pn%;L|I@15y1{F_4`9X>t$t6eS4 z!?w@4HMR8OmpkU%>iKF%WA`gvA3eQSKOq13#q+7-JCq-M)o1s>9eJ|o)py4n=+=1p zQNLZE4X)cd_SDrLk7vEUaQoWv@poHxzcW81`S8rw6k+#32#XI zjPwi2`1-uztutrrilx`aFX>*@XPnJ1z~^IW%eR{U6fAw~fHkAb#zhle+4k z*9Z@3GxQ>PA^ZEV<1wvsXFqs!@SCup zp!K2tsdrl45yx`Q?o9c_TE61*Q&SeaRv7T^3d81G??)f`WLe+5qpgWmHqtxVTX8by z>BIk$<8y5QJaD)f~(BNbF~v+e*NXWnIo$mJ=?DI z-5Qr$`&rP+#$SBbtXNQS|53<;Q<8`gKX3j1ckMdo?Y5N{9P^g^(eLdww(ou4`X)d2 zVd|96WG6p-``3(xY16w79^(2VSMKw&&#T>aQPzZN>79LN)V)s_lTMNoSALn(>*2K{ z-*(JfY>-v7|GNHZzTWsMyvJlbo($mrLuo0cQ`ND|&n0jYVbb#`lkN zoeHK0d{#5nw5z%MD?PqidhzbQ6T_3%KAgW}zjED>-#=yg?2`1q+&^uH`p%#Q?42ha z*+-7uI2sgudvr~xw&ePkbCQF_7h~UEZC#vw|N8E$E9Yd5@jBs{tNLi`jGITdF&oN@ zvx+ZoKGUUntnb(ASsxF6GT^0$*Pndi`f&86_cmVK_T!uPepU6{(Y+!#ae!{V_hpTC z;dN!74@*v^kINdoGTKtQwzw+mZ};Mb?+qHaVBj=ue@j>AuC9rpGI7|?<6Exn*S+5V z=IVo`TXk0THc8L(ucU8MDN7%J=lDuorvY>64{V?Xqhwfo5t zOKvn4kIG*!+EA2!EGh56F|W=0jvt(&v2=a>B>vL0C!t@ZK6@{BXI6D$Z2MvH(oP4C ztvkoas%E(-+eUm=;_GeB{rho&7KUHupZ*8XT+My>jdg#hLmyF9-L%@XoTrFBH?R{k-W&KYMmk*YqQMG;xV6jM-dy z**{=Vmm!9we`!mV;!ARG4QV~qw6;$AS>WQT&JU+Yjvf2%zp@G%zRGAga{rg|?dz(Y ueb&1kp8wZ{-fxZ<2R;4rZD!KMtd*muuDiSY(iC|eU)dxr?EYKP^#1`2g*E#C