From 170aefebd677bfe11ce3eedd6bf355b74859b8cd Mon Sep 17 00:00:00 2001 From: ckosmic Date: Fri, 29 Oct 2021 01:35:37 -0700 Subject: [PATCH] Add external screen teardown functionality --- include/types.h | 19 + .../UserInterfaceState.xcuserstate | Bin 320811 -> 325338 bytes sm64ios/sm64ios.xcodeproj/project.pbxproj | 4 +- src/engine/graph_node.h | 16 +- src/engine/surface_collision.c | 62 ++- src/engine/surface_load.c | 7 + src/game/camera.c | 17 + src/game/camera.h | 2 + src/game/envfx_bubbles.c | 60 ++- src/game/envfx_snow.c | 45 +- src/game/envfx_snow.h | 3 +- src/game/hud.c | 25 +- src/game/ingame_menu.c | 52 ++ src/game/level_geo.c | 4 + src/game/object_helpers.c | 1 + src/game/paintings.c | 45 ++ src/game/rendering_graph_node.c | 465 ++++++++++++++++-- src/game/screen_transition.c | 82 ++- src/menu/intro_geo.c | 23 +- src/pc/gfx/gfx_dxgi.cpp | 4 +- src/pc/gfx/gfx_sdl2.m | 17 +- src/pc/gfx/gfx_uikit.h | 1 + src/pc/gfx/gfx_uikit.m | 26 +- src/pc/pc_main.m | 24 + 24 files changed, 927 insertions(+), 77 deletions(-) diff --git a/include/types.h b/include/types.h index b3dc27e2..c46bdf01 100644 --- a/include/types.h +++ b/include/types.h @@ -118,6 +118,10 @@ struct GraphNodeObject_sub /*0x0A 0x42*/ u16 animTimer; /*0x0C 0x44*/ s32 animFrameAccelAssist; /*0x10 0x48*/ s32 animAccel; + s16 prevAnimFrame; + s16 prevAnimID; + u32 prevAnimFrameTimestamp; + struct Animation *prevAnimPtr; }; struct GraphNodeObject @@ -128,11 +132,22 @@ struct GraphNodeObject /*0x19*/ s8 unk19; /*0x1A*/ Vec3s angle; /*0x20*/ Vec3f pos; + Vec3s prevAngle; + Vec3f prevPos; + u32 prevTimestamp; + Vec3f prevShadowPos; + u32 prevShadowPosTimestamp; /*0x2C*/ Vec3f scale; + Vec3f prevScale; + u32 prevScaleTimestamp; /*0x38*/ struct GraphNodeObject_sub unk38; /*0x4C*/ struct SpawnInfo *unk4C; /*0x50*/ Mat4 *throwMatrix; // matrix ptr + Mat4 prevThrowMatrix; + u32 prevThrowMatrixTimestamp; + Mat4 *throwMatrixInterpolated; /*0x54*/ Vec3f cameraToObject; + u32 skipInterpolationTimestamp; }; struct ObjectNode @@ -243,6 +258,10 @@ struct Surface } normal; /*0x28*/ f32 originOffset; /*0x2C*/ struct Object *object; + Vec3s prevVertex1; + Vec3s prevVertex2; + Vec3s prevVertex3; + u32 modifiedTimestamp; }; struct MarioBodyState diff --git a/sm64ios.xcworkspace/xcuserdata/christiankosman.xcuserdatad/UserInterfaceState.xcuserstate b/sm64ios.xcworkspace/xcuserdata/christiankosman.xcuserdatad/UserInterfaceState.xcuserstate index efd03d7502d9d0925acf0865452903a29c0a0120..28917bb6e657fd0202ac66269ef2d72909acd1ce 100644 GIT binary patch literal 325338 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

X%zRP6k{mQ#3?FX3=6Y|Z|xZ7QtCs= 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

k0a}9rXal6 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 literal 320811 zcmd?S2XqtHw)j1xVo8>4OI9=LGU~lcmSlCwmMmGeWqL8j2rwAi*rvB}NPy5w=)IQ! zfrL)z34~q~AP`C@NeG0J(39|uY+5exzWeUFSu5-RqBYo>b7sytzrD}i`!uIxbwzn? zoknvC009Jm1W*7PNCGfGa!Wz)cuj42Rb?wdX-!$za`;=ZpsuRArJ$-~w|H4yZ8`uB zn^!_i%a7&7`^7uCpJzG_U;$jSSY2sd90ETf(W3w!AOLhA184%s0R^B0RDc@L09rr? z=m7&@0h~ZHpgGV2XbH3eS_5r>wm>_eJx~Jl0r~>{fd0S$U?4CE7z_*nAfO(Y089iX z0UrUAfhoXLUyW*W{g8u^Ly!=1BytpT9P%UNWaJd&Jmh@jV&n?s$H<;mpz=@!s6td5R0*mK)d^LJszLQZ^+mmh8ipE)8iksSnvR-{nuA(~T8>(Q z`WUqmwFb2bwHdVq^#$rn)PB@4)N#}a)Opl*sLQAyP(PwRL;Zxhh57|`8}$qgpg}YO zjYOl+>1Z;Vf~KNrXgZpW=AgM~9=a)7jMk$KXdBv%_MpA!9CRKy5gkSspo`JX(9O}U z(QVLe(e2PZ(3R*abTzssx(|8)dLVib`a|?c^eFUb^ceI6^hESD^mO!W^c?gO^iuRP z^g8r<^ak`s^d|IX^cM71^gi?v^a=Dg=x@>I(C5*Y(3jEQqklyIg#HbEAN>IR5d8@K z82tqO6#YB;k0fLgDv6Mkl9ZaHNKz)LlGI6>ByEx|NuOj$GA5al%t@A{tR!cWE6JY} zO)5w#Oe#u>B^4*NPbx|3kW`w~F{yJ>x1`FXs-)gYeUb(x)hE4|G%RU&(x{}-N#m0y zBu!45o-`wAPSS#;Pm?}NT9>pwX+zS+q)kbilXfNTPTG@n2LoU*m=p{Nla3){=olu3 zh2dfN7%@hMkz>3VAI6UfU~(|Im>?#E$-{&(5lkVbB{%`o3R8mVfa!`U$8^K=z*J(Y zFnut6G5s+8F@rI~F=H_wVWwfGV`gLKV-{nUU{+v0#;n6^#e9MJ3j7MQA9EN*#vH+% zz?{UK#+<>N$6Uf(#$3Z($K1gDjJb)qg?WJa1B=Guu*uj|@K0oujHWwSjMzF=m6l^nWb8K5|J8T@=8QTTh6yhwG0Uj2nU*ihCdT0d5#>9BvA3 z7H%GH5pEf7Ic^nhE$&m?0o*~{A>3iy5!_MSG2C(73EWBCDcl*{McgIab=(iQ+qgTp zy9f&I9_|V5X)-DqpG-=oCO1iDCv%cBlba@slby+~WOuSB*_-T3_9q9DbCPqDgUONP z;^bz@ZIat2cS?>YcTTQMu1fBkJS2HU^62C-$zzizCQnJ8kvu1PLGr@nrOC^ZS0=AY z-jKX4`OD<}$p?}TCLc{cnS46=T=MzkOUaj$uOz8St1z8$_jz9YU2-v!?lUx)97 z?~U(+?~9*={|G-BKLtM(KMg+}KLbA#KMOw_KL!cf8}!f3)6!dSvM z!c@XE!gRs{!g9h|!g}OQ!Un3z!ZE^+gr5jE2tN~U5^fQGA>1b1 zA>1Y0BRnAdLHLvKECrpCl#-f~mO@M+r8G%lq;OJ1DdH4KiY7&yqD!%+*iw8cc`31! z7AY-L+NN|!>6Fqnr97oaN@Yq-N^Q!(l%Xl3Q^u!ENST~6J!N*v{FKEhOHx*(e4O%0 z%D$AZQue1DNI95tDCKaPM;5Qm3cRPMx2+ICXjIiqzGqpQL`4dNB1+ z>fzKQsYg?fr5;Z`k$N)qRO;8MXHzewUQYcX^~cmZsdrQFr9Mf0nubclr;*d>X&Grv z(%5PIG+~-FO_rugQ>W?E3~AYEzO+bMVOmjI^R(7!?bAA@bx!M&);+BvtvYQ)+J|W) z(?+F@P8*XpHf>zm__PUW6Vs-o%}$$>wkU0J+N!kGX`iHROxu*UIc;~^{D;&9?9;yB_Y;zz`3#OcJ@ z#5u&J#MQ(N#4W_F#2v&v#C^nr#G}Mx#FNBR#52UR#BYgLh&PD$h!2PliI0fC6aOHA zBs2*}N+G3^(n(|zi`0}PC#gvql9ps7Ws$N;ZjzrAAcaVsNO4kUQWsKJQaPy`sXM8H z)Pqz>sv^~r`jZBb>PhdBMv_L6Mw6zHrjn+Srjurn=8%?Z71y@?IV3fI!-!6xkmbc=MCbf5H?^n~;$=~+59JuN*Wot4f` z=cfzPrRmCaZMrVqlx|M9rQ6f}>EZO^^p@$Z(%Yq%rpMFE(|e>>rq`s`rhk||GJRC~ z==3q^W7Ef_k58YFJ~4et`t0;M>2uTPr7uZen*K@pn)J2lpQdj~-4($5 zN&hzeT>AO+OX*kBe@wrbekc96^!w?L)1Q!$?(D0+&4Vx(kK9F!bNKBWbv4W%um1EmwCE2V-` zP3cMLMd?lHPZ>aYpE8Ovi87TkjWV4wn=+rWn6jL*in5yWDdj85e#!yLLCPV@VagH8 zQOYsOamv?}^9T>+JIWQxRmx4uEy^#H+mwftN0i4@1QkamQK?iKl}=?+xzwgqF;z}g zP&HI7)k<|!gVYE$pISt1PHjzXPwhx8qjsTorS_!urPfnFpbn#sq>iOdq)wsEpw6Vu zrOu-+qAsScrmm-Mqwb>artYO4pdO)~pngL=O+80FPrXLHN&Subi29iN2Mwg5X*gO6 zEtQr|Bhy&4rZfdjLo?7UG&{{j^U?gYAT318r$uQoS_@hSS{GUmT2ERpT0dHU+F;rg z+Em&!+H~3s+DzIk+HBe!+FaT^+9KM=w6(NPXA zjdq>(1MNrJPqf>#JGA?>XLNuL((!ZxJ%vuDQ|L0foUWiN=_8}y&)H|e+N zztC^f@6hkk@6msyKcqj)05ZS~L`G^xS_UzLl#!l6&1jOr$jHoSnjy}RWGFH;8O97# zhB?ET;mQbQ>^=4H&!Sdg(WV^PMkjE@-^3?_ra;4=gaF+;{sGBgZ5!^Fs9*cncShv8@B zGV&Ptj6y~+qXnZiqaC9Iqm0p+QO>AfR55B8y%>EN0~muD^^Er!!xQ_R!M zZ<*gQFEOt$uQPvQ-elfp-ecZpK4Ly){>cJaC>Dm5%t~PqS!5QC)r7@jaaoxxAxpxN zvs5fC%fK?TtgLL7i{)hnSV2~p6=fB%nz354+OXQQN?Dy)U0B^%Jy_MOT2^mXKh{9j z5Y~IF4_G5uqgZ2E6IdUyrm|+RX0zt87P6MGma|r}K4E>zTF=_V+REC_+Qs^UwU2dx zb(nRGb&~ZB>n!U$>muuW)-~3Tte;uGu@)0h>*mu~!vLCP?vwvql;~+R_4wi%G zq;g0c3Wv^NaM&CkrzuCok#ZCqHAlxWax5Gh$H8%Pe4HFkh!f!yaAKV1oYtH+oH(a5 zryHk=Q_bnm8NeCH8N{jQOyEr9OyYdRnar8OnaWwsS<6|+*~r<#*~Zz)*~8h(+0Qw| zIm$V~`I>WvbB=R?bD49M^8@Dw=NHah&O^>4&STCKE`dwrlDJeZjmzLNxm+%fE8q&b zQm%|^;+nY@ZWhHMUL~)JSIw*A_2TvB4duPh`+zr$H=H+u z_aSd2ZxnAdZwzlbZw7BBZx(MhZ$57UZy|3vZw2pj-ZtKL-VWYQ-Y(v5-X7i|-cjB$ z-bvmm-f7+$-Z|cR-bLOe-WA?e-ZkD&yc@iqdAE6Yc)#-zdh}+ck$i)2tS|Sn%|LM#~;8S%pbykk3W<@j6a+|l0S++nm?XD zfj^Nyg+GaJX=kaI|o|aDs5MaEfq-aHepsaGr3HaItW?aD{NS z@Dt%@!gaz;!p*{M!tKJ{!ac%$!mosfgolO4g(rmH2u};o3C{~J2`>w;39k!p2!9sd z7Tyv5CcH0vEPNvTQ}|4T6rn^|5l)mMN)@Gx$RfHZL&OrXMSM}FNF)-ArJq=|$t$&^?nHi=!5EpbSk5|_j+@kqQ9pCnfj zl{Awym$a9ZNIFPLCFPQClJ_J-CGSfbdkB^fOlFPSQtEtw-(B3UX~ zCRrm{E7>nOAUP;GBsnZOA~`BKCOIxSAvq~IEx7&kIxBMYQYWPl8m;bh4& zyo?~D$fz=m}m%zc>nH0k8z37Z8zvhq8zY-6n(lJSs1c7s`v|F?q4PnY@*}gS@l6i@Zu+E$=DsC+{zRU;cr7n0&Z= zlzfu>Bl$e}eE9w>~LadM|qzbJ zQJ^SP6e(hgVns7Wb43e98$_j|qoS*#T+vfeqo`F3Pz+QIQw&#(P<*HusTix6qL`{! zs92;}tXQI0s@S2}so161t=OaZLh+?yuVSC#E5&}rVZ|xMw~BL$D~hX%n~GaXv@%JF zQDT)iWwH{lBq&pqsme4ZS;;_LP%@Q#Wu{W5lq(fVrP8Q0Df5+4Wr4C#S)`09ibEtPGRWy*48H)V~oRyja9P&rXKN%@g-vT}-Ys&blgx^jkcrgE-wiE^oOm2$Om zgL0#ClXA0imvXoAjPk7VTje?BdF6M?3(AYiOUld2Ys#C-d&*yxPnEwb|4^Y-Nh*$t ztKzBns!UZ=l|Us_iBw{hM5R#aRaq*l%A@kCe5$Z2qAF8$QpHuBRb5nFRpqK~s_v=^ zRkf;*YLIHMYM5%cYJ_UMYJzI1YME-eYK7`!)k@VW)oRrzsx_*0s;#PBs@2b)p#{oO;J zd(^GfZPabm?bPknCF&09QguglnYxp@tGY_vOWj*NSUp5NTs=ZPPd#6~K)q1CNWECS zM7>nKOubyaLcLnOUcFWQx%vzBm+HOhBkH5-YwGLjAJjjpe^TF2|E#{LzNP*}eNX*Z z{X_$3Kn+fltifvt8j6Ohk!uthrADPuYcv|IMyJth3>u5Zsqt$9ntV-EQ=n<7X{G6@ zsnOJG>NLGHy)}I_eKq|w{WSwLLo~xQ!!=_xV>MGWQ#I2x(>3!o3p86aTQ#3+wrRF& zc4&5Lc4>BN_GrG)e5E<6`C9Xh=7Q#;<_FD>T0jeG5n7}crA2F#v=}W`i_<1+Q?*nr zP0P}DX~%0PXeVkXX+P3V)=tq*)y~u|&@R+2*RIfhs{Ks6PW!oboAzt%H`>$MGupG- zZ?)&N=e6HyFK91nuV`;*?`ZF8A8VgzpX!i0l#Zk0>UcW7E>qW3C(sFXBAr+#(Mfem zok3^R*>rZDPv_SKbosidu9dE}u8pp(u7j?tu3Xnk*IU;|*H_n1*IzeYH$gX1H%a%A zZnAEQZmMpYZn|!^Zjo-WZi#NCZk2AmZi8;4Zj)}OZkO(~?u_oN?pxhC-Fe-2x(m9C zx=XsNx}SA-b@y~nbWe4^>rr~No~!5S`T9(KQ@ubh)Qj|Dy+kk7EAkR7+8w?u_n+%%`+YDbA4j2v^P8v=b&Ktfn z+&4ThJTyEqJT^QrJT?4o_`~q0;h7O>Og7?;BxAafVPqOvMz&FC6dCQtY@@^IG`fs# zqsQnq`iy>K&{$w>Zfs#JF?KMP8q1B{jPDyiFb*>gH;yoVXdG!AWgKlBV;pOoXq;}G zVVr54Z(LwpVf@&*(zwpJ-nhfK$9T|q$auzh)_B)=&-knHH{*Td1LH&EBjaP^6XR3k zGgFd@U`jDjO*9kT#5M6u7E_kVYOTDWp z8e)P>^``esLrw3SJ}?b44L6N2jW$g(O*hRjEif%Ktun1PePUW;+GN^nI%+y*I&L~) zI%zs(`r7o3>9pyL>AdNR=_k_-(>>F#rl+Rg%@i}$Of%EX8RjNthM8$*nb~HJInyjP z%gh?H)|_Rwnr&vU*=KHRZf9<9E-`m7mzq18%gmk3adT&LH*-&Ojk&M6pSj-ro_VPG zee-DZ81q8&BJ*PN67y2?GV^lt3iHS2mF6|(jpl9U?dHAaede#s$IQpgKbU_s|75;l z{@Hxfe9Qcc`L_9v`8V@Z^Y0df1!=)s2$mE}s)c5uTa*@+MQzbov=*I3Z!uVm7L&zl zaa(dMxt0P;p{2;u+S10-%hKD@$I{o*&(hyAz%tM>$THY6#4^+}(lXvM!7|-4!!pyd z(6Y#~+VZJoi)E{2pXDpd1Y_m(S`tCnk)>y{rZKU?lu9$6k|fmw(wWEMV) zkR{3zXGyZ8S+Xp7mLf};rOHxgX|fDiwk&s+Co7bdmle(`&T5ubl2w+~J*y(CZ&tso zNm(CdP0pH!}2uKvn>m}<0>qF}!>tpK^>r?CR)<3L&TA$gFwqzU8 zMzS@rF>Fj*Q=7nMw`JQLHmA*HbK5*Nugz!k+XA+bt%50r%aa#{t zrEP@mL)%E(DBEb;7~5FeINNyJ1lvU06x(duLfazSO4};iYTE|eM%ymim$t*UBerjC z=WKUv_iVq~ezV=TJ+M8rJ+eKvJ+b|1N89msf}LWg+G%!(Ju_F{Wmdpmo3dx^b+y{o<4UT=TTKGgoc{R8_j`*8aR`-k?C_EGk6 z_9^yR_SyEu_9gbE_GR`p_OU??T@n4v&q?%Y-%)F3#-*%uKNe+wy>%cjZ9e4-9k>W^o zq&u28xDK8};*dII4xK~q$a91p5l6lw>L_p&I*J@IN3o-sqm`qBqqC!nqsme3=;`R^ z=2G0(BovC6U9vB9y?vBR;`@vY;W70w>cN@ta`+S$|D%Q?{bo^z;klykImjB~PcigS%~ zt@BgoXU=ub_0A2>jm}NZ&CV^(?anWqd!2`zhn-(Lzj2;+o^f7sUUvTMyy?8-eB^xW zLc5qQmW%D;xVSE!i|@*GHFXJG5|`R#beUWZm(%5P<+_5dQddV;nX8j4?&|F7;_B)u zcXe}hcU8H1y9T-jxjsN{cMWrmb&Yc^buDu(cdc-J>{{ts)d*`!EJP#+-A4MZFhU!L3hYqbM-GkhN-9y}vyWahQ zd$fC^dy;#mdzO2)d$D_odyRXY`*Zg;_kQ;Q_xJ8A?yK%=?(6O!+&{X1a^GV!q#l_^?ooJ@9+gM!(R-{Om&ff1dP1HePt4QZQ{n01 zsq|ENsy#hDHJ(~eou`+lp9k^`^9=Wl^NjaQ^Gx@A=2_=i@7dtl=-K4i?AhYk>iOKW z&9lq%m1n=_sOOmHjOVQ9ThI5NE1p}PUp)6bPdrb(7%$t)@p8R9FW;N#ZR!-r?R6-tpcE z-sRpE-jBU2y{o*dy`Om3c-MMA^?v5v=-ux9!uzH7u=fZu-+R=1+Iz-($9va%&-<(Q zH}8G#1MfrcBkyDH6YrnMQ$Dm0?<4pqKB|xAqx-l%p3men`z*dJpVepc*?rkQhtKKr z`a-?}U!kv+ueGm@ugurUH_$i8H`q7C2l?uK@A-!M-uHdr8|EA7o8X)3o93J6o9|oT zTjBfIx5xK|?@Qla-#*`0zWu%fzJtC)zQexbzB9fHzKgyed_Vf``0n~KeyktoPxj;e z1b>P@)t}}k`YC>fl-0cfiZ!xfpLNHfeC?$fk}an z0@DI>1B(Mo0;>a`1U3dX1&#!c295=e2TlY|22KUO4tx_h9XJ>GKJa7Ur@-C7y}+-5 z-vYk}{>Y){WaKo-VdOA#SUKz*P7XJRm&4By<|uM>Ir-Xi2=apbpfo58 z%7gl#As7xug89K{upn3%EDFYg#ldF5=E2s%(qPA6*I;?DXRsz%8>|Zs3=RrT3Vsxv z9GnuI8k`oK9-I-J8JrcI7hD=#6feeg=~ zYVca{r{JC7gW$v9vk(x%hHxQnh!^6AGDA&6f{-vI3W-CKkRqfHWreIEPskhcg~Fjo zC?4t@>JsW2Di3uFbq`g9dW0%NRiWBY{}2?a4}BOK85$Lu6#6K%GPEkRI`m0sO=xZC z)6i$3b)og44WTWeU7>xUuR_N{$3rJV--gbG?uPD#ehvK=x*vKFdKh{XdK`KZ`ZEum zhtDJAQSzvHv^;tqH;dD(f6JZGLO&z!0^t-n6{wc{B26=FQ5Roi`_MZr;4S`FV@;R_1-0_gUW7ywCHtZw-GQ-WJ{--W}c_J{mq2J`+A0{x!wf{Ab=ya+#%8EG03M1&DhL>!Ssq!DGr5V1yV5pTp7@kb(&{79!rJkmMR zCDJug9_be89;t}*i1du~jSP+qi42d7hAA6Xn(64?^j8u>i3EwVkb zBeFBHE3!MXH?l8sFmfnzIC3O%B622jHu7EMLgZrPO5|bWQRH#tN#tqd_sAcSKO@ib z5&22^n0#zLAwNBzoKMfs$YqX(i#qDP}Aqo<;0qGzMu zMK46Zk6wxX5dATFGkPm}H+nDnAo?)+H2Ql1PyiO73z73l0<MWsbuih30FEb3DEPqHRUHiuM&9E;?Rxy6C&2D@8vP-730Wbie3n(X$vjhL5Gis4-@Y8xzLl zF?Gxsv&Eb-e=IK+jWvt4iIv3SvCgrISaqy-Y+wwE4U3JAO^i*6&5A9EEs3p+eHz;k z`#iQSwkNhPb~tu2b}IID>{jfT*zMSz*xlH@*srnQV)tVYVh>}FVvl1_Vozhg$NnhB z6(<+tiwVUk#i_+<#l&J-F|U|koLStoSWv7gRu}7vJ;mN)U$MV9P#h|b6z3Ng6}K#I zTU^piP}!@Z;v|p)qylLG5g-G!7Wpw%_jteB*6`2gd)=E0$|_20YZm|{ARR(L$OQle zphBqnq&mn_LKJ9yK8-fZ4Mz_qzfoz>do)Uq#b{ER0!FVTOY4EB^-Lv1O3>$TQB~8u zwz{+|?yD;6)gxY6_o8G5kO|0^0!)AfumKLh1$Y1-LPJRq2Esx(C>g>p1)2f^KnN#^ z0SO?02v7=?3MUaE2K<}0ed6uqm7S{k1Zqlq#7l^xmp6(_J9;O4^Fg0=9mist#TX2GDZW#Vh3 zw7jx}NX(A~%4=%t;D@TKDm%q%+T_Q)3Ej+Z5IXVYTf?ROs(RJc!pX6^eiiXZX>Ios zBKbv`FU1%1H5QvwQ{7MwT!UbzzU^P+%kR~rW4s0eAtaQ9#X$%h1VAVVLxR#^>j>Dj{;R^a+{p5&}ucgO~Vdvvlx38l#cd46d%# z(puG}yso@UWmOH#CH-{;Y6MhJLZrfXUv!yQ>UL7C(drDQcX!zNdI&q;2zM3YNw^D{ zS`1#L*PzqEb?}(ndQIB_iI%}i2v6V-I^lAAysaDUMkOqpmW{v0YhkvpS73oBA>L@i znVORUc&0rVf;+(r{*9G;%uehUhH?KOSPo#R>Yc<0V$eP<1P=!XO_ zVEZJ6kM)>=AkYmyyaU0{79Lx7Dx zf#T;spZ`D>Kxrp{EWirb0Q=iy2Y2R3ueyX$OxVMPaJFo~0e8~Gw^vep?o3=j2#_rY z+<*u00zSYG1b`eM7YITmC>s!x7t@A59Cu$6AS_42E`CJx(b5}d19U3mrE zwc@oc$~)C{ZOj&|tgVL6Z&lU2%J%ZfhHPz{m&g0~;vIW+>5{PMV5fNG#8Py^HgbwDpj1nD3rQY-ml)X%iRrRVVi$Av<&4RDx^mZ++>=K7FlVb4-m`l9V z%eTOX+j45EdQ~?jz^V`DlD~ZAUkmiW%)3`tl~>lmmN+36SVu~T?04i2*4Fk)l*xKW zdIRTox2_oW%_T(MJ05;%+u!|y030a1kkEU;hk$GeFcf$n_y8CN3AsHlx z6ieVfJqo_Y0At~pBLz~zmm1O}A`Z9)Fn5^rOJJU=xgnGJB5(fFo?z@i2x`@%@Pw3rKlg}`FK@fR!lLI6vFm4Iv!unbrZtN=cS^pF8E zLZ(H)D%fy-0<40}P!?o`|Am25UTcb{Uj$bD24bXeX>Hw0DI{*gHojS9=U1|LEptZW zJK~+11slM=Hg6teX>8MCVC#ZJ-5bNNzmyWIf~^be4_-XE9oPxb<^ww* z+k9XbWKYD#iIDBB&zyjRvM+(Xz`hb91Mb6#{!)-Qidqz}u8G&eQY%e38^{4=M~Tb+ zHC#(+RbChG(NKNZsKMb+ox7|oUJGj(Y>DITYs(VhXhBsiZ2PJz+tohr*g^Q2+If2S zo^j3FUAp~X0XBI74%hUB3s`_BG zZFwQ`W58KJwhTB9oB&P&r+}|vH-8#91Gym&5n9oTl{u=)?gY`ui4jk)~+#Uqv_}WPcM6JUWNZt9yloMRaVz4 z5t6>c&^8vAFr_8L%>U_CFRcCl_?||aZhZNkcY3VGViQIl7Mi!J8usq*HuQ}!{zEs@ z*tGvYANId+vM-e8F7ObLEe7rZzXHDj_kjmc6e@rUp&}@@7G%Q&^sGIk1F;|8q`%WujBU`O@Hg zFCu|N8HsWAYrf`r6F?N01e-b#4KHw8O9icL)6BLI!uLLEa6u#ie15gPwmVg@gHyx;lx+?%7B$8eh`q!rtGX$?Y_SYX{!D)%m*jv>j;YMJG09&}S?hON@ z+Jq<*iM5`7iK;c$_W6yXUT|=dm^Mj_KVKHy(AOHCdrbuzq5*iY;++R|Z7}$t9}F~u zM|JVK1)v{rG^Xc14=~_qC3ryN{e&n6!(ar=2cuvCSO^w@F|ZhH1~vyp^KfsH_LI^`NmH%&G@H^A7Bg#(CC$z#f(847+dAABF`3DtcI z5A{ZXAA%#nQ825~@UU+zI1U^SPJllX;m;)SBXBZ&O=HT74*@dx|}e5>)?s;;J&J20pq8K()jk5I}zR{J#=nQD?a0Sk-EEvsyR+R+n|H zfn%NW(#q~twLMBJ)i35YYSl4cSf{S7DO2|@?-YkOAC`A7uS?u4Y51+GIu6g<^@bw} zRgXs9n-0!^yBHh`6vzA4y?D(FAuI%Eg0m9Q#k(@V(JK7tzdqI&#>@uiEJ#GbCB&KH z?tXVp815EuSFNh)QCe4&<1w0yVqSSIuhVnU#yeSgofA`2uifF5SMtiEF`ibZ((shL zC|vuTus_Cg7X)9+rQ%6^@y;-GULvt177Y9Iz5WuPzo5wPbr%Pt`MkO+UM&o;vMkQ4 z>k5a5ygsEhm9Wfer7sk9KDhV|MO^|e1(!j6puW%mNc$EYT$#|pRZzco>EIf0E&OTJ z!OvhF{0y7|^(PWw;Vy!J5@NxBQ>O7+RgV(lcyS}>$~st@|0KMdz|Y^nyA9k9?tlhC zgQ5Dj;@y+L`vo-QU3m9_@E>$|j`skJ_W+C+B4S~@xBsu47r=|~r%`(^!+0;lc!v=cFy1@=*YI8kZ@hu`XYeL?3;GZm35|Oz z-n-xj3&4Beuh1xH%)1aj03X7iM#PU{#E)Ubqlq*a@!168{Qr)D=+m&Qqw4W?NBIX_ zgFpYJ4r7U2sP=EDK?%_!u8r3<&N*BEefy+WX`b6@1PX!uS5Y8vh-3sFngC6NCcjM- zh%{K!5kzRxJH!A_1yc}|Mg#~NI2pdCKpzoRP%Q~${4Ep)i{W6Pu2(I*td?8e37**c zU!j0KAshuH92xKBYa*qUaGX@btFD1vd`(?HURCFY42`nq)xz^waoC&I*2POZsa~*T zBDim`2;RKP41Fv}SUlC1xiNooZV=bgS4jJFkxcL`Ah16Kau1Kb|b@eRObh)#$& zv>aLit$Hiq@&w>+(8uor+yhaGsC*8%8U|bq171ng!GI6_zibM6A>J7ABKpH?ivyug zpf%8EZ$$|uP}W0h--Yu1*H8|FQ4WJqehPy;^8Yf(QHXJG=;V0B1jIyWJ+uMZ{8o@t z5+J8S8{Y+T24W^+=5w8#4TGEwgWN=9!6*d@l>diDWQYZbC2!zeidcqN4sC@#hjzRb z@2Uje)zG$g;a&S`(ggtzc;Rabv>k?<`+p7YCd3=VUBouTcEk>77qlDt@~vd+u8?_gi0#1gnDbP2>3>dKGZv$K;_PP`E zjqp~lc+G!o9{w^1{CsGNOh>{?S$|zOK+=&J$R^NP=v(N!w<2OE5OJV$??S|X74ajR z!ibu}h|a@+3ja1h|I`kSlpqyv;8h}3NHug3x&&Q$D_(s9uK~LJF1+Sfv)#xn7;hGg z_j?#`%fAipL~)mjoOoRjp6!O`K6?Mh8u;H|PJs6cdfou+Mf#9_=o)k#`suBJg9*SP z=!bU!jv(`q`Omv}0SveR2K*zD10yc|+YrCGbQ6QuZrqlC6665tm?&)x-o$!p-3!QhvHQ|iIQ%6#v? zjr`)blYedD{GUX96>{wx)IUXjhFn(*2jmZ{NCs{QNbO zupI`!Jpn!m20!R;13$GPlBg_#H*myjI`-<^8Qx^^PeQ#1x$h0sUm^D+57dLWdN8>j zg!fawxj_MWB!T*9J&1o7>JzV_J_Vybl|Y@?pfLDvMeTuCBwuI!PeOeb`CS8Q0dW2y@mg^1pn*xVEViG|Af4OyzxAwy9x8Z zncz<*roj@RCM58`pOCC+P+@iBMxS`YexMTgq+V_3UX^9FDtM765i}?GC-(cm+f)BZ z=<;8HH~E0Pn11JqLhFg#n<_>Otl^0iehz@^jU~!>WaERITR-=DtAS z@7b$izg;X|4R3L)i%0#je-e=l6zeT2f#RUJ4MaHgAnyf{%mk69^&t1(AOcVHO@^;m zDlzi~kAzD6Ls`gC>bJ4bqI3-`GV4LX3l_!%3sXJV^qnkT86J3~Ga0^Ku^0`r@K(f2 z|MMxG|Nej)l z7>yeLw&qVnO=@VqsUEbvXntZj7&WyXH2)jThnFWN!`G|kPfsX8WAnWgY*Mp9F(ET58u}39Vdr_IL3v+2=zkaG1E_MxrXrq>Oz9@#dz?w}lfM7k9vrvps(oWKOV0bwxb!r(FI&_Pzr;s;UcjZae2rubG(}>7ddkq)-w> zAPtBF2uWz6#E=4kG*jpZTSc&A7t5~+h=M5g-calvEQn(7BG?r~ef!)plVk=AqHn$R zmh1l$!_2*>?Q_1p&#tIbYZcVct-8E%Zf%)1`meamX7Ov_@>b5BjlAD@mmqYR9AFKCguqv)C*aHpSY+xG5Hgk%7T9^Yw@>gxS*hMgSJZ->NZjx?NC`B&(_K zjS`WlBui!qH6JMZ6ahCKxEa9Byiu}Y_JiJ%Q$m4Y7A8T!sgwfOz^0<+0AXnfj9@Y~ zo>zTz#g+cgbi`md>Fid59`NF)CCM^W45hJ^jaM)u?7L@1IU|4WTRn=mnoy@#R z>ictWBAIh5tIF^WuJQ`ZUt%mzRIr=gIg2>YY^ujM8gonV>M^$fBc5>5`Q@mBV(}^% zpsnr!DJXSXFDX*Ign1o`fjbqr65wV}X{a7Nu(GychW_7f#~A?6r#wqEKU4m*>2nbtK+7}Qm^GT}|Bx70`KYjR5cB=qE!67VNc zN|KT>(5ZdI&#XxFZ(a$@6cHEBB9LFJM)j9#pW~a=s6~!E&SLpd>9%M>h0$i@JFM5s zRj^<6z?B1c8qy#f-x`h@WDA*)y{Npji3MwC*DR>4udQL{N$W{lJiHHWkOoUbq*Mt* z)aC#;AGjLeYF9Syl!i$s;~a-eBczcrt>uJK+sG@atZ$JjWm1(1&B2Cqj zIJH^Q$W+=!)VD~}*i2Z`rw%GsIf5QK~TYlIG&iJX0^=mNL*<&VHSap{Ka>S&FHG`IU8b z<*4CmXlxjzCNaR184e9)F~4D8!cYW^3Z76=fnf<5<+w`a;TN>iJE{cZ#tzpM3neWm zor~}teoODhm{7gcXvFGDO@LvKMzF55NJ2kR7S`K#QBsEV@0L6mGeWfeSWOhsDu!1& zT{;u9K1eI1l@ds20Jjo2z*^G4ow-3eOIjtJEu94%{(lv4XX77gH`*XoXbNX-z!=1T zGW&ycp>&a!{ox3?8;r%dRJt4&N4gBS)y)zL-fR9U1pZOzsUFi+&L56u1mu? zA0m~>xfIM9bkg6?{jk+F6^olYOkS);-pSO>)YEi=sV~+ePsS8sX{KRVi97?7^yFYB zo{3nKd@5EVKNWM<%)_(=r(q(Rg;^#wN_- zaXZ!^zt{8tRv&*H>yJN$)yH4J>f^6rR)k%c{NO#)M_7mab4-Ku4b~n15o6#FnhtR$ zj^_v`b2iS!`M3ZEb$8~vV<`8DTpupP4cK9#m|MwgvKQ7NE>A+6v3&mzEO5I184de3M^!(Kx7pHaQGX*xNZO36I zyvmx=s;08?{L#6tt~;=RdpstnJBmhoYE5=Fb=8`*nY!fHmAWujM0ZmUY^v*Dk56l% zm(fC;>G(nxA-h9Og4d@bEf_OQ(VFUK3f-u!9j4jqUsM{-UFWjyFlmM9J1{Jx(P3Jn zDJD+~Hac(`re#wz4K?gw8Rtx?N3&Yvw6-w$RI35HY&%$vDQu|&qtY4}X-a23EOL2wnDR{p zn0)IfTC31no2<=kiXkqkEMkXgnyJV%{b<&@Mr&@Sso2<=vnFF?HJZm=bcdd;>L@n) zLan)SlYN6pPjFR$+jLfLFpn+To9L zNjuaWS=Akxx%P6CX+bM$xO_V>P1|DAlA{^MYOSSZrmoE<+!v>tR$!vHqnO58?fo-M z9`$`K>r{u|FIgvO@2}Bz!Z}5wSh~xFEU)Gc%v5zgW~w?0!rh=Xc9F@>j?CJrdG)nr znDzymy2NxTrmySxxNd(*Yw8MvJXaQ=Sii%x&U7^_$pu5S7B-u@YMbqrnYf=57O`w=?DD!p z&rWp|OZ|k_;vJ?s?a19}THC(OyG{3C#;XpjmDUs{s?yn@i|jBxXnM%>a7SJ?u={zf zl}8QUa;5390=ypYFl{qE(Xp1a2DY=4fcS*DtW3{#d;leN`WioPvTM`0a)+7>>gA5N zk-z#AZ49rPy0Q(7EKJM8)PXf*%aEUA@m;I6fO(tNYuM$A+kr`)c4NY(4z|MNhrL=W zdrawJK;40{q;F;uM zt-($jE!XbQQZ995PwG&!=0vT99;W{pr{l^UTC%32X+^sXaJ^0cGw_1z%k|^>A59w? z=5PtdF~M;pa!FirN88AI^UuUoHmym%F>fzz!3?gcE!<#kNH~pN&yh2=Y(H@sE;Upz7jUdsk!w$uW=7CG@s)CF@|g|Hu%B{mDQ zB~@Ssq|-15(V5(Nm?&s1w~pJwJ;ZIt9I~mzB7LUpT>{jC-Oyn zIbWw{h`kWA!*1la@^@n}*E9TX{!9LQ{x^XLvfvha2`R!bAzjE6a)n}{Mp!7U6wVVa z5Uvn53HJ-zgy)4fgtvuvginNDL?SxHpx9aLE2fB}#7W{TagJCgE=1ej8RF$=!MRnu zSA0x-Qrsc#65kU)N9~ST@<_)?J)~YzNE#_kkfutdQn^%vxBs=$I;lmvQMygqCcP@X zEqx??D(xd2aS?^|ASaS!auOL&W|9h0OB%^?ayD5*X!-R{4JU1$nppvAkFQK|W-5n!A`!G$)z|nTMMvnol)Xn(NJr z%}dQ^nXfc&G;cNEZ{B8p-n_@W*Zhp1IVYq52%b*c4S>!sFft?R8@tdCh= zw!UTk!1|^27aOrTZ9QyBwxPC6+Zfvv+o`q&+Znd=Y?s;A*;;J(*tXkVvb|}0-}Z&= zH@n5|wRf`jwD-4_`>*la{*$5ixL#^8^=*-EkeY!z54iJNr1jDU;4T2}I;N*lPHQT!Uz~^T zIA{Yv42vYJo>`%4vrv_apVt`8ZIW(ds-Vr%Ez%b0R^ToK?jqpU0(bESX{&U*bcb{& zaF+mw_EA)|V2TXP?x`oqM7>x+Df)_K&aJJ*#8RlCWXUkIOBxmz)@pk0#`1}5G-{6U z>FU5(0{2=>faOvDRe;HWF-4x1o6Ci^bEam`C}}LkA~TwknfiVq=4UEM0!+u zOnMwOuG^$1Oev^SeoA_JS_x{tYgrcUX=lD)5%W7rK@K7 z+X`8ZB;eMu7Ep9@O0VGQd2JeId2dh?dINXW^x6gG_4p=Bn58L8cS^5groM>!TzzuA zv{QP+G#oQHYh7rMz9sEyw;I|?VD~N3+f0etW~stow)>oUAZXv!)YhOVf$62CJ<@xc zb~3!s>Jx2f(IUOi`d}7_BRrMYb7b9Gb%z?e>0{|rQ{QIk6X0%Wme2-<$t#Lo-O&zG zpI6U}67}U}nP`NagE^hE7okyyse*E{Q0&D_b<$U+bvH|2OM9hnq09YL>3iVN zIK3V?+~GF@w-LCTfV&yEO)C?MU4wOfzF~jOXhQQzc|FUG9L_Us^p=p`h^sxjsgWfL z9C$P@YFhn9OeZ`t_G=00nCh<)J1VKFo%0tx_tu-xQbtFQa$-|u>HIO}RhaVar0}Ed zvvEeh*5(OJyIJh&8GbwVa-cRBtx`i`&nWgQh$J;=H$;lz5+)wan=F}qm>C;e(u=4H@Z1-RDErA*v@1$?j)T}eQ!nP=O!NFB|Z{I{3Jkv$PDAj zaikM)cL0Zgco%SY19uN__X3A*3-<$uKIsnv_YiOo1NX?Sq>FfvbR*r7h4v)9@bB)( zN_&$&%K zk0sD#*3+JK+Hj5jO6Ot~5Of098IkI~fyifkU0$LNM|~NG>qQjPC#5c_mV3VU5tp(O zOI~PeY~(5@L&-4Qu;e7*9&0A(AM-fdv2M&@7^aVEmQ}Hgq?^{YkPMOu+&18zS!rZV zBBRJDCjWXenv5anbAa9*PXf1nJsE52O~wKD6f-$Ly)tzswi>Y}&S3wF6e4lqKiO^= zS272U$*3WphV#>=-gD&Hi(2C`nM9_=>aGa8LyPybth?uo^s&ZvW6RTXWW^0?L&&MM zJyM)oUeQ=sn_oF+Zlep+Evq$aNGU1P>`*(&95UDBL~ou;NF^={77bz60%o_xgqL&F z{Qs>!Q_b?gy{vL1GM`josgUpsEu`8sy!8h~6EJsUP7Rg^X=r0tCUxXAQZFTvM)4qU zZv(djxOY{9?`wFXid_T3AlSy*sM&TC!iOLEu9j_CBi$ly)q1j+EFnvQ+X>toz`Yf= z^pevxQ|arPskGJQLARxnGqnfa)E+QQBgVIDxI|{2-Gy0h(b8%dPwG5P2Pd-IQq60&oqq&&D9)p=^T4fgU9@wa*xcCZ+V7&QAAO6hzgm_nncQ zG*y)`rjm!LX7kHW!_>=-2yV=IpdoTV9wd)2ZuJmBw(uozU$u}&$z#BM4g3iVK0Its zr#I-`>TVq_177h<^-yR_vz=SD)zud-T~Cu|$g|`*@;rHgyhvWcOV}&qRq`6yL3WbY z$s6QN@)p@e-X^=rJLFxmhrCDLCm-NN?IZFr`GkB*J|mx#FUXhVEAlnjOTHodfZGea zANcOT4*`BQ@GF5oANU)9za9A3fd3W*69~tHa5@MZK-d8o&LR>J`++zP#2Fy21hECg ztsp)E;!7aD3z83{?jR+CG#R9Fkj??=N{}7`>3NX$fpiFn8AuSw@j#MSHtr(dk?+Y5 z@%T4O}av^mLI-J$O6oUke=Ofc8w@AkaG*}ynS zq>2p68Z}0#47Tj;pLe(Umi5y%0q}9gcp_qKxWoi--vW04IK-rHfR9uE`3vyAHrPcu z%15y4C*Y6@5$sYaPGv+QyjEMN6}bJtp)ib*um+U;N}UW!u&eJ7N@mPv!f!EZ{SzAI zx&-5)wrHe(N`o2-{TLI4XlD(De%4Va^KYV1>jCYgJxorDX%kRE(3w?CnvFLzMEHdI z@+xHB3(DCw>Q~@?R-uCSrhPD_H6~hap}kdrs#Dc+IJ5Gqst^`fsH`(;m(l)o2-bL^ zA(}u3&_tRe)o?hoMp1l|NZ2RskF0KB-FrlPYKijH&`JsF+Y zdeM=l-oQ&Jh@vbBycu{GVmSNLtqG^`hLl}at^q?rgIe1`z0Y=v{t}^KTxAW4St!hR zkNI^bB1`ho!I9ZhLe*I#tpM zz>}4Y+HS|3dmCs0Dvt06cnZ9%{a)GVqPo06i|7n=`k>Q+w=~n4fQdUX_kBEi+c%bI zG|_~W@PZicmC!PizlF}GrNG;Ox3|!8S^>NRc<0L0>1@6#&|-ls<6LV}i#D?P+^QQ^ zHoE!7o{xR2N=1hJL+fY*Yxgu-54;C>Z<}@}Rp4T@Z?V`F3QHyIo}~@ja9>NvLnq~i zriRGUYbRnUU4||_VL7iAzi6S$*%68PT@$%SYl~BB=s97W;yVK$jK-;p7*4IF7t>3CSAahb_)cM*qAOIeVI47%XQ~Pdc#@9> zp>+9(wy4O&chQk)#IYa~8$v5oYS9pg?{c*CiC*I^^j2Kmt>h5BgWgH+0{(d52eP&8 z!I%L*82A+62en<~d+5E9MNR^~XY?XJ%&po;AEA%Z$LQm98+`)!UcjFSd|%-E1D^mq zhN~C=zlA)8yn%Im0mb*iy6Dkcgs17qnOLKJlWxc7s6ve3fDQ>K7DxHf6ik1C}OVPV`HWMFv z_le#c`{;i9E&UGn#yfev1Nh9yzSyVH5U;SPZBC*(%%ErZ^e+ z;rK23UFoEhU9y{ff&Wiuuj!6iE^_1z&{oRO&#>G@BYd___?*8@x3d#*K(xy!v@N>h+A~&kH5!O|!+ekxY_21+4@|7A& z%=<^~Ao?&`;lq_WKFl*Hbc1{gLxX0y1oBjPrQ z2etpHYz{dc`#)|~O=l^;B)`It;AP;KG|R67zqEr$@VfjKLxMLL5-d}ZU>8Gz<*|^! z%?~iTdr$sQJNzH0hkpe-{JYe{zdY*jM<3?T{)%HyZgDwrsxwe`e$a|E9@nXSJ2r!r>k| z|2A{l$y}|U%ns)mX{!<(pt~d)|BX2JwGztBoPJDKV?bDGZFK^MaaNUUk0ykp*mN6~ zdZ|i57fKe}R?t*eS6d%-xoY!_p?r;6bFN`jaZlK#G3dwg{^kP z8qjKR5l}TJ>D0O$b!)AtRb3TATB&snMYtirg@n8Wb<&~*8zVu@Yk%T z<>quV3a!W+uLWN9XkbR@;=J6Pg2LkLtenCL`Naj}hC@ih5vjPC-sa zZZ=kMD%2i{ZX?y$J)9k^8Afw$mgFR}y6 z8WYs1p_d7>&|~=7krXg$^SUv=2mz-OgEUZxiJ~Am-Mq$pj`>`M%;pR5n$NKK0pK45 z{tg40?{9z4H?K8c93kO-z@sU--Br$fB}0j;%z$2I5zS;a3)47^@nV&RoH$R2{eTKI1kKY8h&mzT_MAmcZ`3H;N#yky42<{QkrxkUB@{4;E`sK4>{lwnZ& zL-WTdF_}LC{<&uJC%`}7F^S3ih52g~eav4niRlFE9L>U zbk!get=h+A430opt3z(-sw3swI*Bd4EleF^>0{|@>1XM030V>>1JHvq$&w8GyTI=O z{ypH|2mS-#KLj3k!pFelPWW`QWuSJTEvecC$fBx4J~IyVmyrw5zW)yNKYyStOdVoD zbqFSYR%H_lQ-@ek6~cai{{r|a+HXA2qCxG+mZ^B4E%?n>&6a7vf8DVIZJB8~6%V9k z7CX>*5N$1%5_X`!iFu%feMWb4Ec4WJY(d2Wp5y&^jx8nXIsWFa&#|SB>C-I@q{v>U87Nwz~8qvT@7x z8cLuoGX@*CY|u~wZJa7fjQg8{RXaVps@XP|*r^~P-Oy&q41@JGB~_!*pwE1$m@l9< z6C|ZaCxp3LQ)X?{lv#g=XuDLR36|JI+oKXqu<1mbehfro67i8H)tZERG!hCn<6M4b z`Hq49=aw%lUs}Ghd~Mll`Np!(vfqLZA5IWlAh<#BfZzqe2Lh7I4?+Nh;AYGBI_Uqb zgFYsK0W7beNpV8wFz5?C{saAg9`vo~7}9JtgAlKSz7=JX4OY9=!G1tE4unqHZv=gZ z%P3Q9jk5+2_N_?8F3r{;2wgh{`_@j@t_;6tTe~3UgU}7}+uEJsx6nNbzul;t&=hUf z6Rdqy*tepDkGrVnkzSh-T7btftFkP&wxlcyN34m~Bx|xYg&e{-jltF-AoKwt1q6hW z6I2{o4ni^r%i7$Rt!dVw5gbVb;lwB$v5rI>v8G!yteF`8kqrXw;(j3X2O$JPLKsJ| z`y7TN*lAxCN1WsELWG`1=qfh5wxqtyW&X#Y!&;<4$AFm7VJ+66BT0vj4i|ZCuYNPnP^+M}K*0t7)K^O|cNgxaZ;bahogD?UF z+#Ts4WPp$fLKXvq-aj|)XIHz^|Vm>oSLFRqY6Wd=7r|Z zFDRN;R}-3670OJkE2_#%3Jq!s}&N=P6PAP z!~h|TSNTA_V;argZ++a<_a^HD)(5Q*Ss%7OVtv&57zk5AmoYr@&?^^dzPm$`MSK7Fsq>BC7z+$yZsz4|KVRo@=^3tWD zQxgZJ3{Fcuc^|`$}fhYTsAV;J?$?eyy*0hwUrIywZ}=I!44nNrMLsjLho?tuNd&kqwiUkTiJ6 zkkmoRDFf4n3`|ou%#h>+wtPbdrKY5&r6wlFoLBn|gMAH5S-!mIh%aYcb;bipl5wPe zwI0wy5_*n!RnsRS16zvQGASiN>o+wmEhRN6g>{{nGB|+^g?*HaG)dD`{#Nv-*=+sO zX0mZM-X_>Yn}ori)Fy*~Y^wo;Mi81nSOCI85Eg;37=$GtEJZ+1ZEOlHnG|YDNh}(b znHNf17@9gUsVH-9L#Se4X!epZMI~9;p^_z`*{78iEv!vOunsj&Nh%t5N>Zq4P-yn( zilVVgMu+msLIcxMi!$m9LsN1>CE0U}7B?;oEzAxjR*Wthi?EzIKGZl7y<3a`E+d`{ z@u3xSZtq+eVV6_KRW86Jku^y%x! zF^6O!^R3eFY3-PJ*q`m#Z)~=an%ISQ%^25gTec>4oui9gGmi1bcH}ulZr!$QT?jiz z-`%$HHY``Q**3wJXPaotw-wk5ZIf)1F%}tl*7+b@0K$bJTm-^e5KvCJ1cXaLxD15L zH`|J|E1PYWt=M*|sh4dw$Kl^W!vWJY0!JQZ3SN0Y#4ZPO|xw!2-kM(%4R#uwi@qVwpFO9 z6Ru;LI@=o5)CvEKsi})UvFAux!%Ej(M$c<)m#Vin+a>Dltp#sywl(Ud?|)I3K6Ho- z9o7$WXmu@HcGz~>Ubnr0xeea3 z?XtaX+iiOX1f2n z8wgLMR+^#BGykE@zkoJBFtqs*ghvguL5H6WwqI=r*bfMJ$9Y`)jcDU`4bkasH`#ea z8#@QW6U}x3geN-FM#l33ufQIi`q*d zyt*>A01Ng^!Wgjn@Z){#{n_Jv?fpP_8H86_Uv@bU$~weFQmVPq$|g@5Dqm`#cTZ_UP#LFKWMAgPVPx4sLsntZKA3(*5=Y zc66V$H`I=@Ssp-qns|%k2^OS>bCCK8hw8y3cO3ud<(QUu|Dw zKgWJ92p@y+DPV;!;d2na0O89B-5M`exd{w-^hy+tG4SFuTVlSaC| zI_dsVYf~Fy-J}z1uW|lvw?BlO$bN_YPWxT48kuU{JPoxu*Qin+0Hf==4ao|IMD%v6a4|Az`R54Ad3HSqJN$f*>^CY z-U$L)Q#Is%6FCv)Jle(b9)a*1U?Dd4`*-9--3@BLXa9ilAwADj>##cpQkGK%%Vz z;}nDwvAYf@Vz02}Q|$8}oc!}};+TqX;+O_v4;@Y%SgUM%rlJmh%T@rdJ55Ys>$3gSs14g>LI5Ql>}0z?FmbPzK(J0918V!I9$ z&oZFMG=O4M1SrP-2NeGTP@tI6>_9}wGJs+?1B!s-UG~HHpqQ=wM!6$kQ2QgtCk!e+ z261$=<5LjFbPy`ObnL}5@A!(z9XU+yaD2n$4vZOy4ia>8GmY+kaA^Lm4%NR^#B>+s z4(3aTZ$=?ZG*ld7esK=;Z*_7`=HDt#L~#T6uZSMJh!oR7ENYJwPRSW@ZxyG4I3Wrt zoajn&qtotmIGs+H(+y%Chy@@Pf;b7p$q}SDFq0l+pIU)k+b3mLGO{Q!V3Z0{zqn%@%InGm@V?itiu>?fi zfu$fKvnvnN$~j1lEyAAln2#WHU_^U(S?xlkT209ubf+k(s|@4%zjeEGmTCmWDA5>3 z7Ux`zpjb3XMf;*-BPh;M%?S{5o)O4*&edr=S3i}`)11o?@}2e024|zQ$+^I}(7DLD z*tx{H6vX);R)JUzVhxD3fJH*Z(?F~Tu>r)!&CcZ-_^4>h1zd~{JsXYuXi>hXqmomtAZf20bEGFa&4;bCu?z~Ht4xM+Z(&6a{`A!VwLdeJJPVK_U zF)P{Viba@i0nh0;?U-V1G@I+ai3kj+4+Nh;(xJyZy;mrAD1^S0b|^xX}64HOMuXo$rmB4MD{CPLv>S1M$}O$J>?W ziuk^Yw}6Q8p6zT1F6R5{N_SXk59 zP~OO@c((V&FjUjWekqI%6Rw$>c(6r>i7Ce*9e0q$BfEwb zwk~Vys~AnWIV$DmA?2!E)lB$9r69BZh_|bhdl*CvmTW8gx$0bzoTlOfAl?y8xrK~! zi(HFcOI%A`%Rsyn#JfSf2gG|pye~qzIcf+m>yxGJL6^vJ=zI$YTKaE{BdrqYUXm+O>!@W|F4*YzreT985;TsOKlg1Akm(4#7a zUIg)Z5MOBHSMIvmwaK+v&pIn2z&{4!v%u8@_ZkY=s*>Bal~L$+*B!1qU3a;VHje{V zau%NiaXW}lMJRMVEnsI0`=ly`;?iehI=`bNkru3iIvIbe!>mQU8TgC&s_pDT8qaJVG0?dJi|k2d)n>GoJXGew%(--3af1h{2+5Q{%ZlaeW$* zp>_c)t=%4Ezh)a@uj?DvKG%NNw;;X>;!Y6X0P#%_-->L6cU(WRjqn}}flBT(Rbidp04v<4`pF5tN(GS!s^p_y+QEBr5 zh+ninr0&k{E|Ej}8Hl*++8t7NFQkq8c=rkJ6WzVteE=(biywiA%AZd_{4`7(>=bLJ zuuetHI^3Ezb6rKTX%i;Pu^vr#hDMgp^`rR@lBKn|)t#Y}<#SzNagTLRG4;L0o$DUw z9`Byu&T~(6=erBsh3-l2$sm3OSWjHs3*t8*?gMc@h`6&+R{kEuA3*%^7WY&wDUy4J zdAoa-yV%srUBU$8pHK*9Vg4cpSiS_}?;yGHUy|qlKiT+%aH>wMd$E8eYscKE`kz`# z5H-{4{|kv&-OMx5eHw^A>(^#C^GtL%*>|xY5YdW$Nc)Y~=F!FmS>`?+WoY+u5DzrF zQHOP~W7lT)neMZhBs|-_N;RtdhLW&b^(qt(Mcseh^arE63)~lDvKaS;?u*=b3Ht-Y zKS46BcVFVZ)O{I997sG!u9Zo%ax(NqF2FR5n8Vf;{s03rD(hJBk1pYl)Y8SZHA#ty zSnGg=ZLnC2o+I=WuPP&VU&9vXT95?91I^FKeZ9K{r{KQ9-3*cllGNf}@7@3s0g0|m zom7f7a2jT!v81AMPE);JnLxoHq}tNj5>EZTUwU>~~ z63$0zjp)x#hzuYh7qPvew4|;)?2PX^(U|h%?kCktk^2dDDUw+3+{12#D1PmJjtOq= z7m+Ev?0yBAf)vyQHwjJbaUgXAscRHZ*x}w8<_S_~knjfBo+n^Bj2qp%-S4>Hb?d#oaL%qc`f zYWL3?laRVh4>8dMV}Y;&Nfco`CPo;KKn{5%55YT+bi7WO9x7o5fRxbw&f_tAEMY-P z>JL)SC_xHKM6cTDaeF)-ugB+!^Y}sP1=0y1od{BIkothsH_Wj;Ce_^mJ67Etrs;x4 z_^$JBskc1|>J3Q3+_^DsK%NwhTqvlk>g{9U03k@}%fw3ZeQ?ow=TtRz;+Q z=tM@IlRd*dBRnIKU>TlFPZmf6K^g|q$si@E6q^LnNgx%rxdVAdc}7Q$QW{9fQAf!$ z4v&&&yk~+Z&oj}J4^j$9gFqS#(h!hRBgDew>nL7fr>b#cT4_~fZCztSf{|UA9C&SxgknJb#fe|`6x2%R;18f4yB>3)6i-uhjkG2G?;I!GBHWrBpH$p&fECeI2@yz-psIm`Z*sh4LpNTYSpO3DQZ{Xu_Y za#cQyNQ}YL8)SlE)RK_8NqXvWrF8w&ov;SefJBH zP625w%0mNONv>`NEt@^-Q6}=VfHbbzgA&2`j>$xxn?1K6BlK)Sy`nUMnG!r(P_HPV zdvOfwv2AY8k^S3vPkZk2+^aHD&pj$5EkH)<*}}AoQeKoyb@W%~c&sqhP+p81yqF!# z-X-;OO8a-i-wUGiTYDb$3`g+ahFJ2XXFIAYr6R-<1SAPl%^+7U1F5vVs?zg}=h+DO zmw+@i8vI{o;Qxx}RnKdl9iE+@*Fl;F(hQJhf;0=HVvtUa;K`$&UF_6g$J6n;HkCnO zU1>t83(M>clTOAm6#r79mczizcN*%?)?w!FX1;5epoPt-HRyk*gFePt#x=G|MvkSN z%6iw8l*J&`Z*;%sch4V4s^7dEVbc14_w+8CtUIWQWOJZ9G5 z?W1w*+L#>Mo1oF|G@W+SjzKAMSf54B?jB(p-UOYLr|Gcb9pcSE>y$Uuo8}$rJ;^)F zd$M=9cZ7GO7a2n%NKGIu0BIpei$Gco(h`uCg0u{z<(s{knsv%M+B?RZW9sF_Dq|p> zuG^!fl_0GG>1@U+R{#HZ1COqi@_)O+iFX<@5-;M=3Z0R7XEH`|wQOTQjD=vHef2jU z2<>j^E%R0&3-KcQL$h}dNN046g?Q(CYmfzas~8J8ld%wQEn^{QosGdlXxE-2d$eI8 z-UZ&pDhu&0Qd!6vWFcPF*HJnviiJdp{N5D|^}SeC#Cw)^6+`_CbkxT{VMP5aK)Sp= z>U-CCBV|RTOF=p>8cDFM$VTs4@5SCryq9_}^Ii_p`5;{g(nTPx1?ggtBI$FzE7S}v z*s-8xXmPhf61DV&Ay58WP!b#dy?1C3a+wYx$LP}%nN(}HXMKLHFysy$LoRC-Iuf0o z%lnXLxc3q7qe!=hyxSNHK=B48f4odzr4kPRd1Dj{*zSEQ!UEQVv@V)(FEGNr=zYoi zviBA5tKQc@x*DYGK>8m@*MoEeNX=mufIYv#*fn-_Ewbyj$;D8QQNOsjjwQSZ-v|CJ z`gy<9SV2o{RWg){mpyG`@8oK z@1H)Cj|1r@kZuNP6G)pux&@>yAl(WQYLvEubo*wXps@rW^~rL+sh7{nSi&6!OTaB~ zKPC)hEa8FwSi(Q=u;5dWCHUe&x>IKfKFkS@x>hcc{V**nY7W%jVV2}StA+k8 zWbsvN$nsQ7WbxH&$YNMu{}p6uJKYGf`090JL6d3_Q$t~W1grtW)X@od@{t@?mAsO}@K*_xSGh z-RHaC_kiy~-$TBKLD~h<+aT=*=^c>X1!)gR?}79_NFQwSJ*sJrd{6kEltv)@<0<>l z&>VdV5{7+NGVuTUKg|(l>^h3NMXKh=$6_6QJ3;!$KzA1F=zGhz3xDu%d<@bj>hF(H zbChn-@jV}lb@U;9K5O=U2-4>r#P?5qEY{J-VjZO~RD5T#j?$Mg@qI}Do+Ep;#rJQ0 zTCAf_jdhgvGJIz*V-r#Mj@9VVP#-y8Xy&M@t?yk?QdVAASzTV=znl6U`&<8$m19LM zQB~dCl4#w7?;yJ{_#gC% z0Ua;0k3pHB;)OcwRtOQ-TStfk#jbu#>s3})T!qOri)UBWmd@|ph)zBIyERocuwRY+ zyH(ZWUuBCLqp1^@%y@U)AaW>fNL(sXhnRHU{X3%$k%7=C>YNleEKD6DfrKX7_SDH> z)X9v?ip!206*n5BKY?&Scpw50F-#rooz=C)K2?9FaA1kyUifd>1LCyInuO@|IYxVc z5l+(DG!v(%)Ffm&i=d^cWv93$aZBTt#VwCJJ#GaM8xRK&ClD79HxN&R2$iZ)20PXx zMtVeUo~@&7(V2?XpKVA$qp^N|{w*mg?n+gPBHox%RNS@d=^}AD_2wVL={l^cu9Xzk zX5tZfD(+hC43fAG>tW+Is;6xeQu~&;EojIlowUsOwE5<_eC?0n%#KJ92_2r`~Sx!+l zmCQ)ia|2cnM@y|L722$;u`T_GA5CzFUvn%Z19Vy*bLPAw&Lu)bzwT*B2K-GTdL%|f zKYAVd6@NUt!Q$nY`EHXGm53vN3~!IZ{?7g`5h4x)f=2Cj4xxT@I^5_#-hYDsM1OC8 zA3qXs5Rkz@h5$(gk_KdGn35hzjj_az)fh|T>hdqyul(s6z+!RO7~Tv1QQDb2S*PQ% zgkrb$UTEu_&`O-~kJ3-!$yga(_uwe5sI0+QMJ=CPZ{|CyI*s;GrEhGzxpi>gN%iVN2(?_@7~w>|=k49yB?P<<(;`7_wM9%ElO;_rHRf z=KU}DU-ZA^e;LTBKuUnj22#4g|Em8rF44aeNEr~cFyjudUzs#Dx4c4)vC#S|z$%OC zKeNhbH_b^$i+NG5D%CQV-D&yE#gXw$qr2Vy_gQ!E_}}&K@xKS897qL_IY8!aF!d4- z(sEO8)Sw`{M9W(|Q==R=xum|52@z_*6iY)ewKWOr=C!@(2k^|fmzv_Vs>@b@cxZ zq)n@u8)d#~nrcWdZLC~Sf@DK-W|dcz;QhLlk9WhU+WJZPxeYVa$1thj+;R-=aQU=< z<~P+KJu#k6_Y_WKPRW_I)mZ2h8$`e41}q|p>`Qwsqokp{OntGkadCb*OEHfJBdfNw z33E9&YLUWhQ)z#t*P}vo4)#`qdj|J5E8B^W8)X*4j|a7+_1c(?#@LXJ1sxa|&K7h~ zU~phaAT^K{7#cV!Ff4E~5WGaL1Ohu^seiK1uEJn<D5)R)d(Y^-3hE3wT>e>E_yo`FR$a26ArDof|**4EC~ z2Bc5m=smYOT<7vH79zKHjxi@=M-&8#Ono;73gvGClLJ!%Qv=h0oCEwCAm;(O0LVo^ zF5VcJ9+(lB8JHC)4j?FB3IrM19Y7F{-vha1Wl}3?FHo*ad*>Fr{wn^vZGe~&C>FDV za6tFKBUtCh#HD6p@oR>f06f96XK7Cv^{wwzQ8}$y> z7P~rZV8APHRpsmf1zEYt_-8|7Q$@u9btAHm*iY=P7VBMIQtZn5i@E4{gE6$&$6?#n zWY55|z)B3=2rLhr9ze9X49Mj`u2>&{z!?EVj4OfM0Hm1#K!0_RMhRyfL3M^`?7!Sv ztm2AMdkb&`rF^}?S8X#8#SqJ3$W8bzt)1O@Obz^eiW8;in9=Hlio&>H4 z;2K>E*A7}}zXQJ1U zA45YM3J&dGj@h*_g^humv|0?t2b%+1QF;p864(;BHE_54T0MOcLeSX z+y&$&AU6Zq1mt$MEkbR^u1(vZvtI67`%owJQSOUaj~g7a{aib~jgY_V!$!fjWKMa5 zHpG~VrER%~*_L|*2u9vVw%p@^ZDuZTF_0}lZUKHZZZzB`mluA&qF=VLq)!K)W837J zz_UP5=)bKc@I2clTRXZ}X4?Hv%Z>ZVJ2^cq_0g@OEH#;GMv`fjt3~dG7>* zWV##3JwWaSavzZUfjj`@!A*e=0v`rG3Va;+B=BkAv%u$pFMy!(@nIm31Hl142jqDm zF93NF$V-g6C&r+zek=Ks(QZ3Z$mrv^`I%L9YM7`S1OJn}#c?>yY3(}UT%&=Jfs zgpSwO2S)`*2gd+;1IW8T_OKR?Ml1+o*7fG#I3RDfUXZ-t#9%&Kkhg*C0`iu+Ape{+ zsEP%Xue>PESduA06un!E1;OdT89;Ued529Xh9H19{wQ%X=7UBTvxB8=4tB62I1iUI zI43waSPA5PARhqvaD8xouqs#$vL+Fv9zZL&tMx9g}NZ#nweM! zEUwTVZ#r>Wh{Hv;(q4GJcw^osOqa5HdMq1up3 z$BRCe-z#NywT5NO((^ON=*zstv~DZbKn>m+ye+sjczf`U;GMy{f_De+3EmsLFL;0O zf#8F|hk_3W9|=Ahd@T5Qa9i++;FH1a!KZ>x2cHQ(8+g1drm2X_bG3BDWL6MQfDe(;0fhry469|u1Pej5BN_<8V);FrO# zf?o&s2EPgJ3+@ko8~iT#eej3ikHMdUKL>va{u(?GJQ(~fcqsUL@Q>i1ib>%VUJ(>g zkrbj(MOMs;MX@S2#jZFMr{YrFibwG(J|#}^D*+{_C`!C?oYG0@taMSjD&3UsN)M%{ z(n~pBIYBv5>8dltN{aGFh3TOjV{SMapz# zhB8x`r4%ctDkaKnrBo?X%9RRbjxtxNROTu3l`5rLsZnZ`I^{H_UTIJol_q6@vQSy1 zELN5%OO<8Ha^-Yog|bosnE>SL3 zE>kX7u28O2u2R-1S1Z>j*DBX3|5L74Zcv()7G=G%LAg=csNAI7tZY&?E4L_Hlv|bC zl `${os`%3aFc%00@x%6-cH$^*)S%0tS-$|K67%45po$~NT*4`j5oz|@qD}xFUCvpB%a30@#c6-yfxkyZ;yAxJL6sP?s!kUH{KT?7w-r16Of;Q z`~u`xAP0b;nD-lyLqL89@&}MVftrAFKzX17P!XsElmMkbWuRuD7NAz3HlTK(4xmn; zE}(9}l8)31)CV*Us2^wmkjGO6Xgtv4fOZ1f8E6-vU4eE3+8t;Qpgn>10(v~q6M&uw zv^UT`K>Gsi2ed!X5YPmm1Arz1O#+$>GzI8Dpo4%8208?2D$q2bLxG+IbQsW+fer^c z0_aGf=|D4pW&+IunhkUm(9uB00L=k<3ed4YbAgTnIv(f*pm{(i0?h|n0JIS3B%qUl zP60X<=ro{3K&Jzp0dywNSwM?{o(i-C&|{C50xbjd*P|6c=K!4xv=Zn%p!0!N0j&mF z1GE-s9njN&)&p$-+6c4>=mMY%fi42N80Zq9OMxx}x*X`~Kvw`=2^4^y0rX6uX8~OW zn8}E)2D%35IY7?^dLGd8fnEUgLZBA`T?_PLpqBu>6zF9@F9&)B&?|vn1#}(ItASnv z^je_T0sSA)>w(??v>9j%(Dgt!0KF0DMxZwVy&32xpqqi-0(1+|TY=sNbSu!?f!+c1 zPC)xPy&LE~K<@>5AJF@OJ^=JVpbr6k80aHF9|igt(8qyp1NsEeCxLDU`V`Qofj$HD zS)k7WeIDowKwkv<63~}{z5?`BpsxYl0dyzO*MYtP^i7~|0o?`kZJ@h>z611KpnHJ6 z2lRcQ9{~Lj=tn?52KoumPl0|0^mCwJ0R0l^S3ti8x)zc7W^z*#)v2WDm$*kbNM>f$Rr40CEsy1>|^;j{~_A$els%0&-W7yMf#t&H?!pkjH|Y3-UOS$Adfp zumqAk5#)T33qURec@oHzL7oEgRFJ2ETmK~PF0p0-}#6vS9_+L`b?mGi`Y#5gb9U4OPEyxnRl1=Pi0Td%$<~#omH%J zajnS{)Q5Yvf4E>$UfzWKLVP+eH@$Gwg#2;gf%Z|~IFVB?uuLc@D9A1>&P&f6TRbj( ze9oxsg2H07s-WICdsNO;V^ICoxB7?Q${v@&h7x|apg3ndQx#`T$}B9-m^3~sH`{m> zeQIz%IK+mA@{W`FTLD5Z2NuO3wtkJGuO3tYN!`^$q zMRj!l!=MuP?!8wROPa8Si`yF=(v-3wN|OZ(DH}jkA_7uu(ZrM9d+!(%qsH{!drzM9 z-h1!8zGvp%xx07Sg%!>7|Gm%0JP#YP%$zgjJEzT=nT8M!UQJnXeOaigvZTJazA`)s z6_kcInnp=uWfdzuKZMA_rUx79D@z(98!(erHpZ?z2l*7&G^o>6O$$$nE?iMs8k!TR z4@UH>E;d;OQ6-fPrL|=$?t-+iE1E1B@5-t`JtC(pFb@ZywmuM&DX`(2Lu;C%YbtDT z&gN7G=Bmxdo857+2k}u#H{g1ztf>eE17zLeI%^;%xV(4|pf#O?_^_2OFN;t)HaA4} zU(|{rTG19=u_90ts4s2^kcEhq2;0a3X^G9QvPKasaoM%eiqoUnso+&8gk}VaaV-Ty z<@L4ICuAv_ai~^DEV3hMNqd}lEq&+)W)W>oPxfvVa%TAt~lh_!W6jE0rfSE4|f zRoQ@=N983;RL1F4T5V4aC#GUFqj|;<1vO)NHZ5q3Ns)|Xh|DKre;zG7NmIBCXFb9^ zxR4gvLsNvckVqFs3OC>oxE@V8RnsbZ1i@E^!mJb_%EvJLR-MNYO;|t4nIDRD{SO3`s*;o~n3_-bxwRG&L&g zX4KXMYEk^en{a%+7Kdr7rdD-vX>D*`{5m(%I#F$#GZdFwXbr1|%iLl#KZdGwJFS$F zJOgh>!3>)tI?R}RjomLzCQ)`TrkM5i zVK!GsKZzDq)|A(xL`HLPR$zW;?kvm!>Luyq-S|c+N~4ZdwF^lGP;)2RCwTE5YXl}< zQQRd!ac*;8>*CtZ4%}go72?CRZvODCsR>qN)G+)|JZ@@WG)yLfM+~q56~hy0ti)z_ zw98xdLA+V94WBP)Ux;~5p$hyD`Bp?m^+`%KZ+NPu(rdTD~Mc)7}z^q<3lU>_lqEo}v#Zf&GRj&{$dDwyeLsr)`0J1x9XzBEb(&$4{uT{1l>(Gg1t;wKeZQ-)$;m$%w9s>{<55d3& zMw2S4&^(Ovm8VRlwcO!a=(Yv}^>YGf-!WDsm=p|=SQL6rYN%|AomR~ZSH;MOJOVTr zL&I35Rh8H+W=~CV(JB$WSF11^oivX1$V*FG!VF~Ukwrr#Xi2m3S<%!3^OP_j#;1t& zOuZ~t8jp1$ASQ;XV_Rx!Lv@uZy#iWd*Ki3k5FvCLF=U|@+KU#lh6|Bl56!J?m=QmE zGzAY}A@9lIN@!DKtS!_qzfL7QotBvtE<;0cnl6;mB54st8fM^(BM2L6YpWtX;VI>` zXau5b<)USpQkAq+1ftcLNp*1$CqIM%Jj{00G@^>ui5MkB5FG<-hC1=Jw2(2}(piB( z9fm(D=MYDn#53w^)WY?&a6z~*&dlt_S}dqQ8l!xT#Iuz{7;4B$c3|23Hc~1P@T?E0 zcu?aB+Ql%BR>=r6j;JC>0OxBf?4Lk|$e7lYgJ^{aNMqN~RUu_!#lWUC)AAAH77WxC z(;$`%=}-W}?X1TOXyJ%CW;3Cg<3+U89^p;~aYhwvMZ`{~91`8s#u|0}Vy&m8(RAk) z*Vm9BTa^}L-Lzapmv9IoU{u91W)i`qVWRZn|1?Fs`mWYs$M<~1^>XA6%e8d!nldu}<3XC^I2A8HBP3w3g zd6m`&$TAFbA&?;9MI=yCSyNok;)_#`qm}oJtc)HuibGT{RFSh$IFS~#YYNt)f>UQY z%#5^-RXc@NGe=en%nOt@Hc)M%#ywf_(`oVaIK>hE;XRruXVJ2*$g<%!Ac%;5lf(D8 z<3obd>g=3LYg!^}s@-%4@68bfh~Rtk#{hRz_s4a2Htp$f>_)Fq>G*U17=C+)ryw zjbx+UiVWd#rJ9Dy^2)Gj`w*>Tid83u!Tu;My?dKaRMBP6_=GI(5{rIj?YMv4Q>)&>clmuXpB zau6TvXkBb3S4hxJNVG zkfJIu^CcFG_h}7NRE_#TQ%w3F(bD@wl~(uPam%(5cO}t*h+u^}vIO^Vsi6_xM4j?! zOj7EO+qRJUf|7DawJJCtt=8)B_EBV;RN3=2t?Gzfb%=rfj@C0Qa7VVGvY{$KjbO&)ch(;H$VFsvd4V^mYWy!+ z6h|vY(Hd&u6Td1Jm$W2Wb&pt8gAMalO`bNImfJI24!2U&9jS&uakbLyv|XZ`t!xeB z$_oWiDVNl;G>bHj7PW+FDn&6{03{gObZAO9RH_bSnn25E4k}LvJ{YJ%JYppxeHa+h z#?vae7TCzhiZVR%kyWQ!xaxUmWQq4w0&YUMQH$muq;3s?P;{IC4N(={j6FMX(hD$EE1n>Gh;xobCKC& zE?%$z)2(~WL5x23;p0O+D5$D1G!-f?D?E|rA*!fF^Bi27~Qf!Nn-__IAX36x2B4SB1US)HjtWEn2#Yk;w~dSv?(wXg6!Ti zQnM(jqJ&zdh%PEvN=f&MD^$$ZP&(Pe&>#IC`340^-G!LTWlHk%TdmH>eWd4N)c zHAE{D8z{A`1gMqGM|%&AGa5%LWy3O;*55aQ`m&HgsfI~M%m5~~S3S$!N^45EXYvHm z1PEN`6_`PS@&|LoFwsbzumdTz;b24tTA3~ksMZ9kNLm2XWvr72Q&P5JI$2dUr#e*C zP|Iqy(pvsuYLN!i2Z&{%*s-koLRvj1f$BIT7$>Vn@RwlxK~2m|Yo`?U8-{|sKx^wz zxhlDII6bm*i||j8%}bza!wgh~Wx?WdG8(v^!?W2# zX$-gg=(17b!Lc#cPwDs)XiH;FeJy5HRn^wkshCjVOc(s%X+Dt9>%9?HG!6DT)FNIh0D&V$^n888Or$C?4z7%*(X%Y1Jt85wj{v zR9u22Hd0$jGSg_9?EDahXVqM#w2OwPhAtm2YFrFx%P8UeGR2Du1rY@is_jxrEqAEF z2@@go(Ad$2j?&gs5<^aC%z9T0&srH#n%#-P)AGg|t%YzEB@wltV~%WHaS%r_THtS? z^`o?mwtjF135N%28r7Y;v}YgcKd9|+(QZ5yVa*>05BtJPwBk)XNDng#M{Sitvj=;daN3~rUM^U*6^^m9?1C z8r&#FybJ=#^ORhaaS*Y9H00!orlOvbi;8Z%L}~4vSkq)$k&Qz;n04}1N-4?=9=cVL zl;#GC)$w|Rl8Radc)Gj0r>hmcKI(oebusIiWG2^ZR?*wEe$-lwU0?Bi=+IOLD}sR< zRpGx!sYJ=CC@N$@qnJlKR@wg;ye*OTA*EBJ9pY`EgN_g$7Yd>+L(l)nr&-vje?p1R z(GqXO>`}ZRwQYg9q-}BY^7gKt!HzPXAEJA1xL*~RQ9P#-z0t7GjA}Sg5q7~pr%al5 zFq4|bs;Xi+!G-naE6OMe*>jtFNaB>at_u@MFOEjhqNU_ZuZXLpwR~i4(+9(xo#3cpeS6l*tJ#qSrKm z;Iuy}*{Vdz%A!FgjHyd#i;@`0473HvIUo!_%-&MM38keatvGj42O34VOy#%v` zNU%*Cc}!2G1j|Q25NXjK#vnRr#H}PIZ483DQG%r-XeD)CVo=!c zI07~_*^;134g-)t20MVM4W*=4P#(1-;1R@JxYF7x5|9pHB2gez9cY+QizaP^zMV;_ zC#<_w$SDF1)3EDRq*YT|39sacL09~Y!7HMUl8kaO69O+WQdsg(dXSPySRh2U3`4aj z!D}1Q=V!uvupFO5>5pWM)#0X8buqpDfPrd0C3aAv6HcZ?Hn9;*N?ttfh_kgp1dM9^ z4>G>f51`DVoR|0m9Kno@1~W6!^u%$)#90!t8O$g|8O_|5UQv6Qv|l#HX~Z+sfcfJX ztZZOs4%1sG;e>^8#N0NLXf&oZ;58C+aBpAhZKbzSx(TCMT^V@Fk!-G#>{&t?of1_l zEv6)+A{|2yHXVb;nprh?q!&9*z@m~{LdlK9EW=He0H(vs=Lf<&`RSb_ZXor*859_j zmr-)tE?gRGC^?)Fbq_hckJ3t5^F&MsrA1P@QT(Z1d-{s)Ya5={Z&U@}>g^jgdL0Gc zNWz9~EhQJVQ5OM|h!8M^$DF`C^mtK*)T>@(`nqA76iuTH9cQ#Ai8VZ@vc91at>H3s zr&*JZq~xNak3%#G<8o;Al0=~x(ctuBD7E;wpp8>!P}3$gw9Hy|d?GDVY0aoC!!#zf ziwv;pk~)b}iyhV=u59$M)#Hv9o|(YSNj$t$Ts1#fsggRCl8UdoqDf&4fN7d)Ojcn1 zJA;ymzsR*?C0nqSHS{uxP;GfRCR*2)%Nh8L;@Om9d?^&&u;PYVl5n7^zhGc?s8r3P zN@XrgUd#dAgA*B=F_>B>_rRbNF9?7v8Y-6w(V}ao`kMv6@(fHw? zctk^Gjq+U}s?mfy>80#ygY*GPHolJ)kF4BCra6^?MXLuBU>m~wis>6h*lJ3iIkSVU zl#Scd>Ikoew01t-iAAp~4EW94(rR@@(t~Wo4wmC$WPcLfA~ahWT(?rP@qOf>#~MSm z_2qauN(hfZsoPQM*HN1Bl}S9BY!GT{1Gsfqr!LYPM>w(((K;0xG|(tpQEUiqq2%M6 zBAVu^BdZwIauOy6ur&z2osx|2#>XZ}!s5ipL&JuVWo^8R5{xfZGz24zFxqc&y+{bZ z3_Ec5QgZP7oeM}1tAG$9_U zSj5ljMF=8jc(Ifus_c^?p-w;*}wc)|-~&P4yI7cMDxunj)=kp2v% zI(-PLYJMuxCH8}yt3vNmqSvW}D(i~XfYfu8oG(FgteFh9FVfmswZUQ~*#|o)-@T^Z zdnRZ7kP;}OFpnfM=_dUZT0dvV`f5$odgP!Lxq42$>L&elN?{*z*+F}&xww-Ib2|;2 zvtQ}f&Z;$Q$b~EN%277jsmXy^oUAi%QBt)Dkcvr$CiRkQ@f5ltjHRP9$Ed$csqed8 z)ETW0D6Qhbv}kTAjzeW{FTDdsZYb-h9HB+f;njH<^;7S>O8=PBo3_pL$|~nz;(n-P zeh7z=r3|KjMyZu-GqvhKb!|Q7Mq_g;s2FG6{gM(aO_X3mWf?|Z8!J#1Vm`PU>Lq3- zqxcP_SePiq@Br4(W6D2!qFj;w8$)+An zSjMDtbw^KaVr>wGHxdhx+*>^EKqV8S{41qgHbTn8Myv^zB6x5El9Bv_lAJvJuLNzy2lPO<=yKz7;|k+S&>_Wk&>iw` zJji1_j5PUh&@E9PO5+K} z6Ul=-V}4J@>-~E`cdYUt4?a4bOdltf5_$q>5BAKV_MMy^|02)OZ|!KGI%4noM7 zbbX-f2im?eDM*U)$98RgiQWzeboIH&lHa%^i`Pw^Y& zAl6_ugHQ2~OB!$d0^jg5ehIqc!Yle)s_Wv<71Ipg8-K)C=Z!yr?t}s3PoO(-Xf2>V z|A_CZ_hL}F1D~;oc(6?Sh8yGYhiP<@bEEN3<6nHf@gGx?DcOXN$D9JX(_nNq=*|G$ zS)e-ybmwg}jWMN|b}@}L=}epnACkEMboYYp9pI({HxsynfosvcsBIcAzvrwwHDs8x z5KnvV<@5Q7e(&|QF7CnWsN0)6mvr^w^~FB*a#H%(b=yi$C%MG9W0kMBr`3l~Nc$qM z6!zi?QsqA2i1)iqlN4^JhYWQ)gj*awdnkO)3>gB$@QHeHTX_r?1M2Oaafllg;%5)v zi8#dNk(!$AmoEp7!$(s1oEtLCAEp!PQ`@BZai?ZDhIWPF`5^<|(mFCMAb)}dHjLzA z5N`*b%{e44JmgmfO)irk-)c3vO&*iigl`gE2)c_vcQNQL*b9jVcw?=4y)3@mmnxercwa2q3d`H^0(X1^2k(niVHxb}>8B6#&1r92 zQQFnnN1j|IrFN|>DQ)gt-rTGG1GOzod!sdG!l#ffTi4g*&zkA!==OBsfqTPll_j

vP!{<0nC8ko)T@Jbp>-p=G>@a%Hx;;rp3=wtbwlC;gj1NOcd{x;S zT->z+kGU{vvrIvh2c{}hwW-EbYpOHNHr0dfO3-Zt-BqC51iHgN4s7 z$^nncvWBjz=H9+pon0$BctB-x;m?yyKw}_AB#KiqUlb&oHtBh|5Bvf)>dErwWqEV+vi*6v z1x2~J`B}McvnRKpz?+km=g%+9Ey~Ht&h_W6b(;^(D#*$8=J>O6@{0=dvx~CwbKK^v zoSYnQZgy^dUO`??ZdO57!P>Qq*D{&c^(wEzA}otsWNx{+IfPe!uHTzen3I>Em7kka zl%12EpBS%PY(bb;zs&1K%Bzv~E2|*PEH5`JoAfImd1V(C(Wc3xqA^blre<@*Z;cPkbvZMW9SylxHi%F8M6X6O5}3v!AIva_>_ zijY@9mfx#{S*G($=aa{@bq|8>A<#YYUl)|D zotK%`qhVx1dHwJJkLzR(ZHX#EBIFwtd92z-)3rplU1i#2+HBfly4tkWge(40&^-pa z$3gc5=$-`KQ=of#qv<-+^`;w4H=1rT-ArWLGoX77bgzT%4bZ&_y0`w%%eMQHkG{fm zzv%(fgQkZ}4}KZS_hyh3kbf%*;p zl1JBxAH`BuWLX4TRvtcH9`R4a`hQC1^*rSjL{UR{Sy{P7URs6{$c~Vo&&rHm9GX$SH`|||n^ z&M%VX%r-H4QD*e=(2NSb1+3wDg(x{>IlWDcUX>ZWN*V2mLzkOHWMy_?5gDDrJQTe6 zJp9_V(zMTHX}}Qwmg()7av~?+Ta+I$O-LXQ<$hLn_`577Cq5u@;zQ8At+7iOhfhsk z5s~qk>2uQ;CUkS&1>Jj~dmnTkY%qOo`o{FF={wM2?Y}_xH*m@Sb&(;?6m*|~?sL$60XppESD^bEbl-sPThL+uz6TvTX+MGvowT1p_Y3HL1>J9;`yF(D zfbLHmxQ41?&(cQEik9*wfBzw#!b;D=<@HVVRV|*jxt@})-ljuxyFF#ip30m#P4gF) zdaCj~g{zC3dW#o&irYL(%T_ln3e5AYUgViwjMe7ndO8E1?!e5ZhWTZl+6A7%n$=Cg z+H6mDwkNQtrD@*0Y)@a8rzn`)G_!cNXXRW^U1N6BipEmU>Uz)0yo#o(qQ#zh%RI%4 zI-By!8$2ry@hn*qY?|NQ>6zc*DfM?Zb<|~f^7=h>y}_pPij|(qe$V25{ zPs6;$O}&Ajr>xu4SlrjtT-@ksp6_W~IkTyyV4P+tjhD+Osgn)3IVkQ*mv* zrz+dCa!J*&)~wlW_MtV4c?@3A{R3Rm`XoDl{klCB86VShjbY>}=rre>_d|(qE-)9G zi_CkO_crfi-WRx0z>NlO3~(vH?E>6b;B*_!)6CP&#pV)osksa#KF0yKD{#93w>xlq z0JrD=b%}4TMQhevXP#}YHwVoP=0@Q3zzM*O1I_^41mGsAV&6QE$`g*K@`PBk#Ed1Y zztEqDR%*6CClAF7N?5=8Wnn>HUKW+b*@b=-yeNNB{ukxv=2GE zu!b=oEVCM~b}K)x$Xi%M4OV1WSXhvStk8V+`g4i3my0dU#!kd!g+(>2a?o}UTYcsQ zGOyIQyt1h^8^tS27XH!Q8iv5QK4T})6xBk!7De1s;L9cJL2}N6t+y4 znR^DQDJPn@*+(kUuEN*6v_6ic}4Qko6RfDtIVs-hnm-z z*P0JAA8uY}2H>Uumj+xqa7N%vz?p%w0G9!r1Y9P{=EA;y&+0}`e~!PYytK|!w8ArQ zc2-mA;$F|fTu;mD8BNV)0Z;R4Ps_3eO)I*xQSN&B=4Lfj&&=}l=XqKx7BQuS5ggdo82lw&|5^S*G^u6NJiN@GlS%GP zNzOo$C<)QU51W5}q5*OX(0GmfGKY}NLtTNfjqpDxzKG!;rv8#leP6Y~+dw@lc7tD& zNlsJc5+#XTvvPC%`52qXp@9n8;H)gvLVoihHjxp}#{a)YzHMMbD# zvM^ACv5UfR^WTzr6-V&OLY1NT3c08y$#`Q##!I{rH0p^Tk(DjW+blnN7HU}x>`u3pga2~8)%=(F zpJ?}7`IBX|g-_50w+I%|GR`vIVz8u=6~7h^vZn>5eGPDRz|{lS0Nfnl=BZ1`Vw8uwmJW9VSxUslQT@n*f+7N=oILc|i2o@& zr+EsDw#8?&WXPOmQ%=P0$;;0}V?-s3_6KsxLp_?UI=nggSu%(c;1phN7OTuEsCFs= z&zc3hwvCfh=F}LwQy3=h~7j zGn!8s4eeYDUwxdJa~s2Qfu%6k3d}{>><`a#ZZ=Aryd0Dj>bKcNMfvgywCsy3(1HR# zgex!{^k*DOEEVxrprw+<fsl-~7lI+aY|C8BJi4d{fNKSAfx4(I z`&$l*yUoDb+iF=tR(ArM2bK=YQcI_$%hGLGMpkzlaGk()0oM)OGT?f`tGhq>=na#)`&MQDu71u#tZl1r0tTYTZ`7!XDhw)H! zQu2xvZzdmCWflhFQ8VP{;9L=LnVpTHC0wYqbYXsOk*XRj>ttT-@p%!mU&AZcUx5A) zF~y^KVNngQB7b2{ST$IVl6ftO&kOBq4~Bg63JWn#o>!Dxl$(R@+emmFC-YiLc}+oS zg=2@rv-7CNN1cWm4=r(GyMMU!^6!rN>_Il?CtFU5wFKVPAb$SD*Z9b0o9t6lSZ3-+Yd@Z%dd(^h8$KmK!a%ViKC=Cd_R51GkPiAx3g0MSeS)Jl{sH@1t)~VD3D9Oxj=`RDe7xfrs$%J|+3R z=@>LHwXqm)PG&SFA9|?YZT3?jQ|RUApxY>8<^Ghk0m}ox0VKD`-#naj{$=aD43Cdl zo+3SY-13CwN#KqI?kM1nzTEP(AR)9vlVmZ&6KnambWZ#Ti&s}3)~67oe11X zz@4J@_XFBrnfAw+U1E6|DU<9HOgFK7o^(E8_9bO@@;dKqzx@5T^7pI}UTj2okZA-N z^)$*k1rI-4ekY^&i{)3#Z@`@n9J;7y5;DQ9?Z# zcDiG&jwr}P4mz>z!@$nigLH6D;4W4>m>vo240A>XTGbgCy0~;8149=B8bOz#WLR*Q zp&VN2S=owN%AN&nE&Yo;%W?0$7n5%a7PjOUwHCJJ6czcWm6cSGJ^3amkI>8TTp-?h6_A+BRr*w6`dkRNm%DiVrCi9|#$0hoKnH#AxYn?^xjL z?+tag`r@&9Tw(Lj@FNpvP2pLD=KhX8^s5UOPtRT%Ju=TI3?3PtLA-uwhQ5U|Pz1(v z87~qU_rE`*;*BXwHCUGZA zyGpx_y+PVTzg(IkrAg_MadOxAQIbW zq*|#?nl05!L8(D%l;%itrFqhPsY%*jI$%;jI!Fph2TRT3KT@l-Kx&f~N{gh$QoD4B zv_$HVmP(yc*TiILnbf1dN$QjOrRCBJX{EGES}mkYYoxW~j+73U)`_d7Bcvmxqokw7 z66sj!IO%xl1nI;HyGSPsmr18er%9(vXGmvCXGv!R_bQA+Ir=(qZ^9^ym%k08{ss>1 z$oGN!5V((FmtA2@6L6mb_c^4XE=EJ~YuE)N5Z?m#J#aq)_cL(60{1&`e**V6=#xM{ z3iM+@zYFMfpx1+50R1@78$dq+^pjxBouJ1oR!C?*x4}=zBol2m0lZ zg1@W;{c0F3f_@F?4+H%=&>sQ%qd)OUkCad2pG?m&XdlU zE|4yiE|M;mE|D&kE|UhN_0r|i2I&gvN@=5Xm9$CPENzjlmbOaQNY_f&N!Lp^NHUo*GACwE%AB0JYvyj5h=`j&|0?Le z1b#H|y94h9z6|*Jz%K>6c5VZtRa;dYqt6ij#rCj1B!^)N9VCT79JGMG3Y zCicR_V_@R>F!5@bcrQ$R0VaM46aRrpW|))%lL9blK1^B)la7Q*=fI>*FzGIs^ejyJ z5GMT!lgGnk2__f9R*WSMVg$wEFi$l8bZldb*$hm|rA6=Am#^`VKOYMZ! zDm=dm85$Dh89jvTV1`y8^e*Vg*79mlczqKx%pEB&&u(|L zMM}BF3fW&mh8ZJlczb7SNB@F0UqzK~Q3u92GT?MtIXT#rKf zkC35egruYNS64Sqbcc4)uTZ%BwH?}0yC}jkt+~5hJ6dZLX8&xTgo%I=uD~p9hd}0` zPYxMc5*@Z}k}%EP-3wyMwqq2|qqk3^DvNO`zF8mY?`!YS4&jLklaw8{5?iBI;%N$p zvD*u29MvdDpRJJQcG&zcSh*+)V;3kq_>iF@(fN;-_6TUIFuQx&JEJ7wr3!g*8)8SX z;Kig0F*RhJrI9Ne6gJ~S24KA)*PgX2K^7l9_3A||`bZoT4~g~q@CaC22d?oRUtLFY z-@>k*r5IAHBPLC45ck>SuOdnX%VtFs=v}Y`<5@jE*0A1Hc!(7ryXw{AZ zHEaYYUU3OyuunNP81ZWed(yKi)ZIk}USnxrqcENrGTg%$k9dLt#diLe=Yqj$h23hZXQ+Gr2jY6jb=eS zrEoTd3{7l7?8uc!ja!W;`kcbivK>RJHKe;+Lrcj~aZSfwR@g|}=Tk35Y@#$n853I6 z)}@`bHxw3Aw_(}E00+fo+seNFp0@IKa(FiikeY72tMIgqyjx5**VX&FdP78jYK8Mh z3JXWb5K0shv6K_B8)JG`vIU82K-06&6}GN_&FRss>~9oyo{^vIX9G!M0b$=!?%i^- zk*Q($qr%V^GL#Q9tZ_DS$bATnl>{B$-WBZ&`yySG-xTV&sj@u=3(=?@?Ook{Q3C33 zg?!F-c)th-0`=mSu6}yVT@k~0;9moTsiPHMc_Bl|FaxE!qjU&4K&LX`nB5^ z#vxL^luC;sESag53bWbUt+AN>r|C;sX*2xMz zLKkX!5mb877&093-|I!R2OsKN)s5zwre*V#md)MKfkh3M0~IdwLxuxc|A%u=VlA<- zX%H3Z$18mnbgj_p%oc^|{@WnCq70BIE*N1^qkS6LwMb!gV8}3inEu64YOC6s7Y{NA zr*BF(x#LE*Dx8BMCiVMB&GnpdF*taY%bZdDqvYWp@d2;fn4soUn7#e0Lo9ZdS?yAONnvvQ_Mse?^3wK|7@N`n?RACtiQBhKkvJ25g97AJ z-%)s+{BK98G(G!J;d<)!+4IW2GsemlIj5bR&lE1F?@$v((~++g7H1CMkvK{)hQ$ya zZ=L#s!sYCL*)h>{?N^2Axx;U&$LU&KbL$dJs2}Vw{H2gSKV;ZHQ6YeeAZ99DOqoEX zL8RQVj#5}&xD7%(wvxxw4L!}Fp0@U--5qU2oXUHsks97QR^fK>4zXN&`+F8Px3+~k zx|+4oUaO$+xpd?RCkl25r^uSBuo(DP=PD9;)?F2rmk;l!s$pcRBbbvHwpcZErzmu< z*aqDb4|bTiKoS@TCu(kKB#+gsaN4+iYJn>4#r;u}K2;&UX@|wKG}v`2;x6hy% zl&saN9Ivw$TdR|tTdXD4QfrwtU@f;+SZ7!(tuw8&ta#|-X3*aP`ddMN8|ZHb{T-mk zGbVR|{%+9U1NwWnSZk8(Nq8Q?T5ke2mR`(MqY2a@L)zd!;=S0_m~g(7+(2!K`Da3^v}<`= z52_wKpc%7FW#@AF&S~^22UC%Kroc+fQ6dL#v5YjBN-ME$$s0dy-mZlUd)x2;`QYY~ z^S9ScahbPPrq=U0i4tHfiG=*1ov_xCOC>cMtc@fg26On6qEEURi{p!_O-Pg@i+ z3?9}Mn5|ufJmlkT)`fUv%en~k_bcadt%u-wT>1GJdg@JmJ4QYJW?g3OP1<$9isyD7 z9I)aUo`=>IA|v$v`kH0lRn*s1$Bn^irS;IHUDuCov95+u0_Y#c18UZ_jQajMWNO}8h}e^~t^t;dl1%dAJks0pAa$NJ*dH|)=9ooqcFPncUzv7Tx@ z4fIce{%O!Zb9w3+)-$bVk%O)J|A79Lby){hmMG&FY;Eqq88E0{;2r7h7>Oq5$5|P2 znQ={5XO`bz*M_L=>?7Bn)ANGX3&?<82>NHk19pjZ02`iqS?U0!jDeJt_15*)%R&Df z=$|J;w+G%k-__dHOw)vvM#wx_A2wRAPTF-t>Xy{2Q@5sG11UO4;UGm1Df|ZOR_is^ zYpr;&=>^cg2>O>m|1yqdJMJBXiG~a|Iq43M5F=dhUW5J?5?%L_Vsf5ce#nn92k)PE zXiK7B--ZXy@h*f2dfqDX0t7AxZQ0tMcGV23!q=<bsMv)H|?QXKu4TnB?4Sz1@0; z^-k+u*1N6uSnsvoXT9Hwa^W@5zYh90K>sG_-vT`z?0N_E?}Gk4(7(Ug`VbK-C{7;Z z9^xLxe?LXU$_GTK5JB=0jCvYIJwtx|{C`iT438uZ_Q{#($02m0?p{{!fM1pQB-|9P`blog&W)i%L4F)7nFnc(slrtW?R z{Xf7bAujpkow!tVd!#bkPF&g~#HB40^uH>&wAm1sHv5?0$q(p%BPxu3uIo!3br73w zpDhcaY4d~rj{#dY=>JR%nznpf5kkvWFcuHC;$i)bmeUhxj zQb)~XtV?VGicVV@K_@>76`5@>stErcM1s|sWt&6LS!JuX)!1rnb+*~IdRx%eU~2?^ z4Dczy?*jZ-;B~-r!0UnMffs-mH`~zoB2v?~|JZ%U{Eq()Av*bS3Oe~z7=;h?E+y#P zbtgLi1#~VY=x025hT=pD3{wu@{R1HT9GdjdZN_%z_tfj0tg0^SU~1^A53wo7F-ZoAwXv|WLK z+(-b4=jf>#=dHv$;9Ufe?wx@A7XW!P0pu;fMfUHS2)G&rG z*j|<)`4WYsXQ+y-&YQN6lboAuZ`t0qy<>aV_MYv1+XuD}Z65*e1KtmO7Vz1?=K!Az zd>-)mz!z+?eWHlRFKl1hzCtv91AHM9j(Y}eEvr6>&T^e!@f+91fX zI+ERs!qA>+pK7<-ZFaleVRzbHcDLOFd;s`z;46Ti0X%kjCh)U>uL8ar_?pdjpDYaR zIrd!rqe+?e0wN4+nJ}CU{2UmaLI5~-r!d^{!q6T-eA;n(>J)t1D-oaK>-t*q1EbNv z`&9l^eG7Y?y`F#*r>1_u9t1v^AUNmRn+Q1P5pXt8aPDvY7WhV#hJ$dG%B4!v(=_1^ zdyBnI#^nNv%Xugf?fX+v+Bm2_!{rkDa)Qea`%-(Sz02NhUuN&I_uBjH{lGT?zd!H? z0DmCx2LT@f{$Svnfyd^xZnm$G#iIRC*=n>OPH?$^3C4wCt8vLrT>cBVJelC~6yVz! zE>A~Xj`>~qmHZG5JsO|iC7)qjo@c*+;PQOn7Y*1i1b%UXxV+T9p5XE_g3ES_OT2#( z_(Ng|O~Y!2tW9HTr}Qbznh@(M*B_no9(yQZ?)fMzukU^ z{Z9K`z@vrS1$;N~%Yg3zz8CmD;1Q+EfnTxNevg922kZ~pF$!dVgrIRHL*p9Y0r(?` zlss}L8vg|}zDUsc67Z`S8eb(^{5AXQC-YA6z{ z&YzB5(0a80W&hj$k0Z&E>=@-3?HJ=o0Uk}1V}U;o_~U^;0r(SvKMDAgfj?!FW2_8J z2XD`Hh)J1_@xY(TV0i{n-u$@)mgnuX9_f}&!eJk3Jvyc!?i^{rpQhl>VM5$F%wv9c zm<>46rxOu~pJUEP+$HxY6X~!y9EdvyN{BND98TcRN(^@nuLC1Oh&u-cGZA-ZBWN5s z6nEzg#@!XqrzS689E%+LP`Ekvrf@rdsG6)!iK7bP<|uWPIRcJyM}=dCqtY?cfwm#a z?u&p&H~JFbF9rTG;0J(T5B%ku9MuZkW>0!BWg5b*5%>)ZZdXFe=aAe^;I?@u+(rVo zW&$_Vf>$uOwISRly)x-l{CNdZK7f=D>E{Qk(sgt=ItkVgh8qVQsKBmD5No}T|eKmFqahajfGw$MKF6949(Xa-8fq z#c?X|TYy{s!Q01pX%AZwCIB&5qM$$HZ~=#2Jor5o+fXm3u35Ozwb` zqk+GdfQ{_y?(~hxhIPWyEmkB!yD#h5NU(Sn@c7EHEDN^~ES~MyN`4^aKfvEEe`1uT zh#}-g$IS$dIEQx*I55O>SAuA~!*Mqv%W)?$0q-UzpyM9mn&5W+U^J%ccW3M#ay%*n z@(~Ki`_UtDkUCg%kicYho_4%S0QrpLKaOV|&pDoVyx@4z@si_Z$1A`;2t028-$GUU4g&H$0?4NsAfKbk_GJRdS9St&$J>C8ZwMd} z6c`qi0r>;b#XmZJB0s<*AfJ^#i7rlN)BT6zFM`NFfq#C$@i*`n%Q>1L z@f zxu0XfrIO>ouXtfC70GgQ9LT524AJ_uK-$xK8#8=P}xIATD30`OlBRgFRT zK<6T~44nr#L(YSp&CV8Qt8;;~&AAZxuYvytcw7hH0slSlKLGzD@VNMX-sD`YAhAQd zpX~BEyMbpr(EM-YUVV9w@9&+edIXlCa}5F7THx6hvvVB+ZOAMs=dsS?3DAxM{`UbV zdX0Z12((k2r^`S)jRNgYf|xTY(Eb_>H2Y`3eu=uI-Gw0{dFPvXGzjA)<{KomM^E(hGfiM|_T|w9lgxx{d1B5+6m;yo?2JpTsWAQy}7+?Ai_C=)yV87;xd7N{PYImF6;0IJ%4!j+rRtToxi7g{gz!m^w2@ znr>ENgUMFL+U{~ubh?}rosOYMusT_;eK8~2mF>!L<+}1*`K|(2p{vNXmuqj=J|MV2 zaD(6h!3%;91V0E_AY_A(141qcd0Slj$q;pwjNR8&M%1&bf`BxifwYhqio(9Kjuxi< z@8NWq6t5ky7rnzWqFr+cpyz^6zyRHZfEI3?SV?|h^d_=pO+QuP>S}hi5;V7fP&D9L z0K#4gqIt1v2}04;j$V#{p+jN4s{^-QgnbaugV8*C7DHo?t6xTNA4Twf1i>A25$rRl z8mn`t>u^kicCB%(bsYx6bP$R`D8V#n7r2ffY0yF`2(xxv8no*;GK$B8P!=AglU%1_ zvm?@=U8lKD2O$7LIT^2E)1X~vyKsjqb{e$nLf1vEi(Qw1PyxaW5Gp~KiDU79Hx1f# zrR#cBc&?4Et6ZC0n_XL6SG%^lu5n%Kx(oJ1t$3eh%i)kRl^%Tkn zIblG2UCkH3tbs7{UvRxd~G!3}$xs3f2ln<}F-Xikh4I&>7pz`5ujDiRU#)^U% zj$%vwLl-7pUEjFAb$#dh-t~j)N7qlT zpFwB_0lBw=fN~9G(?Spyfv^~a_D!x|6}9%K^HRVa$GSZgbLs>TPWoR%;1EJ;hnz1PMn)!RY*F#(o=0#z zAA}Fy-<)bTOxsZj?qH1@ey$Ov9e5qu&+a3{t7@q@6>>a2AG+Eebs+=sgnlP804 z3J9m7J>@>qeH68)P6Ofe81~dKXUJllJ5vu($-{Xf8P1bHI3qkI?M0?7;$-UXV z#eKDVtNR-FweIWO*Sl{3;Q|mY1mPkOE(QTj#7jZA3p45Y(IHq`{|`b>a6t~iw>vfFwfzhbsq2> z;W^TCl;>#AF(AAG0*dt4KzJR5H$Zq3gttI=8-#Z@d5%+Hc#{1=&nYM!(Z+h0fe;f+ z0fbM9Z2ath&D{UDqaM_<^jt(xh8EI$3}u%Q;WsehLh=K``;anA{v?t7)0rT;%CngO zZ4(F|4tTbJ@KJ)o?^@3dGSIH4K>L^ou$!m=!$acHw?VWRQb%3LINsqQ*-B%VdG4a3 z@AIK*vN{iXo+fa6$n&u05znKZ$2^aFp71>BLFx7-2w#ElH3;8;fU%YDK=>YnA3*qV zljj))ZqLhm>K?Q=eqwO@Mcq>u{@e+-5yUq3+rdwchzqR+c85q;t~#FckC!Ig-+@=>@-wcW^|74XiG;aEZ7D5efojn%2~ z&O^E9t@YMC*#q8tLCi@IXb*ZHLBx0;LIo@45(Vph z6cwzP7gNCs-!afU?Zu=dwB)@1p+GAjKzo$pGj9++S)G@?@8i~i_Z9D}-q*aZd*ATB z>3z%lw)Y+DEbn_D7J;}Ih8SDZ?zKJvCy#ul8e^1p86WZSauEr3X6V%c0{!W1T2Z)#(Ab;`qaKQAX_{JhI zeP}F|5BPK-RwM>YpWqu$C7=%-SX8w$5Me&N@&;9Hr(J z5a)o1=EFP?=Y!Y;;{G5Wu-R8DFDqYA4iNdsjgR7iY*B^O0Fl`Gzqg`xz>*neQ4Y7F ze0Wf8z_$>@gOnBJYsVEeHaNC{{E+K~M(O0wFxyp{+p*9Ewo#^MzMxF!c1ysXagzOx7x zPw<`SJIQyl?-bvuzSDfC`_Ay42_p7%5r~UHYzOfW5SM`10pd~+(W>g&>^ocD&+(lv zo3B2!GC=HB_H)FZumQVbCl+_SBjv+`Y6HHjL0rbLcclJ8~TE528KuYtH4#6v+`1L9f`4+HUV5Z8eSARe*F_l6=B z-?2aFdoL-|_W_9Hf&#qh3Pe0qj)hJnzy8mqC;ZzIQP!d4M4At$8xsfQFUW~B-;b#w z-;a~gyFD6GQt9UpBwo3QP2?Xwaw5(5Cy2)m`2Gg*xWusLALS<}(){E^nurMn!g~KM z#Kb)zmfTBq?V6f=fWpx)`sE{OetINLJQ<~*e-~2IA=;o&h3?!m~g;8^m)!Ja?1dBE!u;b>a;7grrPAI$Y;5xLrUF z>+%DbePL05w^5-Gk{P`f_Wdjs${-WXJnt!^#1hM8X2JylHe<_F;C5W{O|4bsF zTKtvNYQ2~s2G5z0Oi93l#hV;AOq#&2+ARkrum=s zKTi<(9EcAO_+J1KZ-Yao}7QIdtG5Y{e+qP-dYP$=4$BWuI;IJ;+segt7{zs%Z55{w+EH5h67 zvh~Y0 z-$H`pJy7(Ih9l1JS;=o|a)jTcUk*(d6ZOM0m4_LGJQ^V@^$!pr?+2<;M*kpCjdKKY zmHtrzJaSu><-Un2x9C19TKSXf+nc#>+IM@~+CODo^D~^pfYB>I>|3|^`ZyCq42#$wk z9M3o&j)tZN7RMtErx^+i%?!;AEetIUg@z&nWuOfR-q}E%1Jt=dod?wUK(zs?El}-% zY7bNgpgOKHa7vSG&=t51r<3tW1DW?jkz56&S*Fk>z-lm}BV9L?;nV}Oo}rJE(3P0u zYNh&($ z8{7sTfpM4t)0d;1b;riq5Fm{;)guc=Hvb9ja#4facQnC(eMcy%`nrl~WqKJdz@bY+ zZ$lqLU!aUYnSe6mVkSd>!vHdLNm+pM)UufA1oy}?;PmB;VF*yT#9sRfrG^oBw?~bB z8p;fp0%ZfrPM%l2qo0P$3>C*4{WOd>OfXC|OajUQloKcyP;PvL|NkxyH(Y7B7QK7J z48v81nTD$kvkYLEZMeoT2Phvx2Mv|P z{2u~J${4DE>Y1bYKWcbfG5^P8^Y2CM_(|FPduN;fMK7`W`?M=QXLvzw#SG8O3UEPP zCABiI8r~tmtv9@8c-`=Z;Z4I^h7E>|hPQ$057Ypl1_E^@j^dbgl-?U&cHIH1wOXsToN?`&CA?EDKS! zjPW!h&W~PYEHE}RHaE5~wlo$Ri;R?!?&>t6la4LuWk8JvY79_gff@%?1yJLGnm{t? zP!m@f)k)IER)yP*XBf}SYiDdt+@(nxc2mh}P3lUZt|C%5v%y{J{y*L(u)fJAM&bn- z(F>Zaf@vgPkg-RLp2i;3R-kYoeiu1638NC`d$kvDF%mb(h;Godj1k?S>AA6KbQ={n z$f&qMmm_3G#SOY53o^FT8trmXqv8e`6*p)`UB#IGTB+W~e&`5gXUQ=RFb}QC^I3xN!tf0MzW9ycpvsBd%copQO0?_Z%+c6eIT6 ztTIkDPBTt7UT(a?c%^ZM@haoY4oTxIpwJ1p4yd_6T@Ta^K-~z`O+eiY)GcIwBz5a5 z<7`FKjn^6H8m~9rfChFGF)%HuJ#{Bg3xT=^s71uU7B?8!e_&wu5U}nAN=tihTtW$OgnG`?wkOE$D6KxH&T zdz(CucYs=2V`%Riam?r#L;KkH2~hZSmgi<@n~h%{&(Lz4ENT4CxF206cAH=wiub85AG z<7B{`db+`7Isuo-)C55>H3do=5jQnM!!b4QxRxA1VYd7B${7u(pNgW1F>z=(CiFfY z%b0keavTshwKAP48;K2!xT&>lIJFFjcX@^hX%}o`YA;)i3G?fq#XM72L9I+z zlND9n)Xh|E>Tc>`DlzFz29wcb>gqIMY`zAl=YYaHd>*J5fO-)q6!UdJy)3&;udFiJ z6zoi{j(bcV6Yd;g@)K2mRdbs#?K%dQ8-RM7(DzP*s-JvSH}xcN_5w;988`JMs=iFv zOb#OHxVwaWu2wnIAk$!iCdOQ^XG|D#SLg=S;4^eQ=mQr3g6S`Ky3l)3!t`EnN}(T3Z{pY5iZli#HesUU+KF2 zx@Lsy+f&b?PD00QJzc-`1tO-k1Sgcduhc-q^b%TBi=NH;kb^`ajRq*^8r)tt;g%H{ z6UK<&WK3@XwJkR<$@GrtePU7X5{tsABZVtkl;VIwqrJ5aC}?PJGHq6L9#bcyIqksF zgchY_G@;Sn(ri#14zoq+8Zg*ac_cr$>sPzH5S;l+;(9Ls1ZJ_xgLd-DpAmZiH zEzl=0Urc-gx@8tIY@2U2(1w{YgC7A6yAwH}i|Q(-l^JcGhCZ%&jCrhioVmh0-aNrP z(LBjKxvSGW6=)i0251&&td0j-09piE2Xrgq5FC8)YPwZg=XbU_H(0NocU^Ymv>j5ioBD`b-VXJBbR;Z*s&u-@E|mv&ftiJkzaF z1sTSrz4^uFr3B6;K%bK_F9Z7A9O1mrjI&i%m{+0>(x_;tgAbygOOu4~*>L8s*Dm*n z`7s4foT832wIy&qC^LP2Rxz#2Gv>9m`nl#8%r6o@mu?SqXVuR&zf2y(D?oRsc0A0l znbGk$y2HZ!mU#ov9f9sdZnoa>P4l~E?D6=&=@~R{F@J}?h4~BfR`ZwUugqVYzcFt! zZ#REy-T`!1pt}KG40Ly(djMSmv>s>!&_mp)#No29@)c2Ku8 z1KO6cv;bNjM6W;nmxZ#h#59Ik7+LNeXc`t?HVtQ%X|T<{QLV#ry5%g{qAX|17Uiz1 zm{#U|OE<*P(#F!(($3P}(!tWv(#g`<(#3)-dV%%Kx3O1tFja; zI9l|Ib73(P9OD{}$r|^fX9JEW-_^AQ5l0KY5^W^h5=9)Tt@J(QKo1wQb|~i>93@LH zf@4phQyEKdpwqbtyrrLIAaZ5tPXt~f0#8?=quXRgZH}(S)euXm!r~<|i@ngtrK^aK z+hj%-!djV;mWhPLQI>McWtP#FF_y8Gah3|pc*_K!`vBb+XmpwS0o@4`Sf&-YEteCo!!iTt!J5x8MD{s`sXoUkHxS+_9twwL!g@_Cn_6BrEnP99 z%s*v%`Iz$3iI*$?(sy#{KOP0+jx=%E=4 z`Y4y=h~^>-`YbCfiwT;g1kE1X$P{c$nUn2%Xqc_EJcLe!<$lWpmIr|z4)h41%W$4m zUc06%u@S`ckn9@~hz<2vMjC!W&EthKy`;h*Js%L|qlEiYNt zSzflhVtLiF9_VtQF9Uis&|`o`w{9HJ6+n*%dP1e;b=4|1aC3@2Lz{RP=!u$5Oopbt zq46KYU6|ew{+&ShXZf5^z6Iz>8s%Ri<=ny+J-K@^QDaja@!mz|(l$-j2=ETe_k{BA zfS!`E>;xJYy63XS%JQQHXOyh4>>-p-Bb0LwBjrtd)kXO)7LskRV1fm^CXg~RV$VHH zC~Jy|O#YSLOrz{CYcnFie_Q^s=2`QtjjWBWO{`6=r&$Ytz7lBE)T@A=3G~%K&jK2N zo(=RhK+mbNHdmYhYmwp%SXtr>T&p<)*Vi}$w=_5dC*K*c;*RVY>v=$5r?O~mi!7Sw zTicUEj`ij$XN>rksBhca)rwn2WULr*+>o(i#DVMJbD_~{u$l>3!>lC76wo(e({8nr zrk%byi!8Qrv35C^)hh#O^~gZpT30cxOxW5BfwV@fQESW^w=n?Fu=V7 z=y^cj3G{rRvFW%QXlyzb0)0=FwYQ>u)_y`W>wvs=R?Mac^u3z;Eg=g~=@mr%?rQ+@ zKLBzh0df@3i!>ldBaqfHO^#T{P}pxIFMGjr6U_6-JgmL#NmkrZD`TAu^wNwKJDZl} z2;>#ks}vw-$Uu_y_SUP3)X|wNAaSAozCRc(i>>uq>-7qhb7d%3)>TydnzvdPVq0vz z&3e1_4(mMYo!0r*yR3Ix5xob1Mvvklpeq5LU3wMJ4+H%O(2rJHapQI(k=7;3AeA)( z^lFVpoan)*&gnA^ZSe`T#nwj%ZjS=}n1&l>-K*Q=4c2!Q(B76odzOH0`EQ z@9{4yE@;YF{|5Svj4co7H*-VH*2ISC_OPL~VV)XnXx~C+Y|Uk6He@lw#(J>%SE*OD z(Keh-gU+7~v+SYs_fB0UwKAvM+8}MVGi+zt&a$<(oozeEcCPI_+xbAh2lV?ue*pA{ zKz{`E$3TAq^d_J`t+cgOXtQ-xWX*=XMxSZ2_IZu0ebqqQ3D9Pf`ehcP8fb%Uqi}@DcCl@UZK&-MTd8fBZMbcOt;|5%MgqMJ=nP;F3uIrZGTdOEUCLRWcx zec`rQ1Wb(o_Gn}ZQDDxcWv+4-nV^V`_P7}{Rhy00*&Jr*bMyxOdc@#z%&A;ai#4O)uJ{l z!MklMFilizVos|L-IVu*0%-dKMVvuL0Y&_86mh0Sts-9Vo64=diCy+HCfL!>;DEto zqGdK*dre`IOnV6a9W7y%d& z7#*1=z_eOrKT|=@eolegejX8VJ9-kpoUUPqBUo7aTt&p0^BY9`k&-50hlvX zFzuLI57$xamy<(YL7k_ZtHHFp>>dQu?gr+pjNJ=N>)gP!2kjAA#O+}s;>_7dm^~&F zc1{*yZ2oN;WNAANSfLwh? zXx@Xp(!Pq=RuwSjjQwF?EIHcNWA-N%+j>H_Et0<9PI@DNv1Qvmzch4yVbA3woblnIY>e|2eu+<)wUcY zpkY>#BrSMI1hn!oI@O{-o&AD zoKGAooYtN_yv#Pzt9Ih(=;$KbmZP(5TV(COgG`6Rl36CHl__zUY7IUd7Kc2wi|G%{ zAl0@U4)O?`zznFlMUTUOtZg|04rF;CFc;=zTaKs$djM*m+Ll}J;kdvt6h~_u{T%%r z0~`Y#7di$xE^-WZTQc?9MpbttF=J0Xi#iGMdObY?^@a0}sRXBKz>L%^>I$?dhUONLgY5i^dk)Iy8r;Bv zn+aqbvw{#Mh>R9Gj?#MV+IPP<-1ZF%i6M&fr%p_nY12YAfsled< zPp@=5ppsbCp|9iNympR9fw^4c5GOpn2@DXgX?8;_d;+nsgRB*DJP*tj8fav#kYgP? zlpMg|S~Uz9$r-!P4{Go64aZvqHGK3}WgHuTnVBPM?>asp;{6^GZyXLp@&1sA_pDmQ zyYqf#vv$GFjxQAX-Xgcw_?g8drU={(h7?>r%ECmLmkmbN+s+@X-HmA9n-D%Bh=d_bXc7?{<1JDQ? z=v9O_vKAiazhyTYlgh@F4WC?IF%IX!^{tpPad=q}XUHit47*Rlsc`A?aphx6$JaX1 z5dWEcI#@BaY+~t1oQ!yGtyRRwO)Z~PK5R@G&Zf(58po7gUNL2Ic>3hBag*?S;Ah%q z*D`!!#h5YjjK}U3mtH!lY;tWi{f{%UWZyBF9vG<@GopOl$l9LPw27tTQ|05zCdsoR zoj5-?&uB%lq3vSmSTkU*8 z0TXA;AegTZFe_!G*JUBCm09C_q1HYN=S$9Ya-YR|VBS>YD(9=@5#TRgt9EpqZ#XyL zHIEw9ac*?J4b1Dn$aw(j9n^8Y@5D}z+T*I+`U9O?o!_Hx;r!D1mGf)oH_mO&?aptV zJDlGEgWk|aVDRg_1I)X?ya&wtz%gjCM`z>r@+UAKYqs(a+DglKlOwcP_#`yO1f*l3NgrGlR1K2rG*>gU6;}Z;n=-EE zz5I1u720T6+jwYL11>OG`etU@=8~fYDErU zc99Ne`HW%JFzsziE*xCRxX|_3opJRB=Eod)?B^n@fm~!Y5VMD9x9dWp-8k){7GHP$ zcWr$sB~=wOM7wgSizG%VnBW>Nv-uNY^Fo>E z0-K*BnM++6Lgq3glWioEiDUuWxK=W0D`V1ttaLrB0J(|)$(}}lTtR?jG4p=yYb9Jy zxLzbcKIwYO^|b35*R!rQuIF59UC+B-0Ja&h&4FzJY)fDZfkn2kDjHY@ShmXblCoC9 z^{Ub`yWT(`Sx#Lm!3x!FGfNiDHvm~NQ4THrQznn9n1}&iovm{YV)+RHaucw;2IOW0 zlHa8KA$u`s|J4BbwQCyz@*7~qjB7ivx*UQ0-t`0FYM2X?;2;OBR&+Sv`jM=ZU{BBD zifyFjzjPgN{jA`4P{#4hx{7HC|L$&z@t5m}>krqTuD@J=yZ&+Kx%1tP+>N_=fNc%z z*}$Fy?76_62kiO4wgI*+u=Zw26uw8Nk z)7`^ukim58WiY#<;JHn*;C0IalL3`6x83cMxpX^aE=ex@Xa(kbCIy;;?Q@yDjUsyjune?}Ea+p>P2dE}Vrk>5B5GJlcJ!dpw3;?vd_M z?sE5K?$Pcs?y>H1?h0Tnz*>Q|0c!`=0jv{P7qD(%J(cbWszFUr=G3__2iB_@lfQaS z9UD2-?C8JtI21mvC45{5tWPr)Tyk8Gsod_KM@;1oU;`QVoxlcjG?fMJdyzZ$LgG|} zh*RNSM4Sqo$W)8F8@fexgT~v;(pY< z+WnaOarYDMC*4m08wWN4Y!cWMuxVh?HhKcv3)tSk_Nj6|qqr3Awd_0rJI~xN5tpK` z=2G+{hSqck@o_I~a4AmyYB%>g1jl!Qy+Fh91H{q102A)ufq8aFZ-9KRk+aX-pA#H6 z1KU62-U94^9C7^0jjjl~6z*?i0cLwAxx>q@11!&tGSB&* zb~0t2wlZaxp?Y~b$m%sZOTC!ks(yL8db-P;d5UGu#@1CzD`WC_QS&@zkHus4*gSTR z!{hY0JZ=wqt=Phj2X+Fm6M>xs>||i406P`fX~0ge^7s_Z^Msne=85FB^TdeeU9M@~ zm2zBvHPO6T4VriIHP6$Z&^Q2CZ7AO}2x+7)F8Yid(4;LUmr%~tn&&C?3@0?AT+GOL zMgV(Njx>()j7F|J<)jIoNt$4)g5;m+gtC`S<6(`giJmD6jgw^>0aXw8u^<^}FxOY@ zLA~cn56--;^33pD<(cWZ+B3@op4pyjJaatP0(%XxbAZJk(C?TF?DfFj0PKyx-URH; zRUUQHt>>m@_GS*G@isyuNp?V{1+ur1!PQ1X$d7k6(D)zFh`ISQo~6Lvs%c{eX>8WB zSuZ?rwjQod>o1>cCd_#r@>CHTD}lW|<5>ml9XZmt+9MA_4fEh26bAM4Q01BpBih(# z@Nv0X<9S|Tajnea{9MYs;&~S%de5t#^`6%}uY2C`yygjCIXDT-%_KCto4GU6Dm^H(;MqS@ia(&wKP*yf$Rfi(MSgWW3nL@oa7^ zdfi?h;cA%ID=Xw0YnQv#dxwJK?J|zFf!sQNNzdzLi={j1}|D|4d@ACxA7l7TW zfw>OB^uFApCm!hSV?u;o^7#LTPiOyu=!eePcbE4ES@3oOyX)Vb z@!q}UiR=URhw4bq`;+$WufD=3}s5%2(iP z=4`fIU>{!)$bs+5_;Vbds_*2HG2ln@j&j{?1+|0#i^*Lm7 z@!{%KjJ^Iq=zT8PT>i{57iOD^z0dE%oG3Wo#21uJFed|?d#*~>$?EBJmB(yYXn?l;FHzL zXA$EPP`KjbnjpsnIyTUK*$QE+;fj2d*gNy8<|jm~b9JsBFySQYAD@9Xsn> zV`Qce6dG|!Ng;4F;p!SfBgbUXsFj)PyHR2B2Ero8Sggo-#WtLOTe9<@x2UOn;cnu&G)9l;u|uH zWH$xh2ARcnSuC;^ElrN^J)i7S3xOW#+% zuYKPDhj4WUt_yHof$IibF>u|1>j7LzrEj}R;`bf;Qmv50-N5NJ4vmDvCZwa3voP)juTbXithBv;BrvE^h9mZB4-=PYpzH)F^V^X! zKR*4CN}1n{loj+Xc$*y1r~n#uR?gLdfY|8%)&CzYx`r!@<35^<#g%P=jo#Kcj%T zTn2L}0dt{@^Tk;>Yh@nvuc~$7lK&C^qa;}8N`Wg=7cTiR-)+YK1aQM@Zt-dV8ocIF zF}nXb|61UN12=-)Y`rnM|0VzWNiN9B>uDjj!_Kb_L{*{|i;fza~aCK^@%ZCe=v!v{TQb zPJ+qQW0dt;6zTHu?*ne4W>J{;c4d>liccp8?lML4tH|dX+xsiz`($TfkA@EL zf{Mq>lbM>%IWCL$1|C4qHn1qLIItwJG_WkNJdg>j2;3J~iGxwxGT@d2mjP}CaQ6YX z61e+;djPlxfqRGyMg<;JwQrTSBqZ=y;Bnw8HT}cQWU7~haQF{To@ydkM=SZiG#C}Y z^f;NoI^e1_Dsh22rsxd3Mh=pklUt>nabf2OO}91%aI1k#;BDX@$pqd7?$I2%{4nqd zVQg3c2cWP!b2aK+;8WR2eJqPHHh-;lxi11=DQM!*7^3+^UB$FAI|93E9f%6-4*V$l zwod`~^uGt90{h9+H~`!;H8%Kj;4ohNC?_}YYv4EFo&|0Vx$AnJ+`yl~{Np*fb*>5t zHVbm-PXwC>TLfDM3xh>LDo6*JAPXEi+0O&_0&p(^_Y!dU`d$X^72sa24DyOi1zRcp zMDQ%&)@%0kdW}D^@l-RV|JtRMnPeAtW)Ne6Hpv zXb76nR)R+0-pB;az~#6#L(m?SmqHB-I%QiSTQdYbvaMuq&A_~^Vjm0!@ zrt)@OrL;1s-~jX}g6W_X>>2D8>>cbA>>Iow*e}>0I5h6}fO{Xf4}kj+xQ~GQ7`RV> z!|>|Us^CDyqX-UGVZ$VQzNi;5b4fMzh-H4MCjpva)4SONt!O z_$+ALS~=IyczN(jLL&wwTQWfmNOIh~Avi0Do(L*;aJEe2R`d>9o=@VT#>d@CIe0_x zW?8m_xK|>w_*E`t<^`7!7Viws58f5LJGdaYFnCY!-r%C(V&J|3ZX0mhf%_J?9l(7D z-1ork1a22_KU4*ms=~LzI5)U5uU!z+>;bo1lfFG!~6<4E>vIBqem%;&)!1jjAGFM?ZxUk1MlejWTK zxGlInhzK46?l5pTB!b=m_DLK84*Mkj1nw{3{;mpsr{efSaJOMO;<%UK_>YPs-w5~u zpi+n<->d=0{{TmlJtz1l@Oc`JBzsOMuVp-xhr7e^`6Pi3p2_ZT>bnk|79!bmLIuD# z&V-r+-y}C2Lq#DadrnBsp2Igqu0nG59R9Ry9Alrh^?8(RCE9gQ4=Hap*Eqmp?0D6p$?&rp-!RBA-t!Sz!w6KTv5Q&z%#(Jz;nR!l_52SPN<~g zp28>d+J#KO3mT9*Xz3%lgs|XQ4X)t{bTx&1NLcv3L$aEWmGHUGLsjmc_c#) zo~gHMh)agjgt!#&tui4Acud)l%dC)4pHM$kvQS?P?|DqVRJbD4AG?}(L0G%8dcx-2w0G$u4QG%i#D z{5im%3;cP&pAUQ+;M)S<4*2%KcL2U)RcM0Z8-}JRzG3Kc6hOX{>KpQ1s(nMgM}q*K zd;tv2B{*IWd}j^En-IsAMZ)HmMaDCUSJ-q1Ia62F;5aXYJwTbzoxpd^gzf?!6E)<7 z<2|9p1jl;`j<_xpaa@AEO?>y-dYjlrLp8MS3q7FVc)yHe3A%@&CB&uVyB`Rk8gTp%aD0#8_&)HsRf8Njhdx3ayKzm9bmLGR3&)c6>v%p|9X}6Y zj^s>e3-I1dXe;o(9C7?6^ey3PSZF(O4|zYzoCRlv;9jlH<8t*wXph3;k1~tFT*@2_ z{Yl#3pF_Wd4uuYfehvK=`aN_c^at=^;3L3CfsXB6T=Qn>X z+!+6E3cRGX!M(|XV!l6Vg9kLU!6(oLhgqa7j7?ilm9nsil!bLIZX^frIKAVLa>mZg zjj9fX&kmo9oQ1J9>yrs%Yt}b6&cf}&9c9kKxNIFcBU>8Lk zUkv;Z;D-W#3Gk)B4${n;_IP zV0{w$59{d7mo+aunBa*os7%8XH;1Y_r%ZTcxSYT_3iy$k@MXY{$`Q_S;Ry}l_CYlqu9+zu_?ffnyVi}x`9 zQh09odeYO*j{|<9I*TNXUPvZDFZb$gG@I1WcQ622zJHzvV9}oNla`Vsks%i z$UazdhJAicgIjU(-HPy=1gE!vzgn}Xx6z^srxZ>l2Q*#?jqg#;HMo5g#xbZ&_+#K9 z6W#>;>>MrX^DtQr72ZO;T%3YmxT5fS^l}^HYWVCF5gJ$9!`~_9v_m$hYth9myk71# zU7FQIXk~s3A40bxyeGUjyf3^zd?5T&_+a?w@Grp61^#;AZvY;fvYUWME4l^vTYA>S|3%SHnk=7A(M$mbUoFnV@T`0g2d0!{~?kr+h z?>j0qkq(j0GH4OZqKFQ~!n%rSWqL&H2wJ2hqK_CN#)v6mj#whr2nJ2}0>23O#lSBC zekt(FfL{)L2KW_~5r+a=#G^#@kpS@bX`o>or%r$7s~SK%5zr(8T2J6tYM}M0&q0V> z7`cdmhW_6JnF#uS59SEkC6VDsOr(^^*+WFmA|ps2QYHEb*`Vdm)}Xm8GFAa?j11Z; z0@?`Kuc*u_rj?l#nTf4yWO8ImWNKtuWP0TC$Q6+*BQqjb0sjc_j{=X)>|?+`4*V0q zKMDL(z&{QAGgXnRmDV+KjY=D)zybbQt#y5_hPM|RTGx}`x<>9IINlBX8V$#L5J##N zwUr#CKNEFNKG*2p^2iE;BZ|e^OyoY`pU)A;2P2p&hv*&xh{4ng*iuq^NlV!zaa^t* zi^$tjPKZ1qv-najWuA+yC!)7D@_gil$cvGeBI_bAM_!4%3jE8!zXCk|upao=fPWqM zH-LW=__rz}uc@N%-Gt?P#kqIV*qhslvMkcGLi3re>X?Uc1QLqljtZCSx$Zv}7 zVK#AWU_Yv>q*mtdXbX(kBmYG6qWRHA(Z&5z@lWQhUhK8|E8JK?PyL#pA~J!V+%>=h~`Ajf7Rf&AWC*>h%N;FNG6Jb$sakI z)6%HC9%@(=*F&L0@h3V5ML)<6MWZaK*G%KVsO*GHh@umM=JafHBLp=nxNumE;M%CYDVtFPoOe&GOVAmEX%7^wpMQ@2G9{{pK#=Dx)GPe4W-;9Qvi5DtVpNQdF)<|l3=qx);VckZ zqnVcX?Atw9F}$Mmf{H1_M-62<4kT}`dpr=r7e2hK@04MaFCSmloqVjk*QkndWtO4( z@^R#oosa#bfBg8e(ut+xhL;^xU-wk`$Wgd+W1C|?+jC+$K8jMZ31# z?;hjW8L`&*FbXEb5Dk1A=VHqn-9=hn;kb!8Vr^pGF!qSGjkSxlk9CN3jCG22j&+H3 z1>t-U+JMj&gmxgb2cZK99YN>>Lg&g@v7!<&z0zXE%pi18JwTybb$cb~8w4UtAnI(b zWXxlJ#5@)Np{v>;#lrQ)9W0xqP4V6JN)KyF?b7>4G?Nr7_#zw`;W0%E7$Hv6Q#>T}e zKrn%T09in=f?xx|4uS&&CkU>}n7W-rOr5V2yBq|!1{%7TYR{e!Yyj;~kf z4NS|fwKXsrG0S83DU_{{DGMQG9kDwX7b14ef>SF~8GDjYRux+ndpPz;?9tfj*kiHB zV^4q(0U-)P41_oc2@sMXq(DG}kt$`?4*?AO?D zAPfTGA`k|Ha4`r&Ko|b9KpeGmaF5@_+u3}mlbKHkG#w~Gc z+!nXT9dT#e6?exyaW4qtK){A}JO~p&mh6V4ptPDNAnJ9Ge3Rxnr&T3Ry zW)5T2E;uDVT|si1jO6UP3TkC$#;?cLIDU0}RvhB9lo2)AeAt3b$c$B6jq_!Elu$vZ{}^9V6d$*A3# zjat7s8Z^(vUr<1MUIvZKHaKoEt<0x$#Zan??v3O#<&D3-yEt8#av? zQTAVL8WI1VfVmTd6`Bg}MlkE#G$Q^}95)Qj#1De7G86v=g!^*~M&iH4|4_g@B5U9S zNLYOvKqT@LO=Kz)jb$ny%B4(;1a2BpnP{0POcW)k1f5_KY=TQ*FIg1`Xh;u(@CXQx zg0LEd$3S=-geNK!>V6T4Gdk`eGh!2GgP`peAv{eMMCFeqP4U_W`8xsmOJI)XOri@2 z+IA3$Vx+9j%|;WZgas)}U>C(RnFMxGz5c$a73S6+YTZz8F6$O3NCONFcM*K8bC90J}MGPT$#9v;5Y+>jhVzu5OUlO zA~8F0EpnB(hV;O^gG8<z>I+yi6m~7aeN6 zG;vpAIl=Mn#Dc`a#65|76N?gy6H5|H6U#vO5QL9F_!tBX?l*ye!To0-YzE(b4F!5^QHG(5*%2$~LYRcESwZVxE3Cz}mJPZ0L2zFvYX zgs-y|PM($|3*nOmApDd`HV5HgZk#2HlFCB(BpKEOfh1T+$_wFzU$Qu3&2BdTWtE%c z>B+NX){^oPc;VN&N@``!PvU4=RkBU8ZL(dmeX>KcW3p4SbFxdaD+s@Xa0G-uK)@US z3xvNx_y@#15c5H7RFy1NlrO0-+)mQzCe5gPVq;bL#HP>~6P%M=x?=MN35X zq#-V9N!DzmX2NOD7?KrF2J!lRSp zu#%$liq40|I79TE70HU^co2~(^Z>LgO-fEBAL>%n6&k+>jo)9`?QeYm&F1?k49XuT5T;oSVEpc|-EXm~ zLDYfR3dGYZlea3mo1DkZNzO+zxEsVXRNWPEc{o1i^N10g-=MoEpu5Qx1d97WJX53m z0i-;X*Q}5nB=rbpdz8;L&^(e{O(=g9#MYVQV<4WLBjryepG8EHPZP??vXK?ZHRx`N z=ho_O+IO(|+H$|-y5y@^vS32;6`A!mM0eK^k5fE1i**giw~`+b);1(JCf`oJlYBS% zUh@6q2gwgXYzJa{5Ica_5kyqf&LDOHu`7t(Dw7|ptbNvzOMZ^5eF0*z###xqKy@|~ z)+`OIod|0?32VDR?5?r)BeIs<(~=?wh&@OiF!_wV+COOT@#o|rLfbDO>NCm1AR2O{ z?MU)3!pyKF&P*)?(MXv2M`p&9#SGi}8fK4r!Bo=}x)lgp3bXj5AX)1wsFk5oXJ8|r zqEk$YO>rqcC8WfZF4Zb^I*4`<9UwYEbb;sw(F39vL?4KL5Cc`IGnGa@b&fJ`Ce?;C z@;OToqa&;3*rSJ_Nz)^T0}x)YJ?JMr%2*uvA?E&I0;A%wZ)4YSo{xI zB#D<((?G{3u4^v9!<&>OxS*#$0$(fhM@mXLppJ|MJkx~*b zr{u)T;>5a2X=Qe#NaE$}bP%cCDLL`7I2pw0>iUw@KJoaofC z3@Y6PaY|#vajj}l>F#Jyb#`{8&1qbAl}TGboSRA8K)gOTgG#&7Uc@x*CPCK?Bpq$BCLtn}%atn@ddMWyADD)GiFJJibbOyiJKWx7|oce+oyZ~B6C zzjXiffb>8RZw2u-5N`+Z4iM*ocqfSSLA(pZyDQV`Xj6KKN+N#E1)8?sQ^VoXhKTC~ zBChl}0$K%#3pLP4=H#`G-;XgABCEvu`TR_4z10+jCb{N@AF*cpWT?L7?QefOmorteAL3*!AC zJ`du1v-BSqw8^6j+UDO?&_2CvRvzU42I7jLO!(6BF=dV(J$m$;R5o!^kKv;xmQR{o zUOH}c#iX&N<9dY3CXJq4F}}y7u@+N##iZ)L{gWn@O`gRNl1Cm&Kc0Rf{bc&7^wa5Q($A*XfcPkg*kkhqh);s} z6o^lQ_#BAx#DP|m%EpuppIkN~KDlgcd<1^U@=MF{0bMkyVhS$0A-}~%In0Q%$))9E zf)(Q?PplX-rflL+=JfFs%PuXOII(PmGOI0xk8?ozh{>Zao-}++`S9{_Ba2HXmX%^z zrKaLB_yP4-^cY;)6TycvsceKFKXh@$)Ut_Wjgl^d3obgt} z?EUlyd0mz-N08K~|8aU#UYAVz6A+)tq(24mSt3ew+4S+H<3^~@Ei_5_He2$8nKbqu zt(i5dclRO6jgtpMZc?l6n>6kodUX9e(tF9<{Vx4|dS`l9`iJ!H^pEL1Aie6~<>be?p+)JAG6 zwUgR|_`YnEAApE`jvs;eF^EXcriY}CQYWc%`YEZa)J-aux`T))eFoxY`L%rx;ua9M zg7{@!ukHVZAxgHRUzJn&pIl#uSHhXdN577s6eh1D1mYK&{7$n**7i1rGG~SQUm&lJ zyr5!q**K|uO#jj`Q_9k%6GxX#)ZTPbN*!BuPwBS2E~^=@)Jy6u^^y8Y7fAi2{?Y(x zpmd=$NV-TGEL|)Ok%mf_NTt#+X}B~(Dw8giMoOcka_KT@v@}KC)xW71EW`4CyLqrgXJ5O9E-Obd5Aex>mYQnk!u|-5}j4-6Y*C-6EmO z^EHUuK>QZO??BuM;twGH2;yE4_k;Koh(Cjf7K;(X?;!pG;$I;C1G;?BH3nT%&=r8L zIp|t~t_XBA=vdJ4pc6sY3Up_H?kv!q4Z3qdcRuLag04O2I)bh<=(>Wg7<4^Arw5%8 zbY{?5L1zb@6LfCSc|qp~T@Z9(&_zKP2VD|$Y0&iqU2o9!1zkVT4FKJRpu31Xz1yWb zq27I(v{1T7x>s5xEtZx@OQmJfaw#LNknWRKO7}|-NDoR6NtIHSv`Ttd zdPI6uS}i>$JuW>VJt;jUJuN*WJu9t|o|D!}&r2^zFG?>->!g>ZSEN^^_0nt7>(U$2 zo6=j-25F=8w)BqluJj)0E(YCj&|M0;(V(jU-9*q$1>NPKn*qA3K{p$8*MROi(A@yK zTS0dR=;niN0q7QiZYk(8pt~P*4}h)`bPt1WHRzrM-Ls&39&|5(?iJ9z3cA-pw*hqT zfbMT$2HjrJ?E~FG(ESX$!=U>ebbo^GA86GG zS~Z1M&7oBxw4$LE1Fd*yrGr*DA^s@uK>Aqq4!#-67^W9bCo4mXu>nF4By2E5f`JlK zu^||+7MpA(hGKufZ!Wf&%?7(YWHi`Hf=Ac1S*>Y%R!x3W#2zXMn2UoplfBp!30aH% zX0x@}VhUSACWAc~4)~9*=}Wby9a%M*16GsSW)2n`O7sEzPDW#~-CztATTK?bEo`-g zBYykQHEmaG`aY{BLy65F_6H5c#-QF%Y%*8_#euLrP#p4GO7Nz`fq=f`=$dw_HSNl- z$!-ou3}!v4Bv@=R;mNPJ*^7hru*qOD82u&YV`|!?*0ejTrm(?OVhfkpi$ms6sMur- z1d45ju)Y|-YQz=^*&+tZG4JjtwWd8;H5nr|gWYT}6x;PBkz$iI6fCykTPP0O^!UV0 zMzg_hIQs4mt2OP*s>vR-;_KF%i|xh;-lAP^EVfzomf~Qo)IzQ4a8^xLgFj-lB0x5LQ~2%(Pr;xc$;5v|7_|SvA>h zezP%PLW+>~VpB=jUu-v7ti?gS(Tv~65V2YVM?WV)t?5WsP3E9AU@pP0qYv8gI|UGQ zd%$SJuV^v`Eg^j7X7kZCouStBXI4!Xd)RIXh7oG=h)jBur8rPxz-MnS30nPDi^XU^ z<~g0C*7SE)O(r8gs6g0?fdiXhcUpr=(gFlT}m1W;EGt27K7Tpappf;de6N z$%v|Kju=XeVbd`b^ipf$vT8C|&320)wICR_VohO`V7obB$1i3!2O=dFe1yknK|i%7 zA*&{vJ?OWf)nhwgEg>y}iPU5(HXBOp5o17)lpIsjAhjl4R!sp*7*$+vFAf{@;bN0N zXf3u`up!3hZM9m$0etMosLD{arqi=(DzTZc4M8Y_W)wM--%x@Sm@U{OW3y$_%+6ty1y`3?9m z@U@dxDu7KLdMAeB5>qG=@kg*3KDKQcr`B{%R!s;@#9}v^ifyJ4-d(^PLA!|{R2Fkd z&}<8a{|{q#0;hA?_K*KNvPAY}#u6z?D$HQUjI_*PN|t6Lw8)kvTed7MuJ*cHiHKql z5=m$wvXlrRg^;btmdKv)e_xnJH~;5%Kd;yO)&0!Ob)LuZInM8QuDNE$#Ml4V)za(y zO64zFsh-bKiSae!T(WKmo>9bCNr;beM&sgR>L!I(`uFVmonPsii&lzHh_73-Zh}ux zKApQi$v!E@lc40d8i@(XvF;NI^)5W)kDp(u;zcXfuUp-doESYN#CWa}S3UfhGq#3L ze+kuNlH%iI6O#UQ1wVCurRy$Q$tR+unn^X>Gs8~_YR1L6T58mFv^tGv+lp1 z_1yjZ`IWA}Xr-j2_*j>S0}vDInOOMN;iz2!ynKG88!lQYI;MWj zv!5?xYlZJmo>u5Cxq6lGr{8+jW9ud-CH`xrH_oqg(?u(peZ9E&=o(exqH9>Gem$Qw z>n22pmrG2j7w@kW$NlTBGVJ_HRWDj8!4uV5)qR$;r02dhtGlDuO{!bPvy14s>YixU z|M&fAX?>T!v2 z^*o{a*U6lAekI?``me8BMCw|t@1C1b-_1O>dc7(MwLG7$A6K`YPpCDclj>dgb<5o| z&#zSbqLo}-o(I&eS;cb_&!WR$C?r&`>r0N9#JIW+zvm49%IWj-E7iGZrP#RS>eW4U z^Sq+|+0Rn--Ct_Nx~o)AO7J{Cq1M0e1@q3Ybn8VcCDo6&R^6EJP14DXjdk~pmwo;E z35i;ZsaY@a!sp|6FFL={?H8?7E5UQXShtacSf4cAhU+WGX|L|7YWL8Cwlc$Ew$=5fhUf?fG5(f9164 z{7QFSv{F*7y0JcO$H_VT+_!q1Cp`6xGAX)NY(0HOYyHCRww+(8(M2oy91$`bgnA2b9S88_AN_ub{rBlxYJuj$kZ1w7eFXQB7x6*{< zn0o)J>CE|+nqRb1{pi^Go@aVu85`$hM#m<(k4O7*(UZF5WM5n-*Shel*OZ*+S893D zO3Bd)HS0zD(lEJ}&*4_`RaMP6&H7TYp7UR;UhIXlOUZkFrTZ>gDIqqwUVYC3eF+`w z{^W%fuZFm-*Y(ue=Vo_^>WSxH(M-voQqXIoDPH<}ATy;oc5NdJ^wqwXF4yMl2k6;dh&?xg=e?{8JOnAdUt`%zilUYBxxcDI#7k?qd^ z&_&8k;f}nX>EGnIxTEzcUI9H<^!9Mk=e|Xg5|3Y@<&=SQ(A{2AGy?Gzh!r^E8NBTxH_kF2`}a) z)?S$@T|<$*|Cg#C32)@}SU(JN@m%(0Z{(%Ze>NJJ@_2SUPlO^L&8j*SUd*ex{VuiG z!R!e3T@b;4Qv4c0R@Gkp9gwxy8{x$Uhav}FYO$l)C&tUU|D2eSDgKgg)`@vH6#018 zV*V9`%#^XA$R{qf*vafR4_wgZ2Pspt7yB?2IVfwf>EXpb4n>A8vDn=~_F`UT{wK3J zDRcj6)6Z=9fsL&1M5ZiA@y~;2owlz+k!JtsC`%?bQ-O0CDo1{0$x>MEj?b}e~D`)RZu|c7fBSEdC{J91d$~w`< zQ~t_s=42@HwXFS5hxhj_me((}f2r(d{?2YD_3~8TL_8mJ>J_2L!RHrCEoiY+cjh6N zTC805Vy7=ytYoV18=k+brJ1i4b-Ns% znR;U=a>V~|;igs#ZxkJheEU)xU7x*Cjte$QNWD2+_1PP0YMoHzsI01Q3omwiDDs_4 zEmq~96CIf|`$VTUNIiR#JbSxIb(0*Owb)JH>+lPQmWK`|g%MPIC6!;;GMt7kfSw`N5?YOU^F3-~~m$ zo;oo>XdS`vkNgb0qHr!@rDDtDs)N!H6 z>HkaA6T=%#3PpZ=sf|*yt1fy$)zee`TYZ_SZj>`KQ)h-EXZE3sm0o5 zM^O5L2o9zC15W3M`d`QTMC!@#KIg7e-|SqJwU1xQ%}jG2`sz~qbjvQfTz1iEdDE`2 zSX#bN_a^9bWA0 zjUjDLC~{ZUV)Md_eHn_}eW}H!WnV|}7hFe6(!LEZc5a%>LXla2Wg+dm@M0@Nk^3&S z*v#xUYhTdj`m_z<%+B6u|LX{DPTQJY^tMpsA6Z5J8s29|DDuFi_L-NqFYD<0lI`F> zM?e3me;xe;Y5pPd^S7}7+V^PM@qgZx=BGIhXYKoUc;8c@$Rn59cS&|wN!ekg=T5&o zyx7^W(({HQkDXsEJ-@}$4aDCNxcCmXB0H>l*zb^gk*VQh^UYY5hD4xn%Ec|tKx?9@mOD(o8d$Bt&SS&6*`|IlT zgiutFwOF0-Vz-2%A}+PqrtCKLlyy<2C#T<;omqoW)MZ(VH3~1*I24uhQj2ZNUaZjt zi#1DcZn1MWvh)_AsN7kL-4|Z${!mn&ODvY&_Md4+d8+4!Q~&EF?*HjUyK`Ser*}y2 zl-*9}P*lFG3c7|X=oX5);u00yy*IlZPkjH$=F#;2;dahG)k+@_iYkz`*yG{Fo(M%1 zywqX`vKLFcV6o@ZUkq1v_B{RjB1nHF-4DrS9ktg(QAM)$84}*-%}`X)OYQSl_UUML z!RdG>eRR0!vrom-$AqGaXDv1^yx90qREbM1b|$;%<`)z_HGNumv9n*=q<<8OippAS zMtHHAp{SCVSS)>Z_CQ@Y7Z3D*dL{4tKgSK$i24nAuuST+-X{LXdzRJ(jr>_h}mCH-T#Ztx4;y?bCbr^wZJzod22c^IyTH zuT9?;L{3g$m%cvzr}Pc!8`C$X|D3)#eM|b*P}J3-sB1z|6+%%JLs8d;qOJ=?RSHF2 zABw6Rin?KP`u6l+!oMw-{!99A>ATW*r|OY7bbb?@1=Wv5>CyL9T%sZID#G(=wb5e<6X z)2XKyBzuK_Cj6genziof2kCqN*J@cWRQloVb03-5vu(#tz5TFxpPtq||HgAWC%5j} zsZ0M>g-cwxS@;iT_>uE=7Z>5Dx7+q?-@E;NoqB}-tU~u*F|k#nn`iw$tqR}Ju5a&l zXa5F6m2+>b9qs?TWF1|_e|@7N-ZvV;KW7(HziI29e&WB`xxdfQ^4x!7YTi^mYb>WT zE(>lLpMEAI$cV`Bqkq*yQ8hwQHA7Lc<1=z*n2-%h>zr?v0lZ!~0d>K%@<+T-mKk*>v=!+gzw|mzfUD}7= zo!+Nw*VaAzpF2_M?K_O(TR7M%US&>mPqf|!eP}I$#s5+sjTgK)6Dx+*h&hVe{in>*g;nu=` z)a2i-{cG!#o}Ie))OD-EH~!xrnAE!M!|CmN_?s7gy~Ury_`g5;+#Y9t1~|2RR?XLD zRK7&bMFwZwm~m71PmV<09*RmF6w@{+e{GJS{P%%ZjWVKxT6Y(@?1wfz!oQ0U9sNT@ zj>~f9%AF@)^NM~gAUuc`6Bbv-F@`gNik4lAi3>GJY&~Rr#w6UQ?mswbyw| zdZz*H?etJ`m)0G^TlnpkvoHO3@9CZ4dr*bjuRHro4?&R^3J=ONDEFW!=eDY!yYJFI zy?-yi^wG3Ic-5rtUD|zLu<{Kz`WNiZ?UTLI1!YGLx;$KJm6$T)s#c30ly^|RL062c zUZduq{C>Bv#Gqon6L9X);ky2LT&u$6o21vx2=9~JzIFJnklwy`Z@0!?7ko&`tPg40 zplL6^`0>xXzK<+eyH4iKg9;8R9^U)b#4=-VyM0ihL50UA)g4r1P|@(NWvrgHa`?Ag zy7$cf4Hv&0@y~lR{F#>Q_Y@8a=l=e#hK(AxJU60l@@jtWf3`mxW+xYS_inDcv5ow2 zdHUUF&xl8)q(0Cjy>Xx3t=%{id-iPIe_TqMpFdAO`@fx@bG?Q$J==;$H1++k!v7uY z*n508@uIi-=oT%{4|{BjCjQ_1?spfx;P|vVcd*9#8TU)QJ-9q55`_QViONCspjOZz zXcVLd=|T6PPw-gqZ18e0A{ZIG6O0bt4?YS$3l;@m2j2usgJr>r;D=yKurv50_&egV zi2M;jM#Q}lts+`Sw2f#V(JA8Lh^`UcBOZx(K4Nmj*Ad@F zERXmuVpYVthz${&A~r{Ci})pCN5pSAa^<)x$JIG1Am}hKSBIIJ~E?I_{oEh{66Cj zce6V)8iel*y}h+U;-aA$!xpWc6N^JT*8fG+dSi)SgZi-O`_poYJs7_7dxS3nH zog_Ljh*ucJyNqEhjuC!X zgIH>jz|A-x@iL5m1GU93=TA=ZH>ZOj!5#_LPbkZ^s3*ai3D!)wlTLKbasAx#HNOPGtvN80TW_Z;1F*)e*0|LgxBdqo zf9q?!%_!bw3}cbqt+Kn-`MC8rmwF+tCYoEY?rllf`?fo9UT?dXj&wpjw{<~3w>`!a z=;b!O+@_A(24iNoy~!}9GMhF0h#B4X6C3%NEo?(?x9uQY({A<#!RN`<=iGSew zNj$=F!u6gGf}{v!l9UH|Bo#mwNyUi7nNPZwo2ZJJCRHbao6%#E9+MJDrX|j2QZLLh z=}AJEWzrNrLmx@MqK>+*tGea59&6Qg&DNDu-KN|_3-0B9tXp>uU$GfI);$vh^-5rk zdKFl}cgUxneCo-k-bS`#&w4xA#U73YLH&Ts$b}5*>#x54>ihgtKaO~6^GXmTm!}He zm+XDX-k0os$$C$&i^Y=fpaIQjMH||o_T<-a|4AOgP~Kt$=5vRf?sysRyTkkL@IHTw zG`PbxcE?!8Gl5CWVjgrPjQ!OuZ(m$PzLC;IX@ z`nxN{)4YUU?|PNj8O&((cGm|?Wg6?*z$Wx?*EW6$f`;;MC7$u0J6lUL8CXGF= zvBx#`xW=*EN+NYJ|Hj?uK~H+4|HkTT@&FIx?M=MBiMKcDhg_P-rHNdcJj?UE$vc>R z6SHq(_D%HHM1M_O|4r5)^CmLC`zF3*Io^J^x8EIpyII`5mF@h>PIhsG(?O6D!DX0x zidm&N_bJt>NgVOK=qa0fLaGc>%OQhQ8KlY}Rc5I&ORYu>HMkvTKeZ7}NTELiaRyTL znyS~-?}H#Mod@ZFbCM>Tw64e|O*Uz=@g1Zf%{?Sd9chCZ%3F+JAz!hWC47qv(y!uU zWRmWE>E4&_ed*!%$tPVt>GDaJPr9?3E|c_w9Ofv;gCOH-DsU~8sEj(A7UD|0uc`Mn z^}eRw*Hm^*W!F@8O=Z_qc1`OegQltIwP{nHU=UC749}sCX5F!VGiRXLvp56I^xW)q z^xf=DhB2J?_>k$$U>2L%idi=^>t<%%Okelh%y;PX9`C!y`|k0+d&2MggM%F62*-k; zc}@yYn4%Qt7H%Vvy6CI<+d|4~v+go^h3vX|62YPN{?k&>Dpc!rHf<9Y3LN7+~ zE@K$WcqVW%2wHl4%lm1^Lv*Aw9^2AmTlV2moUNA6@fvb!DW{flYH9W@7qE!0`6dYN zHMe`G@de&~ueaYDe*02Z@jXAVmi6plKQg*kM)%6-KG(o~<++B6T*ts5xL;oPm&M!e z_qO}5=LTY^K`gaMAep<7&;9bbUq1IgNro{2Oh)!e&BWV_<$ZC(BlK| zFq%xp@g5&Dhk49rA$$3qKhVnqdTDhh`fK$kCy;roQ=AEc2Xk{d`N&T}%AmIgD^VHO z{)1|NQ0)&krzQ6>JqTKReCuMAM&_+$)>>w*J+`&Sw)WW8&Q9xU)S*7=X?+)sFx%E< z+uCef%eM97d>;gDp5Q;opp6XL$e@kup^XgM$e@i3+Du>)vyed>XQ0g@zQ!!u=)aBr z+n8k==e@1{+8z#qb`j{gou1q2xt*Tdm7pYgZ>NWLdT6Kac5#?vJGHmFl@4^K3*G2} z{o1#}+uHX+Pwn;8UQg`@@ifn2uI=^IULWoC(0)7a$~4^w_Z{19^fFdg?fZX*dTRX9Pi~WYTdyIyoPmWYVcM9eEgeb$SFDb$W~^ zd5UM4ih4SI%uGHBg3irpk6b%@Y-f+{?6I8(;GA@pZD)0KewJ5x181ePv(ouXTo0YU zVsQ{W+zyX_xE~(>u*W}a|A)=xVRL!-WnRM?55LVjjA1Ox_>NV49|T?W)TJBd+~rZM z*F`^F)Y8RzU98u|dR^4iXE%LzQ&%^2 zb<<}zeRfkER6ZF!vtn>Y=|L`s**6~vi zJRIGGUz3PUNYzp$)cb7 z`pKf7wfk+s8S3W@_1ncM&ICdK%W)q1--OxsZ_d3uKx^#NUoZXj(qAwA_0s>7bD;VMs(;`pM&pbQ ze2+=UbKnAgWPcDmmKXDQ%ysmby&o%0EJ^6^u{)97V@*imVVr@--oPG@$>m)A<9AL3!K(!+jBH-D z=c~zB|5Z7>>g>GgdU|yLX8EdFzAE!qW&WznU$yV6Z}Ty8n9m};3jNDvIpfm#P&&J`4(5HcEE8*>?KE`#fH7mYB_ z!Ll3Nk(YQ2*$kHX;Ln)DJoGd8E51QrgIBPMHLT?)T-Sq-@fW9pU`W7a}U zL-ajFmP4GgA*H#JXxj4v9ysI^tT|+F5WMN*-mFApe9W5znZOKu+?z6Z^9#O2op1h# z`MoLYH+Qm|@H)pi69hx$G*nJQf8@~ zlqYbuhCa=6sD0?$j6-%qXY&n9SjsZiV_rkmF-#r9%xRc?hsj{r_0+&zhTTmXO=-@( zJizOWU<~#dCWm3~^8xl8W?sY0YnU8{Ek}mKHnD~6?7@tN{e>C5Wkzqw;Vtuct0ZM8 zOKUnah-Vqec&6ceyfus8IKbaQFgyb1ZFnRy9Il_?<+zb}Zst}JsfTQb-^D%1cliB0 zNLwDFBlaKOhZh;mR6a*f!#A>v-%-QxLmcNMrvu-3MNcDSIwFP__z$o025+MI5#}}G z9mXKf5%L@%&kj=G$(CY}lo7mr8M(Qf%G9S51JTgi`hWX#*0F(~*~%~MWH-*%+kXVX zNNbF|f`SyGI8l_Q0yj{FXlf8k680Qpw1|#;9kEdd7T( ze#V&3n7!Czj6KHKV~q1N<^=Z2EI~<}oy>ALKbiW^tVA@{&oqNfGssLv9+{1}n^c^y zOy?`J9UbV2dNR!<(@Zj7Ky8^L7{zGJC-Xf%W)`2}ykvgKa?B@FR++NO+>Smn^^vKM zO!a$sF!nN>r?HoF5B4AX5S{3PeaBjN?A9O{7eP+)kdFcsrWlcwqB?RNC)aUu9d|2< z)T1%YxflJ8)9*O@jnnTq`;F^Me;z~c+z!z)_7TupM+~-yz61S>tXy% zmLl)*-(mmpG9NGV@$1=$^EqCA^Cw3*&Z!`n7~srI%tdkZFtI%yd6;gfVWJu)s$rrUCaPhgJSWO?qB)601WHU)Nlbo$d>Y20~ z*VCl^96(<0tL6QwnAQ7ocz-zhdVhNmOg8(;<++7q%ye=ins5&f(iZ1pawobV)5!yQ zf)LN(+L-(z6HxbL`AwGJWcy5(-Q>kAWf^Lp{4?&6lm9@Clg)JUUzq6!X8J)6icpImLQYtTRQQQ{Km8r%dBxW})vX`ktciDdsdquTy?zE5ERl-ROCW zGc)CH&IG|!{Z7q^o~PP-Y80h$Zl=m$stl&eVCv1>NkhzNYAP*wh)$T#RQ*p~$Vyi8 z18SLiBnUpV&xd)*Pa%p@iYvK_Yp6(l(xyb87{Y=Y8 z0SaTyX(cF08OkBcY34WW7R+y&ET<*YfJQXs0b0|J4s=F8)B5umPx2IRqNZu%am`Fq z+q4gn`!u;vTfkT7eVX2<>3y0xOxw;M$bOnErX34{kLn@AkJ4#|EI;bQ7#zfpmLtcH zzUN2Qvyshg<5x}v!SsO3$c=ob%Xhkbr^{fvT&K%*x>-)Yo*SrzJf_QIx;&;gCIxj& zSI6|WnCbLR$Y6SJLOg?OZTgE0V>lyumya=z>3W{7=jnQ${xe%~_NMP-H~WyobUA#S z2ebQFy&o6E{5~#5B+kXh=J#X;p6cvVSf5R?P<4k94=48}3Q;jp#Hgi6U zSjQ!XlpGl-{oo%fi8 zGdb%+9JpCC`IOnrMNPBRG)o<`)G_O4wxE_-zw#SinNM?YHMepHchQ);X-;d}(Sgp$_S5b>!V`pehUa;Smw6vE{&WuWSb!WqmE)(& z`3|*zx|QE?PCqsCPmgmd@PolzMlOnD#-GJ=Gq-R%bxEcHX8u`wI`S|w{!D$J_2y9q z@d|SOYzV`U!Dr6rXQRnP=AX&@Gns!T^Uvh`+1Gr}kE}=LpY38V`;qTwr-R`02+aQT zJgE2cC`wb78>m7wHPFN7chZn1q%el5Oygr_u?p*dewbtYg=`#!V76>#=O!=C*X(P# zo*Su33^kF}Y^bKL*76gZP{W*UxDMv*L>*t)_lt_i;0tH>3;lgD6SMq6rgI}Pleu-c zjU?*Pm}bam?tQeP4egNG+>YpBt{&zN#C0$?#M9_wu364i_gr<)RrlPv%x4i_qxQM$ zQ0v^??Bfp(6Ryjw=l&f8^RA#I38-pXLvr@wh!k@37<^rb(K zA?JCoGlXG`U=*Wq_UC=bbYwH{Q_OeXGS;(^&B%7%eh#9}dFuQ!C(itr`6xhX%2J*R z+(1Gl-{oju&~E*D%*b=DO&8oTEi%vB;iZ72`@OQkggs zsKc9NGMUSIDGg2nY{OiS+NJ{~~5i>3VVxh#{k7W;{?q%v;rtW1u z=tW=pq4s4jF@&MWYuQB9w9Jf`$!(e3mZ^W4Grmln%MJ#?a&;_M$MTY>VR<>OrXrQN zfx0BqfJWR+8clhCPIRF=J?Vp*mOF3D)wNt*%U|JjK4LEOS%hnP`5M;p6Pwu0K4iH3 zPtF9viX7zPatb5+73DGi71!d-tZ-&l=zqm9%xlF2<}i;1e8o3>%L-Ou?-ll5Veb|D zk;#ff9KqaH{Kcst_|E*kQ^R*^_%085xsLki|2y;lZW=#wA_!K>b7d_uxF7Rd*_QS= z?<*fgJ}Vz*5Kr?g@>=;KdRVE4m7^Gqd9ECfK2|DbrMg$Dd!@QpZe|<5vJT9@`>$#Dt#Nawv zeG7NekS3%e`_=c*0`;#}|7z!Swfa}T%1GWN6WOkw&P+aKHqOdwXJxgsvf5c${WDwn zg`Mo@B&UPmds%<4*6&->jUM!(FHd9r?usmSE}8GOR$e8G>bXCs^0#;^Rw0c5g9 zCTr}oMkZ@yvL-);C_*`|rXrQ7!R^!~nFcgN9&6kW*SH_9k;fW&ta070>4TZBaSqqK zz<)5yHF8=br!|?pkDAx0d5xOa%nO1a3Q~r$l&1pG)W=MIFq0peU?xA9$q#1oLrd=G zLE6%ffjrKWgm{MMalU?dnb&xOA;|BCl^hC!A4`ycetvu!*UFCzkl~NA`*9Dy^9Rn? z+6Z!zhkO*E5HegV!?jlXWIyJ6S+qzoR z<`&F)omsCl>vif~C--&DQS&-AuT%3nb*_7a-aLwVuaomSxvqPYw|JY0OvYJVC+l_U zT{oXaEM^UB`H4;FVckIvbBq%~u>O8JBcJu%amLo0?RxvHx6gX}tbd0wj6+82Wwc&K z>!+jzjT?5b z2eaOAfIov^V+7aW{Xyit7{)wfZ78`Zb56>Vsb8aJwI<6}I@Q#^|d zHok<+H_CjY%s0w>qZ&7w<;JDRcjHPnq0Wu!+^Eit;o6Siy4iR#2sT~L6%?chrMQmD z+=QApJ;xA+GMtgfXwzJrp-s-vCi`x(?nhdZ#u>a{^m>& z{G5ZF-m2!U*COk!&gWLM-Wo?;l4(Fgh9ak}a@snP$(Zj}^W1tA zdu+AGR(ou-$2R$FbFQ|T5H)+Ueo1C`EX`7t3JxEu~bXza_ z@&@mciF&rFXPZ2>eadW{$!+r3wt`ixVJmXkCYNn;*{0@gYTl;iZED`0hvG!xY;C`i z{yfJE{D)T=$w$oK6F%n)zGNX^vxH?hOWW!hDNN&I)VV{QJHFx@WU|9tcbMxA8Sjwsj@_8+juXgphq>;|Pa%q8 zzB|>nQ&v0Gvr|1g)w5I1JJqq%zB}Jz5+Cp(?m0W{z4KFM<81Am&yTEU1Dn{)Hh$$d z)UtCQ=C<=d5d3C#zuiO%=JT6gfBS;1sB>32Zl)f0a2JheinFk*HSOp?XS!h4yB_07 zp5j?vK(4zcqV8RvW1n4LBD-DRAiG`5*@(J#se6|?cO620yX3d)bP(*0ASbygK^zIx z;Z_n+?{4+(R`2e{JVYndw_AO?^}4$c&f@M6FY_9M8Om^6Q@h_`GE?~o*VpdvP~&bj z?pEXOUpdHOTsOP_3W7a($cKFQ6s9cYslavAK;3)Py+^)#?77FB_l!qId+fPqC1$io z|9kYm$2s3~5*h53!Co2cwa;Gb?zQe->+Y@0O;n>g*4~>;0~&ERX*A^?+R=f|bmbY` z$M(L-TfB{W_Nr&E4ED-kud}vyK8sk)8rJd?oA?!Z?3Kq}dF(Z}efHgV9}mzP`|f)L zdGFKvK6&r6*FJgg8^bsz@IDLqnk6hl{`*$*13$Biy*MlT?7Ppt`|P{VzQ5-tFZn4% zC2CTO+T6ljG$w^~9;7V~(TTqF=P{h=-<_4;UqkJ`zlptnx99Kn{N3#Lo5lWUZJ4DLfub_eZ!@F21}D650!cF^1on%ke| z_UC2f;&Srgto~UUdHvaiSNRw{9a8(DYpF+D%;wOGsPT{*552+LI9rFDtwYY%p(#vb zIx~>hp+ziaDa%pwAvql~$3yBmtggfAI;^I{S5T0`T*WoW=Wrb6eAt{1oAcph8qkQl zN##Mz_VAm$gPIPj>9Cp(f5;rvb67ox)pJ;Wht+a;HEZ~Z--6(XT8`NNNGYyF9Y@r0 zL>5P?5<^XDQ5!WKNkTnGGEm2n?u@{!j_CD>CXXBqf}_?xs?VePJgU#5#fZdSN6X+$ z9BoJw^mH_xX0+fwTG57qJVA(Ocpm5HsIz=@7@3S`B9ocQN0{x=FIkA%jxJ#f`}hNg zoK(+D~bA!mE&sUa7+%z%bbX-QqWpw;UTocDPvYDM6;wUFj_X+bq zVOA%ab1x6jo1qM6B=2H2C(P!A*_<$&6J~Q_F-uv_O1{UQC+vA*8?rhfs}r(1A*&O| z3GaC-2>!}P0i4;toTtBJ_SX$mA(|T8PF<2w=U?jl%bEJinfj|0UFc3v`tTIb@&YgM z1M2we7xezuZtQ>3`8Zhy=i;Puak3(nu>VQ>pS1r;`=5-%z9$=DPA5}Hqbbd~7jrvl zZYSIDB(geb1}B}FzwPt4GxxX0{QU^8V|IU=-QS~;>EDx?!6$sq7ntMU3s{6%{{0Pl z`FkB3_?fM2=S&cs%1;rT!BfuQsVljPYtY*%y`0j^soT)YsZ=t!2U(tKh5ApmqZi|t zkL*tAGSAcYJ#F99_C4+FpEk$S<*C3;Bv1!?pH9NrKYb_8 z{^`cFM24qjc)BfJ=*B>vAjC7g!JE9r+c<}(Wp{ciA2Am-pO)Ea=koL#*76gZQ2%N5 zpH~0rgF$fSR@87t4QI^tOgazqGOsb1p$umv=6c4w&Wy)iXY6&xUT5reW+}^A$$ECM zi@oe8yx(DtaUzHaa+8<*6yh4HQJq-gsn4A>qzU)(0Ig}qBlPA`2Jk#D@d~dqocEZ- z2TTnjBJ3FvNlD63jvKk1x+K$pM%+yrO=*t(BkUj1i@x;3z7db{Bv0`y>WENB#LK*j zy(7M5e-M$QFg0n(6THJ0{KR&4u!}t$;&09b5trp47nhTdC`wb7@>Jkjl2G?$8Qg_+S38GU)G}7WIS@oHJ?Q+W+}^Ai9K`K zE0?`;*(;a5avkI_$M_2~&FviK&QBqVQia;wg0q-gCb?yjTPC?>l3OOZAEFao=+0w2 z$x}Rwnsci;x0-XSIrlg|Vg{e^SrC!uN-A?BRf)kI^4KSjee&2Rk390oBab}tw5KBv zBbz*~xjfJDBLCqP?(n;ZG$l~3Lhl%x!0xdEBwjiv^1#M2aY=j}je?31@Aedxyk)SmZchB6lO%sZK> ze9SC9V>V0K!|xp6PmXXLb>=-CMC8*~zS5{GpKCFn9`jv?ob%m8EJ@VoP8!mLR9vU| zS4`j=zGVfgScCPiu>KX+zry-g$lwYYTp@$}GRU8k zJlG?DG0Jf@6{*AxRG}JmxDC1FmrMS8xu4E-r3bwjg!=M7$BPVO1fy`i@=swJ=9b^w z@-O6TmZ1Iu=25_&1?*X%I%ZM8o&}oH9Qzh{fY$h&QlJBBD4>P{YA9gu0`@K-n*uNK zGOsb1p_oqr^C_U70-v* zLGvn9Q;mf&#g4naLJqz2ja4D|jD&o1BTS=rI>L{#^!s*DfusjRPvv3DG)0OT##*?V0 zurpWKc`K}*!fGh&j29lmI6h(qpCH%5&Uj&Gyzp{XvWYEhX9s_BgyZ}bL==%tk-Kq? z6>*Ifxd;0dakh)-wa64cWI8kXl-bN>E#_0i9!2a?#2!WLQDhef`I|FAMA01NLS{u} zR4KRa{2J zWmH^7#noH9Ig44tkF3YFQ`{aUiW5a?tXsmmC9GS*x+SjXMx4(Q&SwedvqWR8UBcQW ztX)C|C7jO^UFktD`qH0)ynr)W;#J<@GrndC%lHnpl-SHR%%+6dlsL>W{t6-@^N^1M z6vp|8bUq@Tk4SY!T0e3)Z}Sdg&~M~#?BRF*z!{Hp#v_k&lG8y%l-{HC9%aoaYerc! z$~lN~4x;25bqlv6)2L(`(1<47i)%H?wHnn9Gmp|^)SJA8dZH#WnW=olT;{U~HAb09 z)LMRG6T8`mdZXk}Qr0E!N6sakwUX`8Z^DYLPDN$Z!ieo5<<+`@Ktu#3Iy zN4BMMBHL23EhXDhvMp7NNJ=8xQqDlB8>!08+)5(#NF{@NXh{b;)0G}P&LE!VIfgKd z5sYFy(@}pZ^_TiQh$vlza+Ie6W>NZ1>{Z%crR`O^1+pk@{nFMiZT-^LDlO~MvMw#_ z(y}f+gHH&r`vuN^>Ge2or8ncemHw6AIDkw_|HY}mmp0_U^;V`RC6GxOnUs-98JU!k zNg0`xkx3bul#xjpXQPbz%G`&Um2o!8bVH40WKiZsUgk9hGnCzEdMEbD8Gu|`74OHx(Lqo)y{;PV5K%Ed z1+jL;;^?hnTiVl+hnaa*NsOF*Xi{-bzJu~OIQ{}R4Ra4DygNCIx4B7 zQdOLhN^v+Nm8@GSi3U7?b6v?XS?zN4snzd zxDG2j8#kEI4eGo>UN;QI`MS~DZdCJ)t$Be@k>8E>xp6V}y75Q!f1}yoxRo93VlVc) zNrpG+{if>N#+@{z38`eD@0;{}Q(GQF?>9Zn2xhV_i15;KL=`isk`L#gN@>ib%9WT) zm20s_m0HwB##NkyD)q5v6?s>&PnFJCyGj?j@dEm-BG)Q!Vb3aKd5=j@l410i20P+%w;}{&`ZpoAfkG1WK}&K zc~>{z>gHShJEY4=~+{g*z@DH708>9btmJ1%n-J(Rw|ujr%nUGDQIk9oqgAmo2q2t_19 z&ItP*krF*c=qW-^5qgTqN_KML?j!P32y;agqa+cOqar$us76idP>+Uq-y*zk5zTpr zHnhik7hyjm>}Q1ijBvLR0~vyQh#1Le#xjA)Ok*Z)hlPzjKd={KY>!2*`4{uPA!W5+hr724VDpQpj)TS;CXhaj5(UR7*qa$7DPA~d0fWZu7 z1fv+kcqTEG8O&xL3yEbZD_F&ctYrh6`IPPK;&Z-WKZiKV3F0};8P4%PzUK#iHS<)u}}k^@*l2 zZ_|QSw50=`=|)fb(4RpJx(Y68MI*T;Mw{bCsXD!LQurF8BG9$2{R#5b{6qg~}x&3CT&xE4)euGLe<+{;f!Q7W0}BYrZJN_%x4jC zEMq0B`G|FFWD8r_!EW}jj{_X$7$^CPulbhqT;vj0_=)S>T#5GtRIHz-I| z>e7I2*pu@1q`dntzZ~~o-kIf{Ro+?Up9Y}{FOiHgRG~ULsi2Drx~Q<8ZS3S4cW{2i z6r|@h+(kuqP|+P!bZ$lGR&;K~4Qyu@cA?^9>_DYADTOmDwV(r?vA>n3GmB67jJ^EE z10DsT%Fe5tlRUWF%I>tXJFV<)D$mEARMv0hljybbKS3xmj5#CiMWoL}Hf18tiJXg0 zB6Sj}lSpSoJ`X}wLg=+hQA*I4VT?eZRrFa!pH=pAf_U6dm52NlgsSSMs=KKwYt?!< zvubmEzUp`;u^HV|{Tz2()!kOT7lf*%A|siJK(E#8cC}8})oT6l`D(M7#};<82N|l# zP)&yFuaXt-QT58yrY?OL%DdRx>h`tzM$TjBs@u65$?^Fb8K^)Fe7=Uet>JSu-eVOT zFh`AZ{J@VvsHWa(>aC{UYIdX-`m4E?Pq7mNpMcBs>oHV0cNTd%Tg{POD)~h z&dr;=g$`;DVK|;u`wQGd?fX2zv+Fp!j@)(3UFUtKFr6bL@J$eka(>h+m@~@VM72l9 zQRa!-g?p)MZ|bHdEzz`~6*{ZCl^r;R@Xh~}Z z@gDE90(T#6SEBVFt^eq6_&e|)+aodAFi#`BG}1{Uoix%(qdCN}jKk=n(bxQmIb!69 z$%nm&DbCxNBc=mpi7`uzSz>e<ogDEcv+k;Jl!4>^v$nwh!T(;(FRCCuI2&NZ(ZVeEZN?`+HVIKSl- z%-nJTdpOK7e&s%Y2BCLK;-22o*E^$`j5FW)oI@PN-@fyNXF;gd>*S*V-jP0Vn4cTca1yz5ro>OLwD_S(1)SCi;mj6 z*Y-z(PzPspkgdhLz0+VuF$S4C$=pfi&N6hCp|cE~{cY#k)MXsg(Q#+}bkFN%;_GBp^vX<}o8K3Fq+1F$neZtbXOG#3EL*8avZpuKsqWe?8o5e|y+}I_|aqVr1(tTYuRGl%yh& zOk+NtH{b?39&kSh4fM|j*1_`z`usq9F>npnxWgYoXix=eP@A!M)*#;}gTCbwSAx*s z{1n5PgNNhq22bD=XOU}&eHoI6HyFkk#&d@6G5=6~4%O#S9SrsPq0SjKwcO%PDjhfi~k?v~bNBn~RM*7?LJm)>ndCzm+`+}pK2tuPW zkeyuk{uwotcR9dGz6wI4?at^-WTgW=@wcNt<#Rl5^wS{p{!1jIK5x?kyY>DmKIA6e zmG>V8p)qfwzcFPPfqNJ;37N*6;am_Jo1Sdsq$9oP%Vu`r?6H6HEC`JYu-oJ8_PE9@ zWChM1=U&I@Vw}4fUxEr$W-9aWx8r~1KAtzhPEM#pJv?K=S~l>A=Rs&nCr~BZRko5_HqQznwJ{?e4Y;GIcuJ0&2!c~v(J-vp4sQ8Av3Qd^L&}- z%RJvR<|pt?5L)mir6|Kp77@oC9$`lo+OLH%H05JHL3fMvwn%S_^tQ--E|O!Bdsws^ zeJnE1VrMVTM**U-Ka1VL;&Du87BVk3_hNG`K7pPV|AKdK@e`f}A^-YyDAswgFOv$h z#ik9u`0qz`s7b`b9|l{w7Etg&W|{eU%?E!JMdZbUb+I*2uYoOdM7 zI}(?aPWSYn1HW>{i|B|~`^&sg$4dR#J*Dd=;FK9|g80gG9}GCpD*m-+9^UxUz6b1cn4 zZmLq32K2_REFI1wRIUr*O6#CmgrXK?_!>Zf-$z#m3$~&|=AUP>{g;(+ZtbUD>)W)u@p2TeCv5>{+e)SieME2FP zuaB&Y; z@}Qr!`dO=&wR%~rm$iCXTbU~8VQqih|JqOZ0%xo}gm-c637oa|7xcc)S?ip&E*U9E zO}1ozp*xrXhJj0u~CN`yU?9p^hK_XgP6@4PVzI}nN6O( z$=+y?x+2Ra=WiO#R2E?V zO&i#WzBk2lfuFd;;~=!z{ccW0ChX7Vw~%FX4We<@X0vX#Gn=Qem}PkO=GClaJ$l}} zg`?`US~&6yzdc>zjOmI}C&&p*H}d~O#$_l!NsNy#e|#^3L$hWYo@KnHu=&7P4= zK<9gOzGntz+w&ot`4s){*~RDRf6r0Ov`3~rGVQTfdv5VK2<;6>L=t4!E5qIlWFjl> zd9Qokn}=e^wbvYb&9T@0?3HhCO={DWPUv874|>xN@7vxX3`g$0a__Y(d+q05UF@}= zd+q1mr7TA$ejhrt*Zu6>$!F}v{p>x3UD|7gFA5StIV!S{)qKRdAha(;YSNOP63D%; z4pG#lK5sJ?x%SDmPp*CQkY(Qn^tn%;`}Dc*3+%`~eeToeK7HdUQo?w6kXrRVOKb-%3pGobtZS<(Ied=%hK-ohR1k6|$8 z-S5u#d&d6%o*~5{J@XM<9C@u2YyGE1F{^D z<$x>)-Pb|0A2jr-xUvj;+XZ zSf0c39G2&>JcmzkhX1nskMH?`tNhA+{^T)Fc*ct$bR;FO@G2R|L>BT>5OWv!gmaD(}(XxW#Sk^3lJ7kpH*y(6QvmdQ5l6(qf;F6{IlwIwtoq`+UqkACvi* z?}uYi)F&GGk2S>%$2!rK9_-{0M>x)@Aaq`R(bWlEozT^ZIV{I}aN;A@v6)Zty>>#*6KA-}ujuE* zUGDKL2%QY`63IwK8q$#gU7gHDUf!T2dOBHw%INE)zE0}vWIehugwc#;0+X1J_w}TE zJh_53e9U?_vV-01!JVEw8H7%K!&xry9r`+DhEqRt1GAhm%PF&*y3e0@XHI!%PMIs- z-Nz>)3CXbo@pd5oRm>Le{qY;tp?EXKn=#&u@%br45sG16zh@naFGocpaX<0yC%z75 zj&Dc|b|k(z@6d+!bfPOg=uJNcqNDiX*o$~w#p^0wSMigX#!Tj*xA;ZGv5b|t=Xm!V zzYg8SZ(%DsjMrhj4&(Q6fWsU^pYdN|@8ZAZJQumd6@KD6H}MX||IR%g@)!T`lovth zEBo@5efi41e3gRKq$NGCk%esJBoA*;kirzD1f?lU1u9dO8q}sP4QNCYngyW*eJ1EL zL7xfwOweb7J`?nrpw9$-Cg?Lkp9%U*&}V`^6ZDy&&jfuY=rci|3HnUXXM#Qx^qHW~ z1brsxGeMsT`b^Mgf<6=UnV`=EeJ1ELL7xfwOweb7J`?nrpw9$-Cg?Lkp9%U*&}V`^ z6ZDy&&jfuY=+p0XhZ6Lepw9$-Cg}6DK2PiOv_4Pk^Rzxs>+`fePwVrvK2PiOv_4Pk z({Ff(PV4iuK2PiOv_4Pk^Rzxs>+`fePwVrvK2PiOv_4Pk^Rzxs>+`fePq(Bs?dV7s zy3>ok3}7(B7{MsUFrG8}of* zzHk2fTW5ds9hbQpgwE8&IcJ*EoOdwKnFBcIj2X_D;akuB_DzaVjFOB)SKrQM0gJH* zeiu7*_9fi?S$BW7BmI!+>|lnWi?dfS|5@{&{Ur#UD@QHrP>+V_{@gnBeNNwgZ#r~N zPv>3)q4OaUlN2+Y*VTDlo!8ZQU7h#$=l9@F&hN)O7t)cF+~lJGI=V0uvs{>md%tj< z`#i)<7yb!C|7%Mx`p}<29OfIo5si797MT6J-F%K&zB9}B{_cB!_r1US-rs%i@4olXzV{A)ACGi?h=yDSDa5)2+us4?nU|%lFd3ikc3Yp*snD zkDdDADnAFIE0NU49bSpSeqH&P?d;?;_6DJ=$;pTuSLL{x9q;AUX?Pc}>g%c*uKvjH z{J{er1)(3ChL$!ECV-+J>dBe7q| zaVk><@9iJ8Si)M?vx!fF(7h0zeJ>6AxtEbn^vCYqvwQc3a}LkGC+|IZ@41)zZ_^Q( z?suandbod#6WAxey%>7nnGf<{M;`d@d+;Xn`2c(Iz+OBs_d{78%JNW_hq65Mxreem zl;xo;4`q2M%foN5pAWC{GdF_JpXIS1e@5ZH{*1=n`CY@%pIg|<4s`lRr;l{{$XSnc z`lvnLw@3YO&LihMx`0_9dG@1UxgCW5s)*ifIc>EIf;ITb; zY!4pWgU2J7%v5GDoAb#3*nRoEzmVVi3;kUOz5d;tcWA>d4s(W)jc7tM^yD|^LQnVdB?p7hvlMtApXumXHk|jY zKciT{VwSKR`|@lJAG03MduE59ZDS{2@ik{Si+-P7^Gic2?L~VP}P%6)uCb!WF4ZD@L#abA_)5;Y2U< z77frtqN&VdA+aoB4V%zSqHXL%M~U`uoKxs1(KnpsJP(jNabnz8V&^1&g;&Xdt`f_h zSl-0NC_yAOs7+m>Y0TTWyTo15S>h>7XBKl=z+z-gyqph^*>AIj6T8R6?lG}>6CdIT zGAEWfvCN6T=3CBj0o}hO<4X~=;5}Az40oNxJV|mVkUfd)Nn}r=&m@hI zKZ*QFI?{#i^rA2QnTgy<>_HOeB>9L9Z01w8aS*waB=8OPFUimRm*-c0=N_^rc@%_` z%9u1Q`t>_&;iUE=sh*R{nY1)^FsZyr?L^Y5$n7`R!hUltoU|?NkvFNles?XLRNkb0 zkT>Z-2BY_+@+H+ik`@xLiQB0r+AO|kw1lAQ_NvLi-=0dsYMj^F;{AHr0z&B`eKIEW6*c% zNla%JbJ2ZjyOa78j&Ph)=smUG{kB@zZ>xp}h0AGnE<0pJpj5SjC5|Wj)7` zJB@uwbBX`X(Q}$#_>J4hp5|E)PMd^uWFjls$-^5Iev)0;cJJxO1jQpldZEN?Ry9j4#Il^~qK{22=1UNUq=<_z{CgWfa9 zo=|Uw@Cnk$rIWlI{b;e0dMb?b7na4uRmeGD>T!GFr%9v5cj5^M^mwg=I zFvrk)#(3n;sQcHFQv~O}=A75!@EN}!7JlvDAe_k@naq*tWz3Q(1KG(%Uh-3j!k8(O zeaU2|Ox37K9n6)f8-sb5_jsQPOlBJ9%4CjA=E!7@Ok3E_F3ghYOAc}bb7VTt&phI9 z{>%D22xkr~glR zkT2U^?(-*)dBU?GoIM~BN$@^oPf0HHoZZf3FMzJIn>%|kN>ZA#*qQ9I`+c!+cHL&z zVRk!{{pTQ@BN^@|M?LIJj>+gfhu(86LiQZ1kUfX&Ib`?yU*R0PkUxj~IrN?*p3|J+ z92a;PgmcQBQ_ne_lheKAOhY;{k_jE>lsl&kIdz<~GF8!U&M4~Rz0c_`bK0AneHh0? zrZAmZ%w+-gB1$)2jSdV(R*&$bIYDv_T0M8EqiX+bIYE)Hg%Cdx88HNrX3yWLN_KLckV^R;hfyM z&ix^4S&!_wb(~wrxf75v_gOA-i7WibA3P1hd0ydFGN9i)vgXN7E@aLla~_%VRH6!Y zIgh+~YN78u^5)TZ9)0I&N;3vAk6k!7k8|?o#%J=HC9gU1&SVbrS;z{^kaq){`IPOr zkGzLCikb4-o4mTuYp%Sy&uicFz6iqk!o0-Gq#_OG%4d#z=Ezr^2<%M0is(I`Ir7!U z9Qj%xTfPyDVhrP%#8hT58*}B8H(xAr=94quHg;g%e4q0L`#H!Fjv;%#8$tMu#1z0? zztI;v_{L}akH3O&{&c)f4s@1Z_WVVV-S3u#^UIz;l4{7GU+?+#p1(Qo(1v!rhunV8 zES%rYTp+U%4$bJ<1nDuPp6YNGIJ6y;e7uw60*o#6(IL;M* zLe4_=qtH!m@jLf;$RqwnFNK~4;Wsl=me!1BHRgZQXA7IHa3Pw|pLcnW_ZiDH=Cg=6 zmZ96itJuO;+(Y5r?BNT(Lx+WLa~Jzi*sd1-ho?Lb!bMV%2AvkkO+Iv5qzL*fQj*fR z(;_jnK&M68(t+;iw1`fN=(NZnbXsH~yV%bm+;tJX6*-4oMJ{ud>zKcY?uxkQw~~>8 z?BpUZ`O(c=vb+^RIVuuKRT?n@cj))j!hT0B{MOGrM)z+$3;dtpNJJ964@FbreJJXE zDC)eTo?q0=MT=4#XBBl;QD+r(R?*5ht7vs<(vh)zgt?09xL8_BrZ?8Pf0 zXL0vcyf*cT#yeYFuHxPUzrz+TKAuTTWd^gE$3kLR$_lo!19^*ohTZZzY~kVuIE;HO zZikDX!abIdvxF{7IJbmzN-V->N_@xPLAYdy#3aQ%l+=I8teBx>F5Gv?{1l`xX_EG75yB?mD_$#1#JU;M*U zUIgJ%VP3*smePMI{g={zsr0lydi_%21w4$XrV1QZrL@`=z*`Q)TTN9EI^pYplLOMbjh z!!Sn<@Mq>vBG{6D_njxTX9e2^;G@>-*K6% z{LBr0V0qU;rAuPA#(_gZl&@>i6<;%22 ztKQ@mzw>}c{EfM)nWLIHs+ptO>*OLYW~o+~qLjcK)vD8oPIN`qYQ5=)%++MBCUdos zxPxl?uC{M!Hm>dx_-X5s2SQ~h%;qO0oHF;Dg1 zFiUlNU;TLyt`Q8Cn$V1v*vT3l=#05)n4^X{YS{T2 z)0oK|7GjPX?yiP8YHUKb8mBqKIsV7@{J@V~!(27wt#Ky^*OarSoHdh>4D;4ZMHAjZT zYi(o;TiMPx$X(0M)Vjfc=h&HA_jt&oAY5Da+B&YC9{tvqv9^9|>$Y}&3gP~0SD+59 z&~I)1*4A%rS!?&C4>H%5xwg!;r!s?C$Xk0J`mQZ+ZGG3)ckK^Y&3>)~;W}ZQTgN$d z`rf3b-v>=SNVxsn4!*J{KHdT1mP(65tW*>m?`QtbRT7|DBVZZq8<&2p&2b{ zjk%)C5oM03QH;aRL`^~OQRax6k2#_~M7F3S9Oo1X$QpH)3&}f9l%vx+y3?ZF=Eczhf7!YY*%COg*#IGe^B@)I?YH>e2)=)N4ma zy3ieWQ*Rg}FjKuTjK^H{R`Urv*v%gHbBLputDZUPnWLVauXmff+(+;A%u(+t=BS?v z+3FXk6lEw+C8|&z-PezzKG8I$2fcCM_4QtVAVaY8^+z%qnd{43U*`Ig(S7~H+zi4E zbk?8<=5OG$4HmJJZ@I)3>`Q}d+`%0*_#0g|kh`J&8zv$R>BvZCUMD*h&~d{CG{QLz zThNNOw8!^lLuWU9p9#p=a2m6j$3hnKG278|!+jjU91ZPG!vyS3!?T=6?uK$VypHZ0 zK1A+@ayOJaTIT2^m_ORiMCV8E(fW?ocXW019j))^#=MQ((Q-%29W8gX?xTk?omtFf z0kTFfVL2bL2HB(6^Cbt7JKBy!A4mRZ`J?5J)_b)4(f`BVMB9@_87POd8|kRgN1Wu> zARLpFytu=dVw9vbm8nf#bRVPpm?oGb#(u|i!G6bhM`G+wOn+t~cg#xcc8qgkHn5pb z*@o;fr_poF1!Ro5g05q99i!`*M?tu8nAgZcHgb}OHz-J9ic$i38_U^P&c^n-aSXCH zZbnPImyLDaxC5P#z416!ag>`uxQRP#;@xRtKEF>GZZaR4n|#g}crTmC-bB|;WN#vS z6WNM((C>@)pi%8bLWKqU)xzH`Q^|Ht4shj7|01v=6#% zI*1|I@1}G4khSQyseYTv+H^a+kh!VMO=WIsADW)WJ~WlL=_T~tRNkig_IruproVAJ z2)~_-{M5s_Z#(Dh-T2JgW@%=QX1U2n0SZwPGc=2&8a1hd`)FpSX76C8X7;_A?wfVR zT+JpjkHsv(t~XoFN36qK&CJov9L>zp>?_W24zo17jNY65j5(S;48qL=(vcBao4-yD zWNt2VbD5jFgXZp_c~xpq3wfK%+g#q}?x1-S>_KzyYjgRV4`UH~aBd6dv~Zs-e5OSY zrl6}9-rW}FX%UB6T5MzsTiL;G%+%r--oF-RYVkGhsD-&&+~;`^ZkdQABqud#NsqZ& znxkbQ%1{x#x2%SDwWT~Q&Ct?2(9*uQ?8O+yGl{9pU^cpMxsX_vvV!f{pO&9t)|OwO z`<90|%5hF1cgxe<4#Mxej6UDd+dG4Cm+ySZ4?GRRt=vN^{kM|4mHu1F-l`$rd3zEGZDF4>A011TG^RatNDm^Y(T%Q+-8 zLAR~`$7QbaGj^uc!yw$+UAE3ZCbE*9T;#>O&|2QsMJR^ct>tW84>?=wxpfRpX^z~j zThopX$lhB2tyglG8$q~@J8e^xCJbaQcBIX2_OK7x+nhl5HnO*oz0LRNw2l02?(hc> zc*Ng43Bqk(L+-W(DU5U4mZA*h(Ro|h+qOWzZS~t$#Yug{W#xMMeeQEnUvbRggn?y4JyV!0o=4NGFqx@*jNI+*c6;Zvx1;S3 zbBvS3qvQ5+x0k!UobC17Ucc@2+x}S)?hufOmq?F2>7d^Z`t2ZVhe}jI<__FjL2SJj7g`UL^;1rc-|GdZ(h4pfu*{WR6be=+ul>w50=GF-ND~n4{Au zWb3pN?_?+MWT$m(WD8r_fw?-#+i4$ic9OHx|FAcm%-iV-KXIL3_>J4h-uYz;(tv)< z#}0P>fu}*ZOIFHKl^W=*i|kz*BYPLwyU5<9Gu@ECi%z=?XC$K;%LFE|2K(M+CwlI( zmjmd!%Q3v8U1aZ~<1RYxa)&>7z+;}^{<^#f!d+7%U)N%kB!Y5yC%Z;cjhfV<9u4V) zp1XFZC%W!x?ydtF!Z1eg9pBKT|@S6 zvUiic+avx){_aW9d-qhNAsrbgf!y8o++EMzozp#<#=K2)Wbdxy?smJoe!I)qUBBIR z+kGlCn8k87aF8P$=M)Ki!&xq1N4j6;D!#+J|ATw){yYfxFmI1A-pwA#NP*6K$lOEb z9y0fM4ex7@Cg`q59QLq>`Fr|o&o^)fJ@wUdIty6L5|&}7dv3ul_q5ABccbr~U+^XI zoaPMY_#ZO&{3{6eN`zd!9Cg$dxuDj`|h2be7NJ@ z6{t*A+;wkv-CLI4I_%wymb9iVeb86$!~DhrUIgJjucH4xnJ{ag?BpUZ`7wJRv-k1c z*{3?@?&F+3QPjs?^=V8~n&ZqqLs`h@T*5hhW$x=UeZ4PzC!>SD^I1eJtJuJ1K4m+* z_>8^Sg}$dq;2ZST_W~Dr6omWPk$y>enN*mopSk*(t6vrhQkbGtL}&eU*3T^c%+b#r z{mjwN9Q``cpYeDf`c1|A&~G;LFk3&F`z>V!cCMeD>nCqNdHdPBe)9J7ebi6i{f=@1 z`TN}r!u^v_2oey+Z@NLj%)NfHx_E-Uk+^6lL%(4XlLB17#j4^T1l@e&9Gh zMrQ->1mQvEALO%x-exd!S;BHYU^N?Y2ZMH_%RzDv(*K}C=zq|+oaZ8!xWbP-3&Ml# z%-~mW&fpAWAsac#jk5>KJ-8||4vxaz4UVBH_I_|ny3>yUS7Lwoc+q$@q>O+N-Ql^MuAWDfIKh;%8B|EvuLq1ASnzB@&GF33cFnte` zdDuXPFoIExVH`Rirt@LT(ebcP*v3xwu#W@id)OI#uMGQ|UFW=e5}z62 zPDYqvL@CNpo{H3@Au*U|gnb(E4y|cRFZwco!3^VF%rV0AN7!}0mmMClh3%MYgtFq2f4{d0puMk=U6$%+Uv2kk#%f+qG^oI$2O-WvX33kV)pVw z5FY0a$9Z?gnQvTArXusWPw@RX&iCUu*~jU6ob2OdA1C{`Z#j?rHuQ!74svEgRU3 z9UpJU$M3?fjF)%3yyMSs7MaIiG66K64(1;nw8m6&UyIVPH8qTVMS z#ePqW=Nrs1@dD3vdtqOmiR z-lhdIPm+0(%#%8x`$@|=h|VS_#r%_fc5;7avx%L2h8>%{k7Kxl$#!P4E+@-9S^txN z;3_|Hm;0Dy@?)OxGzd@0jNDV+#NJFPj=rbpdy2lNRHgxqkadcknbL*s^g*sEgBZdD z^gSh(rP!eQ|$fJmw1(|WG5GS$xks# zBKK6er^-E5?y0qDN)LL|kAcWKbvPp#%~)igI+QQqdKmjNJvC`b$Lr*y0J@*9`{~6o$Mh=LpXv5z zdKB(|dP904_w-SW!8y~XFr8V&qJr(ff5{^fZPo)IE3 zNqL!6q(R;p8If~_oHO)2qXeZWLwPC@Ni}L9`;1PE<6};6CkW4Uhcn&N%(ofLT$Zq$ z50HK4Mr5BU`%Kwq?&ARR&$Q<=zvVm^xx^1V3Bt4Fo|TeUaLz1uGAj$&$bsy$Dxlw4 z`kf`?ta|8nRt!z(h&`EQA7)Kv8Z*)DtobY=4tp|7*R$lECFd+TXMMq!$U5sV$2iGX zoaPK?xfg_I%Q(9vdYJt#o;CXvcZ2X8z0WC3Y04t=oJz<$Cz{6i+?*D)q76OqKF;aS zAciuWg~&K(EgRU(Hg@tEa?g=*&IR;1=SS?toL~4IS?4_95s!oLT>Z|q2XpP^+-5j` zZd*Fgl^*n_FQd@k+~s`08a`${oA?A-=E^cxmbvlhY3?_C%Q^nX_sBN)DnD~Q2+y;t z^KxR><~etsbLM@D&&+!mgy+9XRqOZ_y&WUyHn7i@Xzy?CzqESjR@Tu$3L0M9+)t%%X45^&)dGy2vGd z;79DtBH0&*(CuO!F19m^r|~K7XYs=z9BXG{i=y{fy~kEY_Sh(7kCi=E_SjamMgCa5 z#`a?%Lm19TMzI84$8JK;vD@%n5$m0c-N$}pk3Earv2w=hH&(x~zw>}c{LPaf?7tTh zj?;IXe&h5TCu>{@N+WZe%yBZuRmF^P&3OmA94Bv_ym9)DGkaVQdeIkq6E_n%#k4D(-rOnX$QgbZrfH{^9M7E{#SV$~Ok#*@RK1AlFGXKA&yAHFmK;s5{ zJcpE)5v02tX#qh(8l*dhl8_RC85kH~fB^voTnh;qDM?8|h7#$P?nXk8mi}(P@7wFT zcdu)A&%D3q_dM^}KlYC^UFPYV`JF$Icls{&BJcFWxP$4wZ>FE*aUl4^+my$1fAE|i z+~E&C^MhGtm}5q2(xR&w?~nsC%qT)}-lYt7Gou0@QiuAOYlgXIG{YP-{QVg*jAH^{ zV6GYFn(+Fw19V+0m@e7|uw{GixknnPoS#>}HnT z%(9zVKVha>D_Mh?W^G^-=9+bmTl~WV9`l@6f#B>nFxPBz%r?jDoa96IvvohaB<7f{ z_u1x{T^reEe?mV#We^bzL-(^sF@{(^XEOFZ+xO1wpV9m5rTFfd?Yn38TGk`;Y?)`v zJlk!}*8S|)f#8q1(AkeYF#nG}`{QBm1%h)@lAerYAshLzgE^(p`-qSgE(es?AyuciBZYM4& zZYM4kX^=Zk?zrseKCT#Y$H^Thcbv>|A7K7CHxt(xy~pW0PTz4O(081^<0dl&x#Q%H zlRHlCINiss;16~pZ=Aew^2QzEIHx#^&g0xjoa}M`@(lUoP=J=@qwdjrK z|KvG8oxo@2dLQPRVQw{QQk%Lor5znH&)jbGpcg|Jio2gX5<8hYmN=HPnqRSlxppx3 zceZ1$x#pN_j=9&ljUCLr&lAis_a)|-mlE0LmBek&E600OrYhCZ^}IUNrx8u)iMyZI zm;Si@d2WB6UCgtKd3G^R=6N#DlX+e&x}Ud=zXHMeI-6e<^UwF$`F1pa4S#Zm^IYNz ze`5#p-Oqeo&X;?E{ud;`-7E+rJsEL73$jrW9WQ9WM|jSHRWTx;H`dj!tGnkDVSvZe{EM^&Q zW8p63Ubv3~9Oft|IL%ouV1|WP0>Pi(AUksX+>HsiJ->Yu{P{s3xacj4;cgbWn?>eW zR0Z8HYD_a)(uVeQ#N8~?{UY5j8bky`(e)xXvgl`);5my{^DDm*&t5!x(HSlx<03sT za^s8cavz;94v`vnvDjTKb{C7yu{a+EDME2dBKKms7wdm6r{nDlU!YbCXo(;I0rMh3L`=y6D%5ikP%#AEdL{dCwSsKDfPX^rhGS6OCj!MY5 zOwY?|QI`hje3|=R)*E-R%v~&V7t74CY&2sT&qO98_cFPc>3`WQ79;mExtGbkOy*^q zF#ob`TtM&3^u0{q%U+=G<@#QpjFiZ|T<+y^FPD3{?w1$C?JxIEF0Vsa`~5k$yD6S^8MTo1b^}DUv%_~_vDvR{K#g`Vu!!n z;5K)75(usc5JLAWbiX1w=2(%5tmGg!Zf8XSY9jXvcfG=0ukf4|o#{podLjFYC?@a) zGOqX^x?Z8{6|CeLgp1Ruh8|%APJCnrTbo~_m%Rl)ceY` zq~je*)0822?n=*Dc_k2BuH0!n?al@2lL-D)X#1&+5dyNeWVtl|od;_sMFv zv)b*fb~~%x&T6-_+74E`oz-qflX{>8~ZTBnvM;HBJX3awdPoB zjSy+|gR| zuGRnATioFv9`Fd+e+}bZT42||y3=3n^VjQv;5xUqE)O42mj>u;o$Tw{BKtbo*U7%F z5B-sUo&4+MUpIzWK4&shn8tGA(et`L*om&!9pq1rqT_Y{WpFp^U*DNXq8PzQ+{${lzTT~`ckAoF zK<4#!u>NblMfdBE@NXdaTSnaKZ(Z=&-{#{z`0X;cxyyYX@-h(IpwA6SNsinb-Xe?~ zgmNfVFI65BoWUIX0Z; z9PVYq6|N!o2Dvx5kqx?!Pk`LvUZFLQi)%paeba_Bu?-|_m6Z;HO-^&Q`tZpa-k zcf8#3a>wgFejML319{`+jh8omA&Xgtdym(--$)9^%O3Ae;twEyy!`RUIfc8AclYt; zh<_CbZp=beJb$C-Y+QoRY;^yd%&_SlGLe<+6rd!fG0&#=s7w{=(+GFJsX2DCsSQJL z)hlvcLKrRlTnZc^y4embB>pR;I_<^M{nEQ{WjUR$-d2fY?FPP?Av7D z)|HQuf7@Upi6WZOjA0IPZ(D_)w|UOCO>E^4b|CwMu7evdocY5rY4ze``cs?(X?=xx^k2BPC# zV;Rpx@tME^&)H{FnD3PjDZ5biF47nUQyoynE!`lb=Eqr39t;5ZU+CqXF{ok$;a{+0%+P zw8tEKWZom+9+~!d{$9`V8$ZFlKC`zklQF|y``bGMbL?HfFRWrM>xpL*dpW>ij&g!i zm}6f8+{?b?*ulOq(vuN$?K8(dbL@MMD%iokn$*P{`#!=P`@)fJUkvVhpZoUPK*4=q zGL5hK4s-33ci$Z3+$ZP04Yx8fXR;Odbs#_% z@=^eu9gzJ%S!6#T`vKVx)TSQtAJF>&y&vdA7rN7fvB-VkTc+bV2jZB=LKY$WfgR}g zfPN3ic;Gm?J#d!u+~Ij3cu?+xY0&RM{T|fsL0J!GCl@jwl=)yq-lr<^9;|`ymxKB~ zDDOcxa8Ta|n=ybX_}`U-o_o-94&}gS4w>c9XeROnQ~8P+nBkBa4lQOGD_F%Awqd42 zyYW68GS{Koxc5V^0>Q&?kbtBlCl%&8Y>vY@DMl%Dez*c=Is5@K9sUsaez-GscX%kn z8A%M|a5snD&0%+QSpSFJ&0$?1UdnQ0JuK_twdntFJezO>hh;y!oy&pXpFwo`r|$mj zjrspvgZuyUVIX)!<|B4+#14+genj>og^>M->_=ojQVDl+ME)ZUX^h^Fw4@E~h(zuq z6ZrzqIr0tPGlN;kenj>o@yL1P4|by8BM12txsF`nULbfh5&Au<-=q3H`WA2V4w=Y` zJs-_YdECs=%E)?D)}y*UYVMNYEKUN)kIW`KJk1as& z$7DYy`>}P%eoXdbvLD;Se&j!PmJ8_p*fnl&D-b-M1i6oABnzH%JP-LPL=j{^UYiDd zgp9{q(UuN$q90Lwg>H}Q_V^5D6URIjvY2J8U^RO=z#(*eT*t>xaGG;mMCRi%AODM+ zf#8Y6+$X!xjZYaw1j87? zNM@qrllncm63;pL8ynfe?;PelSGbOhC+~8fM?47xPbDHPdOfArQ$;C3Dctg@3RI#B z)sXj;oTubG)sb*yJ=L9_d_rFaFc8^KO+&Azj`43Gcses~?X>w$kKrd|KD`@vecD}| zmi@G@Ps@H<_S3ST{+oZ0|McrX@Jx_|xRo=>NI^m5KI1mdypQLc`H(u)N7rX$KcnL_ zebDb28PDkV%y4vjCWf*6k2$PmJ@ITtw`aDq3wLtn0P>!(=QDDik@Jk6&)nkykFozV zFL)IQo_&K5vY*XKRk|_`J3Z^>&f3qpFy5sRt!PUJWIxvv+0V&-PWE%d7=irfCNl*$ zf9@OH{J9@khur7(upiGkXD8=Qa)xureon{dUIv2a^?P2%^ZGrn+w-YO%iH9p1huG3 z13scDEoev}jr^D7zjT>v{KYNIaarce@?Dncvgcp+oXhL*naeK%!7G_C!|iek zIE-1Y*uxc>uAJu%&jZ1$?)$3yzM75)5RoSn$XDHvJ)2q6>mH_i#^WI$hgo(&}%?_^F!8O^h$$ri4T$BBp?AK(!c9avy zf9*Oq(fc*`bL|0-0>SHVA@}v%A{xL-re;=z{z=K4lOQ3}XZ%nTgytma`Jix$zqt z*@CWb$bLh|H!h*y8#3O|?~VKD_QtKk@xl?+|TV}JO~8;ev2}A?%$sC zw>$jXXZ|+Jodl#HHEDU9teD}B8SWIJIPYRNcRrv7X1Y@s@82DB-T8z_^m}I%W0=4s zzQkO2%yB1<<*Y{McYebxcihe$neOc5I9GVit3dGX8_0QA-*?|c-n*%h_paUE)&E`n z-<9#MIq#OE0u^~5neWPcSLVBQs82&a!p+>3@visq?w>pf1pmo`&;DaK|Cr~WADGJm z-2XpISi>f^@&|JNvxj}0!gu387r4wd{t5)|CB!c7r6(hvb1x@($dA77mB+L1)ke4X zWW3juR z553>l_kDfePl3Mg>-&CYvLW|82`+j?5z2AlI^yCv{zyB$* ze2(1r-TwV4$bVn{`|{t{`+fQEyPNy&=Ds_*e?Aa=5W=$`=;%RTrm=!U+`$eXJmV#= z1Hp$$NJAL9f2jM1Sun>#@94u~l*D~MbUP0#&;q$1`fhpH8_#(-kikSU4A~!ki=H3O zM#hH=(6!$=3_jHL!%cWEAIkmk5?A?)TgduQ*AE{e^Fx^*>H3kbAGwo9@;-9kkKFeo zy+4xoQ4VsGmuiGF7SDa;IgjoKf{%UXu~{BBr5zpVOjr6~hR0@j97Qyv8N*cmhnXJx z?s+^Db3Kk{HwQS(QBHA|3z+M%IUc*2Cm|A%l$7ZGi8-Fg^u*4dl;lI|P@hILp*e2+ zNn1K#t|#(7k@Jb1Pew2jS)Z8q$#^C*nJKt|C$c|T!66<6g8!!HJ>1~G=KJ?2en;ki zZ*ZHt$o{YHpUVDJ_NTHxO-?H0f0`A&Kh^uwe7N_gg{h6)Pu==cxBk>~o_3=Lz0vhk z*`H3}3-tR`#;4yi1KmEI!!K+^uTM{KnsZ#_3fH;G-~7V^9tVQY+{!bz^6V{i{7lEs z+{!bz@=WGuGC#{jUJ6i%T6hmzv#!O$o(RMp~Nr=xnH=A7kYmo^9y-j{EXROxRn>H`IYq?<1)8#7ccJf zh<^jYm-4=p_hn+U>BY+9CVPaJnG>OZi{Am6v_# z&p^!aQs$TPy_D&t=fCotS0CUruk7U2PnhA=a#muFR~y;EZuW7IKRL=JuHw7rmG7Qc zcJk_M;F0+pzOyg@mGat7Pc0a=4x=uS_1)0h6p9{iGJ{K=z0 zD3pQs>C7m8MCQ;AcC!!JLnn|uBzs8q&`thE{?H3v2SN#gBqRxMk`K8Pl&2z|lb|{u zQU_fpkUfEp6ZAsAenT^qK)(rwqT2)`8O>B?v5K{LF z1b6s{2iSjtr#$CXAe1nG>d+?k@c9Q5ACpnGmiFBOkaUhg9gkBRTBPD4`M+P!c5ciQ- zuZd+$+=wPLrxmg$?ts}6cV!4VP8`Ju^qkntiN`U4iF|?FiI=jEdx20A&rRYvN!(i! zpGh*CO_(EzIg*$o$wADJOmbZ(mp8eaNiJt{Ig{%-xw}pt&1l9lp3j-g zm&l%c8T;|>qzI!N-jx*glj27FDP>QYl;p^t(w(QwN)B?9 zj{?+0?vyQQgXg5Qla$@)K`&%a>9$kqH>G}4%9!#SbenPpvsj8dNhx>AL+Cf9epBi< zrK~A0a2c6X%AC?YqpLZ_@07F$F-KarllCkZxXe}LPAhlXhv+^mgxq0rhshl# zb67geAC`%-=sir|Vfqehg1*D_9TrYke6T7tIXhPPdE|cuuL$e!*TdQNu@ z8PnZC*XeYfPS@!Z@)mNZ&rczWQUY1i>pFb}WKJ)0dR?d2b$WM_Uf%TXJH7i(ulMxw zrteNqyr1dEvw*#L?mM3IPC0z$9kaaiJ#oxqA&Xdr8Qw9&JHNA?UF_imr!mtzzAN6j zg1It;NX^^4LngA5i@caCgE=yoBg2Q(qalsadj@l4Xoop6^g*@^lbOO-e1ohRW-uF> zGsv7l<_sIy#1`bu@CQ4QH^Y7o;(jt5<$fTPF%6~h+>D-+(H&;=nT%%1WR6V9NrkR5 zg^>j_WGX;micu1~$y62ZK_)Y0s)P3-leseW#=U29E152{gfa(7ND`8f5_4siH*kGk0M$^Res9e+NQY(oz<;mgO_1GM$;|EQ{<}79)EW*|W%=Wg}aVKa1Y8 z=sn9Zynk8FaE|AJP*%CKrohc)^_;A3CTk|Lk{#LoUS=q(ezWQ~tBhIeq1&vDX-a4M zA$QiX=r^l=v+6gitXcoZx5%7T=B&T4iZ#fabv^DptG=_!o7D|u)pyq2Tn~h@C88jn zo6U2weT~m#GfTFA1EK71kbuM_U2D&ryL&xR)F<=Ws7M>>@{Px-o`@c-L~=4TN&OjnC$6$zZ<1 zJDYPham-~YYtdy+{pXZBr~Y&P!C{Vag43Mi0xtuhTyK&JJ?HYATp7tic5>p@b5*7q zHIXq_13scD&FRVj^qgxLBN)Ya+)ggHlWQt+=aM^@+_~h=C3mhB$el~>Typ2yip;s( zOfEN*>l%8`rSDw&&K)En`p&KA++n0g?%ZZR{}5eID{M z5Xzf~q$Ef8dEdeudEIy3+_>+&-jTdTC`LWx&f6Zho!4{n_MkU?>5uGrC!y!O|3k*S zGthNjUFX$x-c@Yj7$-Tyc`k94zqrL6?jdhJIrGVxFD0pwHJ>}l_YU66d^*pUom}MM z17yrM20i3+!}LUvH74CSea4hmJJIyLFcDCXh0g*>OQofr0*!p#_ntc9Z)%@`*04c{|^*~BrI z6|BZgh4ocfUxm$8_$)WM%YAfK*bWQ741|gVFjo71MeMGK zY(+k%7k%iDtVISBiOfZ0E+TW0ud&x6(~-BxEOcK)-XaV58FyD?8GE@E2o+6*=N9#x zqC@eSqGl;-j-uDNfv$?);YlD=%nZdsB*HsXEID>lEE8EVQ!(#)G5arOu3|Ou9aXF) zZD>zty3qr36*EV%aZKb3rlR*^dM{>BTOy*)QcpV58 zccaDSE$)_zC&4Whm$$fkE$&{6zfDO#;xjzAxaSnV7zmZ{nG$9xQH^>uq%lothZ#zk zp+s-`G61_NF_IX}RAK_&xf13ov6yw}x5O5J1Vge<{6}N=F7VlZ_ly zM($FLa5JSmr&Jr-(}~W=UdoBPKA3fxQSw|JZM$X>b(&4^$+o46VXm9d{P`T3A8 zd_q4yMfNhok-d!UWn?e&CDV|<`T3N8;Gb`9P?gJmoyMoadD5i_erZOF8=}XAkAp zXBGay{O|efdqt^FPd;T3ZtT6G#9#;SxtaHL`JUYG>HodyEMO5!`Gr-i;ZJn@-c|nM zzvukJ10M5lAXG6iVPqgPGFHq@J_=Hp_o#*372DH^E_6rMil5LAnJda%QO6Z0qUVb8 zR-B3(ulOzUR-D0X=CBFfRvv)Fh}K|kgf7| z+)QORQ`yZ_b~BaTOl3Dy`84LLEN|s2$XQv=%C7?cZ!66EenOIvj1;8iEo6Vc1dSNT z*R01bt0W*7AJBo1>4na!$X+D^*{jH2MfNJ6Ga31-=)H>Gt9VbV%wr*o*ooX#PH~q1 zp5tb!{KYN)M)oQ?u9_VER+X`;eyi%XYBq9We^uY53e9MVo2jbXs&1xg7u-x$H&a#D zRpqVfW~$0rRnDqsJ#to?!(4u5 z3CoeI+7|ZXCaPWGI&Qhz-~7V^+;la!Qcd60Q{f(}%UeAi?~sYCTo{AXLL=YLvyT*XTevU9pE6`mf<$YM7zM2;5DLF^uCYzQIg2+)WL4Q^Q;} zHsRiD=(xraj&p|dT*6#6%u&M}HOx^n5y?o2?rWN(W(G22j+#Z#bIpb{#@*C(H#OZ& zO?OkX6XvQZZ%ubo^AqH(DQ8VNYmP_%H77F#xodvScT7k2n(H}9*Ef7GQt1*0Gg8*vW2mT}#)sbY1Hb*SU%NsdbkZfl%!?NI+te z+7n%dFt22EcM&b5%*QU8$B>neeXs6NTP_wT=mUWKNfS; z_xJ0sWj*n1#a#8xRo`vZKZzaHKgTV6AJsQcee=|R&Z|JEf!k^jLhlW-Q3{pc^lgwnL2o?BaWmg1&E6psayRpx*(?{ud6zPjN6*bF(*_+k`-FaYPO~8l zWjN8ejb?7P*-YeYHjjlY+E|)I5OP%@gt# z>B)#YXr7ZiyX7RlU@>yH+{hL@r{ym8a)3j~-tsd4@CX@Ox|3GAZl&v1 ziAaL3Tji!K6{tiNWNlTG+Q{5W=2kMd(siqk>506pyuYpV-b&t9dT$lMFx*V5>8$5m zAk^A(TYFCHI`~X$v$Qrx>(%_qZ^W}5GqgU;QBH6g`)GZWzcEwm2k5@Fx!UO7?}3Ke zukE+!qwP$7#NTV{@3r;!+WLEK-DF#Tr|o}#X9v64$3gz& z7$?z1+ed*=yEh1<7;)^P%Et>dqF4?3Pij*d?Qp-w@(x1AE<*_~387SHXZgHBcPyiV2m2>a-ylTNMi z+)nNBj82nrhn;@FvpVU&)8arV+#KQN2>18G%@J;naC3y4Bi!E&H%E9a>e2wu2=|O| z&j|O7@OE^hGu`lBg?q2U`!ayf7{XA7GZK3VABVZaC-EiI_?qvKFH!U*|pS=MYCY&MD4vfy-Ru z2DiD(eID^I&v_LHb$NpXB<4+0keallBLkVqMo#jOpMsRd-n-a)7klrbhc5Qi#q3?o z-o@-)HX>`6eH`S^K&WdH-X=X6$wFf~(1|W|$3D9*#16aKVOKlsYNoCaFh^H&bTvn} z;#5M0Zf>ue+v{c*-Nqq9H~n|hf46PutD6knj&U*&>YkEJ$k07IxoAmOWa!?LPjFM+ zmmx!Uchr3?dhPxc8M^E8V_kk+hHA+0aV_c+%_L;_*bRK_20q@6oqa6B$7eVn2=xdf z2Qu`?O99%`3mJO!<5L!}8X0=5Cmy@)@j4LdDML^D>}j7p?WJdJWa!y|kFb}X(~zO3 zJM1|fd+B)=8G2sgY9Q3hUV7z2hF*m!hQ0Laj|{yA5rMt*`VAR+ZRU6ErFTMP=^!^SRde7uX?4|c*Wa#}Dw*sM0?B$ap$nZ%?N@Fjd3`T}ehA{$r z`D6<+e6pQg*h`;e$j~P>X|b0+&5)r_YuaHieP$s;pP!hIz4W<(41Ml!FA(Z$FMZ!d zhQ8%^4}0kwg$#X1F$R0-y8{{e?&Uxr)X!e}r9p;%>BxY+^lO6*{W{Vad+9e98T$Rq z66~elU1aF@kSBpqe|za)9vS*qrYiQ*e>5`mkL7dhrT;!;=zo}_fzSYZ8IT?s24p51 z_A;OoG7RWO5A0>YB4ik_oR!$ifJewM;2AFip-=7Q)Ay0#)9QSPy?iN z>QEnh`Rog1`0Ojb!CpQ)i432e<6~A~DNg zH#^uYga603Ovm#F+t=Ww=xXpPbT!!C2b*)SIR~3_uq=cB9~e+HtPA%l@|NE8#8#FtFtYh)erBlbCDJ`35%7Jg?NJJ`)} z^f*M1Lv%Pq?jctLp$J(c-XsO?C*m#SjF2B!Ak7!2+ zB!2K!kTF;vNrq!qY$~G9|i?OiLK)$%wfk%@t{;NHay6DY7(`sY-Rs7TJdObfgnq z=#IG}%@t{;NHay6Dbo88>4qZRP^9~bw3A3PMb2Ozb`oi(NOu%zCy{1~+{rHXasc0t zk#0NEcT=RDM4Bn`CJ%Vbe>1tSq4qP>Ohex$9U1VQGqeDOaZ^J}Vy2;Gse*kCHPg^q zw8Kn(&oVT$Gu`OHAY$?TGITQE@I5~u|4{jdE@K6&S<7b3Gt@jo%`?C=fE1W#n0bboXPCVVvzK9J7-l!a>}FUQ^AZblYf}} zQSwJ6Br)RmA0@xv=nO^8;z#0p@<-i8{wVo}%RgNH;YoOt z^kgIp*~vv7ic*47m}9u_D!}*Ncl&8gIgInpPyO6a#rvg8`*+6MxNj_XVL#i`A1$s{*m&Jlz*iBBVY155E>=_ zDEUXFBsKDnl6_P`9qQ4FwsasIGmYww{fx4kQDz!7gh`lb zl%0&4#@BquJQlKsb!@<1Mr~yqhd9D_v7^z0iC`3Ch-Ct^n8Q!ZWdV!$ z6+0Te5jz@frqOO~^Z^cY6tj)Kjqj<^_qfj^{tbj;%oSs<7&FC~DaK4OX~|4Ba$>fa z@>Im0V&3NiYGAGybH$h`#!NA0is?uXdeaxP#dvpOygM}pJF+F_}t#}tYR(eiDwggIly7;XpFhWxW6%%xyB7{1wvy3m}P82%rn+JW0RAC%w!`c<{In% z#un#Y%21B_G{T<7HlaDK=td8EV@G2L;Qq!&5zT1E@I5n_#cbl3$4cyI>^kgdteM8T zzp=a7$3e_C_BuDY&EI&J#y$vy#+hrJxyG4koSDX%X`K5Tm!6Dd!EED7Q5Jg|SAj}Y z!Cd3aHO@@q%rwqS7{)RV@6xzQm}{K5#+hlHnZ}uEockMRU*qg+ zoPCWm+qnH4;!lonoKt~NY%260D`TwwWAz`KpMt!L{$pj1eGfTf<&5>7#L5~gYiwKe zA1h<5{$uqY`x%3YM*p!g$GWdrIb-FForA2gvc@h%|FJU0>OWThv0K@Oys@&z${PD$ z*0Y@FFWgk@9qeJen;M^lH%W&6$EP7HImnHh8gHiYg(;1j8gHiY_AuT}jW^Ty7PLhF zwo5olpd~GC{@(Rj5WyYN7uLGER_jf}SVnd4irNjAtTWFqQxDEz_CF zO7uNJ-xGc#p3VHuc6PBB_cGxidY^EQ7lF{{Zq zbK*mu@G20R^agsKl$fNHq$B#7G#Q;tvbRZgHp$K=+1aEOtmaqrGs&|jZDU^`G{t{! ziaDpOVhjHLDLdHBfB(6@ru@kTbTH)_H@MAR?jzsS3{>W0rXt7GI2N-E&z@@Dss8@d zsurface; surfaceNode = surfaceNode->next; + interpolate = gInterpolatingSurfaces && surf->modifiedTimestamp == gGlobalTimer; x1 = surf->vertex1[0]; z1 = surf->vertex1[2]; x2 = surf->vertex2[0]; z2 = surf->vertex2[2]; + if (interpolate) { + f32 diff = (surf->prevVertex1[0] - x1) * (surf->prevVertex1[0] - x1); + diff += (surf->prevVertex1[1] - surf->vertex1[1]) * (surf->prevVertex1[1] - surf->vertex1[1]); + diff += (surf->prevVertex1[2] - z1) * (surf->prevVertex1[2] - z1); + //printf("%f\n", sqrtf(diff)); + if (diff > 10000) { + interpolate = FALSE; + } else { + x1 = (surf->prevVertex1[0] + x1) / 2; + z1 = (surf->prevVertex1[2] + z1) / 2; + x2 = (surf->prevVertex2[0] + x2) / 2; + z2 = (surf->prevVertex2[2] + z2) / 2; + } + } // Check that the point is within the triangle bounds. if ((z1 - z) * (x2 - x1) - (x1 - x) * (z2 - z1) < 0) { @@ -423,6 +442,10 @@ static struct Surface *find_floor_from_list(struct SurfaceNode *surfaceNode, s32 // To slightly save on computation time, set this later. x3 = surf->vertex3[0]; z3 = surf->vertex3[2]; + if (interpolate) { + x3 = (surf->prevVertex3[0] + x3) / 2; + z3 = (surf->prevVertex3[2] + z3) / 2; + } if ((z2 - z) * (x3 - x2) - (x2 - x) * (z3 - z2) < 0) { continue; @@ -442,10 +465,30 @@ static struct Surface *find_floor_from_list(struct SurfaceNode *surfaceNode, s32 continue; } - nx = surf->normal.x; - ny = surf->normal.y; - nz = surf->normal.z; - oo = surf->originOffset; + if (interpolate) { + f32 y1, y2, y3; + f32 mag; + y1 = (surf->prevVertex1[1] + surf->vertex1[1]) / 2; + y2 = (surf->prevVertex2[1] + surf->vertex2[1]) / 2; + y3 = (surf->prevVertex3[1] + surf->vertex3[1]) / 2; + nx = (y2 - y1) * (z3 - z2) - (z2 - z1) * (y3 - y2); + ny = (z2 - z1) * (x3 - x2) - (x2 - x1) * (z3 - z2); + nz = (x2 - x1) * (y3 - y2) - (y2 - y1) * (x3 - x2); + mag = sqrtf(nx * nx + ny * ny + nz * nz); + if (mag < 0.0001) { + continue; + } + mag = (f32)(1.0 / mag); + nx *= mag; + ny *= mag; + nz *= mag; + oo = -(nx * x1 + ny * y1 + nz * z1); + } else { + nx = surf->normal.x; + ny = surf->normal.y; + nz = surf->normal.z; + oo = surf->originOffset; + } // If a wall, ignore it. Likely a remnant, should never occur. if (ny == 0.0f) { @@ -460,6 +503,15 @@ static struct Surface *find_floor_from_list(struct SurfaceNode *surfaceNode, s32 } *pheight = height; + if (interpolate) { + static struct Surface s; + s.type = surf->type; + s.normal.x = nx; + s.normal.y = ny; + s.normal.z = nz; + s.originOffset = oo; + return &s; + } floor = surf; break; } diff --git a/src/engine/surface_load.c b/src/engine/surface_load.c index ac2ee50c..ce5fd37f 100644 --- a/src/engine/surface_load.c +++ b/src/engine/surface_load.c @@ -14,6 +14,8 @@ #include "game/mario.h" #include "game/object_list_processor.h" #include "surface_load.h" +#include "game/game_init.h" +#include "math_util.h" s32 unused8038BE90; @@ -359,6 +361,11 @@ static struct Surface *read_surface_data(s16 *vertexData, s16 **vertexIndices) { surface = alloc_surface(); + vec3s_copy(surface->prevVertex1, surface->vertex1); + vec3s_copy(surface->prevVertex2, surface->vertex2); + vec3s_copy(surface->prevVertex3, surface->vertex3); + surface->modifiedTimestamp = gGlobalTimer; + surface->vertex1[0] = x1; surface->vertex2[0] = x2; surface->vertex3[0] = x3; diff --git a/src/game/camera.c b/src/game/camera.c index bde06626..9351dea4 100644 --- a/src/game/camera.c +++ b/src/game/camera.c @@ -484,6 +484,10 @@ CameraTransition sModeTransitions[] = { extern u8 sDanceCutsceneIndexTable[][4]; extern u8 sZoomOutAreaMasks[]; +static void skip_camera_interpolation(void) { + gLakituState.skipCameraInterpolationTimestamp = gGlobalTimer; +} + /** * Starts a camera shake triggered by an interaction */ @@ -5552,6 +5556,7 @@ s32 set_camera_mode_fixed(struct Camera *c, s16 x, s16 y, s16 z) { c->mode = CAMERA_MODE_FIXED; vec3f_set(c->pos, sFixedModeBasePosition[0], sMarioCamState->pos[1], sFixedModeBasePosition[2]); + skip_camera_interpolation(); } return basePosSet; } @@ -5714,6 +5719,7 @@ BAD_RETURN(s32) cam_rr_enter_building_side(struct Camera *c) { if (c->mode != CAMERA_MODE_FIXED) { sStatusFlags &= ~CAM_FLAG_SMOOTH_MOVEMENT; c->mode = CAMERA_MODE_FIXED; + skip_camera_interpolation(); } } @@ -5909,6 +5915,7 @@ BAD_RETURN(s32) cam_castle_enter_lobby(struct Camera *c) { sStatusFlags &= ~CAM_FLAG_SMOOTH_MOVEMENT; set_fixed_cam_axis_sa_lobby(c->mode); c->mode = CAMERA_MODE_FIXED; + skip_camera_interpolation(); } } @@ -7279,6 +7286,7 @@ BAD_RETURN(s32) cutscene_unused_loop(UNUSED struct Camera *c) { BAD_RETURN(s32) cutscene_ending_mario_fall_start(struct Camera *c) { vec3f_set(c->focus, -26.f, 0.f, -137.f); vec3f_set(c->pos, 165.f, 4725.f, 324.f); + skip_camera_interpolation(); } /** @@ -7311,6 +7319,7 @@ BAD_RETURN(s32) cutscene_ending_mario_fall(struct Camera *c) { BAD_RETURN(s32) cutscene_ending_mario_land_closeup(struct Camera *c) { vec3f_set(c->focus, 85.f, 826.f, 250.f); vec3f_set(c->pos, -51.f, 988.f, -202.f); + skip_camera_interpolation(); player2_rotate_cam(c, -0x2000, 0x2000, -0x2000, 0x2000); } @@ -7320,6 +7329,7 @@ BAD_RETURN(s32) cutscene_ending_mario_land_closeup(struct Camera *c) { BAD_RETURN(s32) cutscene_ending_reset_spline(UNUSED struct Camera *c) { sCutsceneVars[9].point[0] = 0.f; cutscene_reset_spline(); + skip_camera_interpolation(); } /** @@ -7355,6 +7365,7 @@ BAD_RETURN(s32) cutscene_ending_peach_appear_closeup(struct Camera *c) { vec3f_set(c->pos, 179.f, 2463.f, -1216.f); c->pos[1] = gCutsceneFocus->oPosY + 35.f; vec3f_set(c->focus, gCutsceneFocus->oPosX, gCutsceneFocus->oPosY + 125.f, gCutsceneFocus->oPosZ); + skip_camera_interpolation(); } /** @@ -7373,6 +7384,7 @@ BAD_RETURN(s32) cutscene_ending_peach_appears(struct Camera *c) { BAD_RETURN(s32) cutscene_ending_peach_descends_start(UNUSED struct Camera *c) { cutscene_reset_spline(); sCutsceneVars[2].point[1] = 150.f; + skip_camera_interpolation(); } /** @@ -7459,6 +7471,7 @@ BAD_RETURN(s32) cutscene_ending_peach_wakeup(struct Camera *c) { BAD_RETURN(s32) cutscene_ending_dialog(struct Camera *c) { vec3f_set(c->focus, 11.f, 983.f, -1273.f); vec3f_set(c->pos, -473.f, 970.f, -1152.f); + skip_camera_interpolation(); player2_rotate_cam(c, -0x800, 0x2000, -0x2000, 0x2000); } @@ -7469,6 +7482,7 @@ BAD_RETURN(s32) cutscene_ending_kiss_closeup(struct Camera *c) { set_fov_function(CAM_FOV_SET_29); vec3f_set(c->focus, 350.f, 1034.f, -1216.f); vec3f_set(c->pos, -149.f, 1021.f, -1216.f); + skip_camera_interpolation(); } /** @@ -7504,6 +7518,7 @@ BAD_RETURN(s32) cutscene_ending_kiss(struct Camera *c) { BAD_RETURN(s32) cutscene_ending_look_at_sky(struct Camera *c) { move_point_along_spline(c->focus, sEndingLookAtSkyFocus, &sCutsceneSplineSegment, &sCutsceneSplineSegmentProgress); vec3f_set(c->pos, 699.f, 1680.f, -703.f); + skip_camera_interpolation(); } /** @@ -10340,6 +10355,7 @@ BAD_RETURN(s32) cutscene_door_start(struct Camera *c) { BAD_RETURN(s32) cutscene_door_fix_cam(struct Camera *c) { vec3f_copy(c->pos, sCutsceneVars[0].point); vec3f_copy(c->focus, sCutsceneVars[1].point); + skip_camera_interpolation(); } /** @@ -10373,6 +10389,7 @@ BAD_RETURN(s32) cutscene_door_move_behind_mario(struct Camera *c) { } offset_rotated(c->pos, sMarioCamState->pos, camOffset, sCutsceneVars[0].angle); + skip_camera_interpolation(); } /** diff --git a/src/game/camera.h b/src/game/camera.h index 173ab8a7..b1abdc4f 100644 --- a/src/game/camera.h +++ b/src/game/camera.h @@ -657,6 +657,8 @@ struct LakituState /// Mario's action from the previous frame. Only used to determine if Mario just finished a dive. /*0xB8*/ u32 lastFrameAction; /*0xBC*/ s16 unused; + + u32 skipCameraInterpolationTimestamp; }; // bss order hack to not affect BSS order. if possible, remove me, but it will be hard to match otherwise diff --git a/src/game/envfx_bubbles.c b/src/game/envfx_bubbles.c index 16a92720..891f9a1e 100644 --- a/src/game/envfx_bubbles.c +++ b/src/game/envfx_bubbles.c @@ -35,6 +35,20 @@ Vtx_t gBubbleTempVtx[3] = { { { 0, 0, 0 }, 0, { -498, 964 }, { 0xFF, 0xFF, 0xFF, 0xFF } }, }; +static Gfx sGfxSaved[60 / 5]; +static Gfx *sBubbleInterpolatedDisplayListPos[60 / 5]; +static Vec3s sPrevBubblePositions[60]; + +void patch_interpolated_bubble_particles(void) { + s32 i; + for (i = 0; i < 60 / 5; i++) { + if (sBubbleInterpolatedDisplayListPos[i] != NULL) { + *sBubbleInterpolatedDisplayListPos[i] = sGfxSaved[i]; + sBubbleInterpolatedDisplayListPos[i] = NULL; + } + } +} + /** * Check whether the particle with the given index is * laterally within distance of point (x, z). Used to @@ -241,6 +255,7 @@ void envfx_update_whirlpool(void) { (gEnvFxBuffer + i)->yPos = (i + gEnvFxBuffer)->bubbleY; (gEnvFxBuffer + i)->unusedBubbleVar = 0; (gEnvFxBuffer + i)->isAlive = 1; + (gEnvFxBuffer + i)->spawnTimestamp = gGlobalTimer; envfx_rotate_around_whirlpool(&(gEnvFxBuffer + i)->xPos, &(gEnvFxBuffer + i)->yPos, &(gEnvFxBuffer + i)->zPos); @@ -299,6 +314,7 @@ void envfx_update_jetstream(void) { + coss((gEnvFxBuffer + i)->angleAndDist[0]) * (gEnvFxBuffer + i)->angleAndDist[1]; (gEnvFxBuffer + i)->yPos = gEnvFxBubbleConfig[ENVFX_STATE_SRC_Y] + (random_float() * 400.0f - 200.0f); + (gEnvFxBuffer + i)->spawnTimestamp = gGlobalTimer; } else { (gEnvFxBuffer + i)->angleAndDist[1] += 10; (gEnvFxBuffer + i)->xPos += sins((gEnvFxBuffer + i)->angleAndDist[0]) * 10.0f; @@ -495,6 +511,8 @@ void envfx_set_bubble_texture(s32 mode, s16 index) { gSPDisplayList(sGfxCursor++, &tiny_bubble_dl_0B006D68); } +void interpolate_vectors_s16(Vec3s res, Vec3s a, Vec3s b); + /** * Updates the bubble particle positions, then generates and returns a display * list drawing them. @@ -506,6 +524,12 @@ Gfx *envfx_update_bubble_particles(s32 mode, UNUSED Vec3s marioPos, Vec3s camFro Vec3s vertex1; Vec3s vertex2; Vec3s vertex3; + Vec3s interpolatedVertices[3]; + + static Vec3s prevVertex1; + static Vec3s prevVertex2; + static Vec3s prevVertex3; + static u32 prevTimestamp; Gfx *gfxStart; @@ -521,18 +545,52 @@ Gfx *envfx_update_bubble_particles(s32 mode, UNUSED Vec3s marioPos, Vec3s camFro envfx_bubbles_update_switch(mode, camTo, vertex1, vertex2, vertex3); rotate_triangle_vertices(vertex1, vertex2, vertex3, pitch, yaw); + if (gGlobalTimer == prevTimestamp + 1) { + interpolate_vectors_s16(interpolatedVertices[0], prevVertex1, vertex1); + interpolate_vectors_s16(interpolatedVertices[1], prevVertex2, vertex2); + interpolate_vectors_s16(interpolatedVertices[2], prevVertex3, vertex3); + } + vec3s_copy(prevVertex1, vertex1); + vec3s_copy(prevVertex2, vertex2); + vec3s_copy(prevVertex3, vertex3); + prevTimestamp = gGlobalTimer; + gSPDisplayList(sGfxCursor++, &tiny_bubble_dl_0B006D38); for (i = 0; i < sBubbleParticleMaxCount; i += 5) { + Vtx *interpolatedVertBuf = alloc_display_list(15 * sizeof(Vtx)); + s32 j, k; gDPPipeSync(sGfxCursor++); envfx_set_bubble_texture(mode, i); - append_bubble_vertex_buffer(sGfxCursor++, i, vertex1, vertex2, vertex3, (Vtx *) gBubbleTempVtx); + sBubbleInterpolatedDisplayListPos[i / 5] = sGfxCursor; + for (j = 0; j < 5; j++) { + for (k = 0; k < 3; k++) { + Vtx *v = &interpolatedVertBuf[j * 3 + k]; + v->v = gBubbleTempVtx[k]; + if (gGlobalTimer != gEnvFxBuffer[i + j].spawnTimestamp && mode != ENVFX_LAVA_BUBBLES) { + v->v.ob[0] = (sPrevBubblePositions[i + j][0] + gEnvFxBuffer[i + j].xPos) / 2.0f + interpolatedVertices[k][0]; + v->v.ob[1] = (sPrevBubblePositions[i + j][1] + gEnvFxBuffer[i + j].yPos) / 2.0f + interpolatedVertices[k][1]; + v->v.ob[2] = (sPrevBubblePositions[i + j][2] + gEnvFxBuffer[i + j].zPos) / 2.0f + interpolatedVertices[k][2]; + } else { + v->v.ob[0] = gEnvFxBuffer[i + j].xPos + interpolatedVertices[k][0]; + v->v.ob[1] = gEnvFxBuffer[i + j].yPos + interpolatedVertices[k][1]; + v->v.ob[2] = gEnvFxBuffer[i + j].zPos + interpolatedVertices[k][2]; + } + } + } + gSPVertex(sGfxCursor++, VIRTUAL_TO_PHYSICAL(interpolatedVertBuf), 15, 0); + append_bubble_vertex_buffer(&sGfxSaved[i / 5], i, vertex1, vertex2, vertex3, (Vtx *) gBubbleTempVtx); gSP1Triangle(sGfxCursor++, 0, 1, 2, 0); gSP1Triangle(sGfxCursor++, 3, 4, 5, 0); gSP1Triangle(sGfxCursor++, 6, 7, 8, 0); gSP1Triangle(sGfxCursor++, 9, 10, 11, 0); gSP1Triangle(sGfxCursor++, 12, 13, 14, 0); } + for (i = 0; i < sBubbleParticleMaxCount; i++) { + sPrevBubblePositions[i][0] = gEnvFxBuffer[i].xPos; + sPrevBubblePositions[i][1] = gEnvFxBuffer[i].yPos; + sPrevBubblePositions[i][2] = gEnvFxBuffer[i].zPos; + } gSPDisplayList(sGfxCursor++, &tiny_bubble_dl_0B006AB0); gSPEndDisplayList(sGfxCursor++); diff --git a/src/game/envfx_snow.c b/src/game/envfx_snow.c index c3c14a5c..d2212ef6 100644 --- a/src/game/envfx_snow.c +++ b/src/game/envfx_snow.c @@ -54,6 +54,26 @@ extern void *tiny_bubble_dl_0B006AB0; extern void *tiny_bubble_dl_0B006A50; extern void *tiny_bubble_dl_0B006CD8; +static struct { + Gfx *pos; + Vtx vertices[15]; +} sPrevSnowVertices[140 / 5]; +static s16 sPrevSnowParticleCount; +static u32 sPrevSnowTimestamp; + +void patch_interpolated_snow_particles(void) { + int i; + + if (gGlobalTimer != sPrevSnowTimestamp + 1) { + return; + } + + for (i = 0; i < sPrevSnowParticleCount; i += 5) { + gSPVertex(sPrevSnowVertices[i / 5].pos, + VIRTUAL_TO_PHYSICAL(sPrevSnowVertices[i / 5].vertices), 15, 0); + } +} + /** * Initialize snow particles by allocating a buffer for storing their state * and setting a start amount. @@ -217,6 +237,7 @@ void envfx_update_snow_normal(s32 snowCylinderX, s32 snowCylinderY, s32 snowCyli 400.0f * random_float() - 200.0f + snowCylinderZ + (s16)(deltaZ * 2); (gEnvFxBuffer + i)->yPos = 200.0f * random_float() + snowCylinderY; (gEnvFxBuffer + i)->isAlive = 1; + (gEnvFxBuffer + i)->spawnTimestamp = gGlobalTimer; } else { (gEnvFxBuffer + i)->xPos += random_float() * 2 - 1.0f + (s16)(deltaX / 1.2); (gEnvFxBuffer + i)->yPos -= 2 -(s16)(deltaY * 0.8); @@ -251,6 +272,7 @@ void envfx_update_snow_blizzard(s32 snowCylinderX, s32 snowCylinderY, s32 snowCy 400.0f * random_float() - 200.0f + snowCylinderZ + (s16)(deltaZ * 2); (gEnvFxBuffer + i)->yPos = 400.0f * random_float() - 200.0f + snowCylinderY; (gEnvFxBuffer + i)->isAlive = 1; + (gEnvFxBuffer + i)->spawnTimestamp = gGlobalTimer; } else { (gEnvFxBuffer + i)->xPos += random_float() * 2 - 1.0f + (s16)(deltaX / 1.2) + 20.0f; (gEnvFxBuffer + i)->yPos -= 5 -(s16)(deltaY * 0.8); @@ -294,6 +316,7 @@ void envfx_update_snow_water(s32 snowCylinderX, s32 snowCylinderY, s32 snowCylin (gEnvFxBuffer + i)->zPos = 400.0f * random_float() - 200.0f + snowCylinderZ; (gEnvFxBuffer + i)->yPos = 400.0f * random_float() - 200.0f + snowCylinderY; (gEnvFxBuffer + i)->isAlive = 1; + (gEnvFxBuffer + i)->spawnTimestamp = gGlobalTimer; } } } @@ -346,6 +369,8 @@ void rotate_triangle_vertices(Vec3s vertex1, Vec3s vertex2, Vec3s vertex3, s16 p void append_snowflake_vertex_buffer(Gfx *gfx, s32 index, Vec3s vertex1, Vec3s vertex2, Vec3s vertex3) { s32 i = 0; Vtx *vertBuf = (Vtx *) alloc_display_list(15 * sizeof(Vtx)); + Vtx *vertBufInterpolated = (Vtx *) alloc_display_list(15 * sizeof(Vtx)); + Vtx *v; #ifdef VERSION_EU Vtx *p; #endif @@ -395,7 +420,23 @@ void append_snowflake_vertex_buffer(Gfx *gfx, s32 index, Vec3s vertex1, Vec3s ve #endif } - gSPVertex(gfx, VIRTUAL_TO_PHYSICAL(vertBuf), 15, 0); + for (i = 0; i < 15; i++) { + v = &sPrevSnowVertices[index / 5].vertices[i]; + vertBufInterpolated[i] = gSnowTempVtx[i % 3]; + if (index < sPrevSnowParticleCount && gGlobalTimer == sPrevSnowTimestamp + 1 && + gGlobalTimer != gEnvFxBuffer[index + i / 3].spawnTimestamp) { + vertBufInterpolated[i].v.ob[0] = (v->v.ob[0] + vertBuf[i].v.ob[0]) / 2; + vertBufInterpolated[i].v.ob[1] = (v->v.ob[1] + vertBuf[i].v.ob[1]) / 2; + vertBufInterpolated[i].v.ob[2] = (v->v.ob[2] + vertBuf[i].v.ob[2]) / 2; + } else { + vertBufInterpolated[i].v.ob[0] = vertBuf[i].v.ob[0]; + vertBufInterpolated[i].v.ob[1] = vertBuf[i].v.ob[1]; + vertBufInterpolated[i].v.ob[2] = vertBuf[i].v.ob[2]; + } + *v = vertBuf[i]; + } + sPrevSnowVertices[index / 5].pos = gfx; + gSPVertex(gfx, VIRTUAL_TO_PHYSICAL(vertBufInterpolated), 15, 0); } /** @@ -479,6 +520,8 @@ Gfx *envfx_update_snow(s32 snowMode, Vec3s marioPos, Vec3s camFrom, Vec3s camTo) gSP1Triangle(gfx++, 9, 10, 11, 0); gSP1Triangle(gfx++, 12, 13, 14, 0); } + sPrevSnowParticleCount = gSnowParticleCount; + sPrevSnowTimestamp = gGlobalTimer; gSPDisplayList(gfx++, &tiny_bubble_dl_0B006AB0) gSPEndDisplayList(gfx++); diff --git a/src/game/envfx_snow.h b/src/game/envfx_snow.h index 7a83b536..f4acc2de 100644 --- a/src/game/envfx_snow.h +++ b/src/game/envfx_snow.h @@ -25,7 +25,8 @@ struct EnvFxParticle { s32 angleAndDist[2]; // for whirpools, [0] = angle from center, [1] = distance from center s32 unusedBubbleVar; // set to zero for bubbles when respawning, never used elsewhere s32 bubbleY; // for Bubbles, yPos is always set to this - s8 filler20[56 - 0x20]; + //s8 filler20[56 - 0x20]; + u32 spawnTimestamp; }; extern s8 gEnvFxMode; diff --git a/src/game/hud.c b/src/game/hud.c index 1540b675..0de6e0bb 100644 --- a/src/game/hud.c +++ b/src/game/hud.c @@ -59,6 +59,20 @@ static struct UnusedHUDStruct sUnusedHUDValues = { 0x00, 0x0A, 0x00 }; static struct CameraHUD sCameraHUD = { CAM_STATUS_NONE }; +static u32 sPowerMeterLastRenderTimestamp; +static s16 sPowerMeterLastY; +static Gfx *sPowerMeterDisplayListPos; + +void patch_interpolated_hud(void) { + if (sPowerMeterDisplayListPos != NULL) { + Mtx *mtx = alloc_display_list(sizeof(Mtx)); + guTranslate(mtx, (f32) sPowerMeterHUD.x, (f32) sPowerMeterHUD.y, 0); + gSPMatrix(sPowerMeterDisplayListPos, VIRTUAL_TO_PHYSICAL(mtx), + G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_PUSH); + sPowerMeterDisplayListPos = NULL; + } +} + /** * Renders a rgba16 16x16 glyph texture from a table list. */ @@ -111,6 +125,7 @@ void render_power_meter_health_segment(s16 numHealthWedges) { */ void render_dl_power_meter(s16 numHealthWedges) { Mtx *mtx; + f32 interpolatedY; mtx = alloc_display_list(sizeof(Mtx)); @@ -118,7 +133,15 @@ void render_dl_power_meter(s16 numHealthWedges) { return; } - guTranslate(mtx, (f32) sPowerMeterHUD.x, (f32) sPowerMeterHUD.y, 0); + if (gGlobalTimer == sPowerMeterLastRenderTimestamp + 1) { + interpolatedY = (sPowerMeterLastY + sPowerMeterHUD.y) / 2.0f; + } else { + interpolatedY = sPowerMeterHUD.y; + } + guTranslate(mtx, (f32) sPowerMeterHUD.x, interpolatedY, 0); + sPowerMeterLastY = sPowerMeterHUD.y; + sPowerMeterLastRenderTimestamp = gGlobalTimer; + sPowerMeterDisplayListPos = gDisplayListHead; gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(mtx++), G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_PUSH); diff --git a/src/game/ingame_menu.c b/src/game/ingame_menu.c index 7ae9f1e7..1c23c966 100644 --- a/src/game/ingame_menu.c +++ b/src/game/ingame_menu.c @@ -130,6 +130,42 @@ s32 gDialogResponse = 0; static struct CachedChar { u8 used; u8 data[CHCACHE_BUFLEN]; } charCache[256]; #endif // VERSION +static Gfx *sInterpolatedDialogOffsetPos; +static f32 sInterpolatedDialogOffset; +static Gfx *sInterpolatedDialogRotationPos; +static f32 sInterpolatedDialogScale; +static f32 sInterpolatedDialogRotation; +static Gfx *sInterpolatedDialogZoomPos; + +void patch_interpolated_dialog(void) { + Mtx *matrix; + + if (sInterpolatedDialogOffsetPos != NULL) { + matrix = (Mtx *) alloc_display_list(sizeof(Mtx)); + guTranslate(matrix, 0, sInterpolatedDialogOffset, 0); + gSPMatrix(sInterpolatedDialogOffsetPos, VIRTUAL_TO_PHYSICAL(matrix), G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_NOPUSH); + sInterpolatedDialogOffsetPos = NULL; + } + if (sInterpolatedDialogRotationPos != NULL) { + matrix = (Mtx *) alloc_display_list(sizeof(Mtx)); + guScale(matrix, 1.0 / sInterpolatedDialogScale, 1.0 / sInterpolatedDialogScale, 1.0f); + gSPMatrix(sInterpolatedDialogRotationPos++, VIRTUAL_TO_PHYSICAL(matrix), G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_NOPUSH); + matrix = (Mtx *) alloc_display_list(sizeof(Mtx)); + guRotate(matrix, sInterpolatedDialogRotation * 4.0f, 0, 0, 1.0f); + gSPMatrix(sInterpolatedDialogRotationPos, VIRTUAL_TO_PHYSICAL(matrix), G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_NOPUSH); + sInterpolatedDialogRotationPos = NULL; + } + if (sInterpolatedDialogZoomPos != NULL) { + matrix = (Mtx *) alloc_display_list(sizeof(Mtx)); + guTranslate(matrix, 65.0 - (65.0 / sInterpolatedDialogScale), (40.0 / sInterpolatedDialogScale) - 40, 0); + gSPMatrix(sInterpolatedDialogZoomPos++, VIRTUAL_TO_PHYSICAL(matrix), G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_NOPUSH); + matrix = (Mtx *) alloc_display_list(sizeof(Mtx)); + guScale(matrix, 1.0 / sInterpolatedDialogScale, 1.0 / sInterpolatedDialogScale, 1.0f); + gSPMatrix(sInterpolatedDialogZoomPos, VIRTUAL_TO_PHYSICAL(matrix), G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_NOPUSH); + sInterpolatedDialogZoomPos = NULL; + } +} + void create_dl_identity_matrix(void) { Mtx *matrix = (Mtx *) alloc_display_list(sizeof(Mtx)); @@ -969,6 +1005,14 @@ void render_dialog_box_type(struct DialogEntry *dialog, s8 linesPerBox) { switch (gDialogBoxType) { case DIALOG_TYPE_ROTATE: // Renders a dialog black box with zoom and rotation if (gDialogBoxState == DIALOG_STATE_OPENING || gDialogBoxState == DIALOG_STATE_CLOSING) { + sInterpolatedDialogRotationPos = gDisplayListHead; + if (gDialogBoxState == DIALOG_STATE_OPENING) { + sInterpolatedDialogScale = gDialogBoxScale - 2 / 2; + sInterpolatedDialogRotation = gDialogBoxOpenTimer - 7.5f / 2; + } else { + sInterpolatedDialogScale = gDialogBoxScale + 2 / 2; + sInterpolatedDialogRotation = gDialogBoxOpenTimer + 7.5f / 2; + } create_dl_scale_matrix(MENU_MTX_NOPUSH, 1.0 / gDialogBoxScale, 1.0 / gDialogBoxScale, 1.0f); // convert the speed into angle create_dl_rotation_matrix(MENU_MTX_NOPUSH, gDialogBoxOpenTimer * 4.0f, 0, 0, 1.0f); @@ -977,6 +1021,12 @@ void render_dialog_box_type(struct DialogEntry *dialog, s8 linesPerBox) { break; case DIALOG_TYPE_ZOOM: // Renders a dialog white box with zoom if (gDialogBoxState == DIALOG_STATE_OPENING || gDialogBoxState == DIALOG_STATE_CLOSING) { + sInterpolatedDialogZoomPos = gDisplayListHead; + if (gDialogBoxState == DIALOG_STATE_OPENING) { + sInterpolatedDialogScale = gDialogBoxScale - 2 / 2; + } else { + sInterpolatedDialogScale = gDialogBoxScale + 2 / 2; + } create_dl_translation_matrix(MENU_MTX_NOPUSH, 65.0 - (65.0 / gDialogBoxScale), (40.0 / gDialogBoxScale) - 40, 0); create_dl_scale_matrix(MENU_MTX_NOPUSH, 1.0 / gDialogBoxScale, 1.0 / gDialogBoxScale, 1.0f); @@ -1259,6 +1309,8 @@ void handle_dialog_text_and_pages(s8 colorMode, struct DialogEntry *dialog, s8 l #ifdef VERSION_EU gDialogY -= gDialogScrollOffsetY; #else + sInterpolatedDialogOffset = gDialogScrollOffsetY + dialog->linesPerBox; + sInterpolatedDialogOffsetPos = gDisplayListHead; create_dl_translation_matrix(MENU_MTX_NOPUSH, 0, (f32) gDialogScrollOffsetY, 0); #endif } diff --git a/src/game/level_geo.c b/src/game/level_geo.c index 4c98e705..abc51213 100644 --- a/src/game/level_geo.c +++ b/src/game/level_geo.c @@ -34,12 +34,16 @@ Gfx *geo_envfx_main(s32 callContext, struct GraphNode *node, Mat4 mtxf) { vec3f_to_vec3s(marioPos, gPlayerCameraState->pos); particleList = envfx_update_particles(snowMode, marioPos, camTo, camFrom); if (particleList != NULL) { +#if 0 Mtx *mtx = alloc_display_list(sizeof(*mtx)); gfx = alloc_display_list(2 * sizeof(*gfx)); mtxf_to_mtx(mtx, mtxf); gSPMatrix(&gfx[0], VIRTUAL_TO_PHYSICAL(mtx), G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_NOPUSH); gSPBranchList(&gfx[1], VIRTUAL_TO_PHYSICAL(particleList)); +#else + gfx = particleList; +#endif execNode->fnNode.node.flags = (execNode->fnNode.node.flags & 0xFF) | 0x400; } SET_HIGH_U16_OF_32(*params, gAreaUpdateCounter); diff --git a/src/game/object_helpers.c b/src/game/object_helpers.c index 22b45b32..109d7f74 100644 --- a/src/game/object_helpers.c +++ b/src/game/object_helpers.c @@ -1554,6 +1554,7 @@ void cur_obj_set_pos_to_home(void) { o->oPosX = o->oHomeX; o->oPosY = o->oHomeY; o->oPosZ = o->oHomeZ; + o->header.gfx.skipInterpolationTimestamp = gGlobalTimer; } void cur_obj_set_pos_to_home_and_stop(void) { diff --git a/src/game/paintings.c b/src/game/paintings.c index 6cae19c0..a304d4ae 100644 --- a/src/game/paintings.c +++ b/src/game/paintings.c @@ -189,6 +189,32 @@ struct Painting **sPaintingGroups[] = { s16 gPaintingUpdateCounter = 1; s16 gLastPaintingUpdateCounter = 0; +static Vtx sLastVertices[2 * 264 * 3]; +static u32 sLastVerticesTimestamp; +static Vtx *sVerticesPtr[2]; +static s32 sVerticesCount; + +void patch_interpolated_paintings(void) { + if (sVerticesPtr[0] != NULL) { + s32 i; + if (sVerticesPtr[1] != NULL) { + for (i = 0; i < sVerticesCount / 2; i++) { + sVerticesPtr[0][i] = sLastVertices[i]; + } + for (; i < sVerticesCount; i++) { + sVerticesPtr[1][i - sVerticesCount / 2] = sLastVertices[i]; + } + } else { + for (i = 0; i < sVerticesCount; i++) { + sVerticesPtr[0][i] = sLastVertices[i]; + } + } + sVerticesPtr[0] = NULL; + sVerticesPtr[1] = NULL; + sVerticesCount = 0; + } +} + /** * Stop paintings in paintingGroup from rippling if their id is different from *idptr. */ @@ -890,6 +916,23 @@ Gfx *render_painting(u8 *img, s16 tWidth, s16 tHeight, s16 *textureMap, s16 mapV gSP1Triangle(gfx++, group * 3, group * 3 + 1, group * 3 + 2, 0); } + if (sVerticesCount >= numVtx * 2) { + sVerticesCount = 0; + } + for (map = 0; map < numVtx; map++) { + Vtx v = verts[map]; + if (gGlobalTimer == sLastVerticesTimestamp + 1) { + s32 i; + for (i = 0; i < 3; i++) { + verts[map].n.ob[i] = (v.n.ob[i] + sLastVertices[sVerticesCount + map].n.ob[i]) / 2; + verts[map].n.n[i] = (v.n.n[i] + sLastVertices[sVerticesCount + map].n.n[i]) / 2; + } + } + sLastVertices[sVerticesCount + map] = v; + } + sVerticesPtr[sVerticesCount / numVtx] = verts; + sVerticesCount += numVtx; + gSPEndDisplayList(gfx); return dlist; } @@ -954,6 +997,7 @@ Gfx *painting_ripple_image(struct Painting *painting) { meshTris = textureMap[meshVerts * 3 + 1]; gSPDisplayList(gfx++, render_painting(textures[i], tWidth, tHeight, textureMap, meshVerts, meshTris, painting->alpha)); } + sLastVerticesTimestamp = gGlobalTimer; // Update the ripple, may automatically reset the painting's state. painting_update_ripple_state(painting); @@ -991,6 +1035,7 @@ Gfx *painting_ripple_env_mapped(struct Painting *painting) { meshVerts = textureMap[0]; meshTris = textureMap[meshVerts * 3 + 1]; gSPDisplayList(gfx++, render_painting(tArray[0], tWidth, tHeight, textureMap, meshVerts, meshTris, painting->alpha)); + sLastVerticesTimestamp = gGlobalTimer; // Update the ripple, may automatically reset the painting's state. painting_update_ripple_state(painting); diff --git a/src/game/rendering_graph_node.c b/src/game/rendering_graph_node.c index d5bf5778..71656b49 100644 --- a/src/game/rendering_graph_node.c +++ b/src/game/rendering_graph_node.c @@ -39,6 +39,8 @@ s16 gMatStackIndex; Mat4 gMatStack[32]; Mtx *gMatStackFixed[32]; +Mat4 gMatStackInterpolated[32]; +Mtx *gMatStackInterpolatedFixed[32]; /** * Animation nodes have state in global variables, so this struct captures @@ -52,6 +54,7 @@ struct GeoAnimState { /*0x04*/ f32 translationMultiplier; /*0x08*/ u16 *attribute; /*0x0C*/ s16 *data; + s16 prevFrame; }; // For some reason, this is a GeoAnimState struct, but the current state consists @@ -61,6 +64,7 @@ struct GeoAnimState gGeoTempState; u8 gCurAnimType; u8 gCurAnimEnabled; s16 gCurrAnimFrame; +s16 gPrevAnimFrame; f32 gCurAnimTranslationMultiplier; u16 *gCurrAnimAttribute; s16 *gCurAnimData; @@ -129,6 +133,46 @@ u16 gAreaUpdateCounter = 0; LookAt lookAt; #endif +static Gfx *sPerspectivePos; +static Mtx *sPerspectiveMtx; + +struct { + Gfx *pos; + void *mtx; + void *displayList; +} gMtxTbl[6400]; +s32 gMtxTblSize; + +static Gfx *sViewportPos; +static Vp sPrevViewport; + +void mtx_patch_interpolated(void) { + s32 i; + + if (sPerspectivePos != NULL) { + gSPMatrix(sPerspectivePos, VIRTUAL_TO_PHYSICAL(sPerspectiveMtx), G_MTX_PROJECTION | G_MTX_LOAD | G_MTX_NOPUSH); + } + + for (i = 0; i < gMtxTblSize; i++) { + Gfx *pos = gMtxTbl[i].pos; + gSPMatrix(pos++, VIRTUAL_TO_PHYSICAL(gMtxTbl[i].mtx), + G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_NOPUSH); + gSPDisplayList(pos++, gMtxTbl[i].displayList); + } + + if (sViewportPos != NULL) { + Gfx *saved = gDisplayListHead; + gDisplayListHead = sViewportPos; + make_viewport_clip_rect(&sPrevViewport); + gSPViewport(gDisplayListHead, VIRTUAL_TO_PHYSICAL(&sPrevViewport)); + gDisplayListHead = saved; + } + + gMtxTblSize = 0; + sPerspectivePos = NULL; + sViewportPos = NULL; +} + /** * Process a master list node. */ @@ -156,9 +200,14 @@ static void geo_process_master_list_sub(struct GraphNodeMasterList *node) { if ((currList = node->listHeads[i]) != NULL) { gDPSetRenderMode(gDisplayListHead++, modeList->modes[i], mode2List->modes[i]); while (currList != NULL) { - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(currList->transform), + if ((u32) gMtxTblSize < sizeof(gMtxTbl) / sizeof(gMtxTbl[0])) { + gMtxTbl[gMtxTblSize].pos = gDisplayListHead; + gMtxTbl[gMtxTblSize].mtx = currList->transform; + gMtxTbl[gMtxTblSize++].displayList = currList->displayList; + } + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(currList->transformInterpolated), G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_NOPUSH); - gSPDisplayList(gDisplayListHead++, currList->displayList); + gSPDisplayList(gDisplayListHead++, currList->displayListInterpolated); currList = currList->next; } } @@ -174,7 +223,7 @@ static void geo_process_master_list_sub(struct GraphNodeMasterList *node) { * parameter. Look at the RenderModeContainer struct to see the corresponding * render modes of layers. */ -static void geo_append_display_list(void *displayList, s16 layer) { +static void geo_append_display_list2(void *displayList, void *displayListInterpolated, s16 layer) { #ifdef F3DEX_GBI_2 gSPLookAt(gDisplayListHead++, &lookAt); @@ -184,7 +233,9 @@ static void geo_append_display_list(void *displayList, s16 layer) { alloc_only_pool_alloc(gDisplayListHeap, sizeof(struct DisplayListNode)); listNode->transform = gMatStackFixed[gMatStackIndex]; + listNode->transformInterpolated = gMatStackInterpolatedFixed[gMatStackIndex]; listNode->displayList = displayList; + listNode->displayListInterpolated = displayListInterpolated; listNode->next = 0; if (gCurGraphNodeMasterList->listHeads[layer] == 0) { gCurGraphNodeMasterList->listHeads[layer] = listNode; @@ -195,6 +246,10 @@ static void geo_append_display_list(void *displayList, s16 layer) { } } +static void geo_append_display_list(void *displayList, s16 layer) { + geo_append_display_list2(displayList, displayList, layer); +} + /** * Process the master list node. */ @@ -241,7 +296,9 @@ static void geo_process_perspective(struct GraphNodePerspective *node) { } if (node->fnNode.node.children != NULL) { u16 perspNorm; + Mtx *mtxInterpolated = alloc_display_list(sizeof(*mtxInterpolated)); Mtx *mtx = alloc_display_list(sizeof(*mtx)); + f32 fovInterpolated; #ifdef VERSION_EU f32 aspect = ((f32) gCurGraphNodeRoot->width / (f32) gCurGraphNodeRoot->height) * 1.1f; @@ -250,9 +307,23 @@ static void geo_process_perspective(struct GraphNodePerspective *node) { #endif guPerspective(mtx, &perspNorm, node->fov, aspect, node->near, node->far, 1.0f); - gSPPerspNormalize(gDisplayListHead++, perspNorm); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(mtx), G_MTX_PROJECTION | G_MTX_LOAD | G_MTX_NOPUSH); + if (gGlobalTimer == node->prevTimestamp + 1 && gGlobalTimer != gLakituState.skipCameraInterpolationTimestamp) { + + fovInterpolated = (node->prevFov + node->fov) / 2.0f; + guPerspective(mtxInterpolated, &perspNorm, fovInterpolated, aspect, node->near, node->far, 1.0f); + gSPPerspNormalize(gDisplayListHead++, perspNorm); + + sPerspectivePos = gDisplayListHead; + sPerspectiveMtx = mtx; + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(mtxInterpolated), + G_MTX_PROJECTION | G_MTX_LOAD | G_MTX_NOPUSH); + } else { + gSPPerspNormalize(gDisplayListHead++, perspNorm); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(mtx), G_MTX_PROJECTION | G_MTX_LOAD | G_MTX_NOPUSH); + } + node->prevFov = node->fov; + node->prevTimestamp = gGlobalTimer; gCurGraphNodeCamFrustum = node; geo_process_node_and_siblings(node->fnNode.node.children); @@ -297,6 +368,39 @@ static void geo_process_switch(struct GraphNodeSwitchCase *node) { } } +void interpolate_vectors(Vec3f res, Vec3f a, Vec3f b) { + res[0] = (a[0] + b[0]) / 2.0f; + res[1] = (a[1] + b[1]) / 2.0f; + res[2] = (a[2] + b[2]) / 2.0f; +} + +void interpolate_vectors_s16(Vec3s res, Vec3s a, Vec3s b) { + res[0] = (a[0] + b[0]) / 2; + res[1] = (a[1] + b[1]) / 2; + res[2] = (a[2] + b[2]) / 2; +} + +static s16 interpolate_angle(s16 a, s16 b) { + s32 absDiff = b - a; + if (absDiff < 0) { + absDiff = -absDiff; + } + if (absDiff >= 0x4000 && absDiff <= 0xC000) { + return b; + } + if (absDiff <= 0x8000) { + return (a + b) / 2; + } else { + return (a + b) / 2 + 0x8000; + } +} + +static void interpolate_angles(Vec3s res, Vec3s a, Vec3s b) { + res[0] = interpolate_angle(a[0], b[0]); + res[1] = interpolate_angle(a[1], b[1]); + res[2] = interpolate_angle(a[2], b[2]); +} + /** * Process a camera node. */ @@ -304,6 +408,9 @@ static void geo_process_camera(struct GraphNodeCamera *node) { Mat4 cameraTransform; Mtx *rollMtx = alloc_display_list(sizeof(*rollMtx)); Mtx *mtx = alloc_display_list(sizeof(*mtx)); + Mtx *mtxInterpolated = alloc_display_list(sizeof(*mtxInterpolated)); + Vec3f posInterpolated; + Vec3f focusInterpolated; if (node->fnNode.func != NULL) { node->fnNode.func(GEO_CONTEXT_RENDER, &node->fnNode.node, gMatStack[gMatStackIndex]); @@ -314,12 +421,40 @@ static void geo_process_camera(struct GraphNodeCamera *node) { mtxf_lookat(cameraTransform, node->pos, node->focus, node->roll); mtxf_mul(gMatStack[gMatStackIndex + 1], cameraTransform, gMatStack[gMatStackIndex]); + + if (gGlobalTimer == node->prevTimestamp + 1 && gGlobalTimer != gLakituState.skipCameraInterpolationTimestamp) { + interpolate_vectors(posInterpolated, node->prevPos, node->pos); + interpolate_vectors(focusInterpolated, node->prevFocus, node->focus); + float magnitude = 0; + for (int i = 0; i < 3; i++) { + float diff = node->pos[i] - node->prevPos[i]; + magnitude += diff * diff; + } + if (magnitude > 500000) { + // Observed ~479000 in BBH when toggling R camera + // Can get over 3 million in VCUTM though... + vec3f_copy(posInterpolated, node->pos); + vec3f_copy(focusInterpolated, node->focus); + } + } else { + vec3f_copy(posInterpolated, node->pos); + vec3f_copy(focusInterpolated, node->focus); + } + vec3f_copy(node->prevPos, node->pos); + vec3f_copy(node->prevFocus, node->focus); + node->prevTimestamp = gGlobalTimer; + mtxf_lookat(cameraTransform, posInterpolated, focusInterpolated, node->roll); + mtxf_mul(gMatStackInterpolated[gMatStackIndex + 1], cameraTransform, gMatStackInterpolated[gMatStackIndex]); + gMatStackIndex++; mtxf_to_mtx(mtx, gMatStack[gMatStackIndex]); gMatStackFixed[gMatStackIndex] = mtx; + mtxf_to_mtx(mtxInterpolated, gMatStackInterpolated[gMatStackIndex]); + gMatStackInterpolatedFixed[gMatStackIndex] = mtxInterpolated; if (node->fnNode.node.children != 0) { gCurGraphNodeCamera = node; node->matrixPtr = &gMatStack[gMatStackIndex]; + node->matrixPtrInterpolated = &gMatStackInterpolated[gMatStackIndex]; geo_process_node_and_siblings(node->fnNode.node.children); gCurGraphNodeCamera = NULL; } @@ -336,13 +471,17 @@ static void geo_process_translation_rotation(struct GraphNodeTranslationRotation Mat4 mtxf; Vec3f translation; Mtx *mtx = alloc_display_list(sizeof(*mtx)); + Mtx *mtxInterpolated = alloc_display_list(sizeof(*mtxInterpolated)); vec3s_to_vec3f(translation, node->translation); mtxf_rotate_zxy_and_translate(mtxf, translation, node->rotation); mtxf_mul(gMatStack[gMatStackIndex + 1], mtxf, gMatStack[gMatStackIndex]); + mtxf_mul(gMatStackInterpolated[gMatStackIndex + 1], mtxf, gMatStackInterpolated[gMatStackIndex]); gMatStackIndex++; mtxf_to_mtx(mtx, gMatStack[gMatStackIndex]); gMatStackFixed[gMatStackIndex] = mtx; + mtxf_to_mtx(mtxInterpolated, gMatStackInterpolated[gMatStackIndex]); + gMatStackInterpolatedFixed[gMatStackIndex] = mtxInterpolated; if (node->displayList != NULL) { geo_append_display_list(node->displayList, node->node.flags >> 8); } @@ -361,13 +500,17 @@ static void geo_process_translation(struct GraphNodeTranslation *node) { Mat4 mtxf; Vec3f translation; Mtx *mtx = alloc_display_list(sizeof(*mtx)); + Mtx *mtxInterpolated = alloc_display_list(sizeof(*mtxInterpolated)); vec3s_to_vec3f(translation, node->translation); mtxf_rotate_zxy_and_translate(mtxf, translation, gVec3sZero); mtxf_mul(gMatStack[gMatStackIndex + 1], mtxf, gMatStack[gMatStackIndex]); + mtxf_mul(gMatStackInterpolated[gMatStackIndex + 1], mtxf, gMatStackInterpolated[gMatStackIndex]); gMatStackIndex++; mtxf_to_mtx(mtx, gMatStack[gMatStackIndex]); gMatStackFixed[gMatStackIndex] = mtx; + mtxf_to_mtx(mtxInterpolated, gMatStackInterpolated[gMatStackIndex]); + gMatStackInterpolatedFixed[gMatStackIndex] = mtxInterpolated; if (node->displayList != NULL) { geo_append_display_list(node->displayList, node->node.flags >> 8); } @@ -385,12 +528,23 @@ static void geo_process_translation(struct GraphNodeTranslation *node) { static void geo_process_rotation(struct GraphNodeRotation *node) { Mat4 mtxf; Mtx *mtx = alloc_display_list(sizeof(*mtx)); + Mtx *mtxInterpolated = alloc_display_list(sizeof(*mtxInterpolated)); + Vec3s rotationInterpolated; mtxf_rotate_zxy_and_translate(mtxf, gVec3fZero, node->rotation); mtxf_mul(gMatStack[gMatStackIndex + 1], mtxf, gMatStack[gMatStackIndex]); + if (gGlobalTimer == node->prevTimestamp + 1) { + interpolate_angles(rotationInterpolated, node->prevRotation, node->rotation); + mtxf_rotate_zxy_and_translate(mtxf, gVec3fZero, rotationInterpolated); + } + vec3s_copy(node->prevRotation, node->rotation); + node->prevTimestamp = gGlobalTimer; + mtxf_mul(gMatStackInterpolated[gMatStackIndex + 1], mtxf, gMatStackInterpolated[gMatStackIndex]); gMatStackIndex++; mtxf_to_mtx(mtx, gMatStack[gMatStackIndex]); gMatStackFixed[gMatStackIndex] = mtx; + mtxf_to_mtx(mtxInterpolated, gMatStackInterpolated[gMatStackIndex]); + gMatStackInterpolatedFixed[gMatStackIndex] = mtxInterpolated; if (node->displayList != NULL) { geo_append_display_list(node->displayList, node->node.flags >> 8); } @@ -409,12 +563,16 @@ static void geo_process_scale(struct GraphNodeScale *node) { UNUSED Mat4 transform; Vec3f scaleVec; Mtx *mtx = alloc_display_list(sizeof(*mtx)); + Mtx *mtxInterpolated = alloc_display_list(sizeof(*mtxInterpolated)); vec3f_set(scaleVec, node->scale, node->scale, node->scale); mtxf_scale_vec3f(gMatStack[gMatStackIndex + 1], gMatStack[gMatStackIndex], scaleVec); + mtxf_scale_vec3f(gMatStackInterpolated[gMatStackIndex + 1], gMatStackInterpolated[gMatStackIndex], scaleVec); gMatStackIndex++; mtxf_to_mtx(mtx, gMatStack[gMatStackIndex]); gMatStackFixed[gMatStackIndex] = mtx; + mtxf_to_mtx(mtxInterpolated, gMatStackInterpolated[gMatStackIndex]); + gMatStackInterpolatedFixed[gMatStackIndex] = mtxInterpolated; if (node->displayList != NULL) { geo_append_display_list(node->displayList, node->node.flags >> 8); } @@ -433,21 +591,30 @@ static void geo_process_scale(struct GraphNodeScale *node) { static void geo_process_billboard(struct GraphNodeBillboard *node) { Vec3f translation; Mtx *mtx = alloc_display_list(sizeof(*mtx)); + Mtx *mtxInterpolated = alloc_display_list(sizeof(*mtxInterpolated)); gMatStackIndex++; vec3s_to_vec3f(translation, node->translation); mtxf_billboard(gMatStack[gMatStackIndex], gMatStack[gMatStackIndex - 1], translation, gCurGraphNodeCamera->roll); + mtxf_billboard(gMatStackInterpolated[gMatStackIndex], gMatStackInterpolated[gMatStackIndex - 1], translation, + gCurGraphNodeCamera->roll); if (gCurGraphNodeHeldObject != NULL) { mtxf_scale_vec3f(gMatStack[gMatStackIndex], gMatStack[gMatStackIndex], gCurGraphNodeHeldObject->objNode->header.gfx.scale); + mtxf_scale_vec3f(gMatStackInterpolated[gMatStackIndex], gMatStackInterpolated[gMatStackIndex], + gCurGraphNodeHeldObject->objNode->header.gfx.scale); } else if (gCurGraphNodeObject != NULL) { mtxf_scale_vec3f(gMatStack[gMatStackIndex], gMatStack[gMatStackIndex], gCurGraphNodeObject->scale); + mtxf_scale_vec3f(gMatStackInterpolated[gMatStackIndex], gMatStackInterpolated[gMatStackIndex], + gCurGraphNodeObject->scale); } mtxf_to_mtx(mtx, gMatStack[gMatStackIndex]); gMatStackFixed[gMatStackIndex] = mtx; + mtxf_to_mtx(mtxInterpolated, gMatStackInterpolated[gMatStackIndex]); + gMatStackInterpolatedFixed[gMatStackIndex] = mtxInterpolated; if (node->displayList != NULL) { geo_append_display_list(node->displayList, node->node.flags >> 8); } @@ -496,13 +663,39 @@ static void geo_process_generated_list(struct GraphNodeGenerated *node) { */ static void geo_process_background(struct GraphNodeBackground *node) { Gfx *list = NULL; + Gfx *listInterpolated = NULL; if (node->fnNode.func != NULL) { + Vec3f posCopy; + Vec3f focusCopy; + Vec3f posInterpolated; + Vec3f focusInterpolated; + + if (gGlobalTimer == node->prevCameraTimestamp + 1 && + gGlobalTimer != gLakituState.skipCameraInterpolationTimestamp) { + interpolate_vectors(posInterpolated, node->prevCameraPos, gLakituState.pos); + interpolate_vectors(focusInterpolated, node->prevCameraFocus, gLakituState.focus); + } else { + vec3f_copy(posInterpolated, gLakituState.pos); + vec3f_copy(focusInterpolated, gLakituState.focus); + } + vec3f_copy(node->prevCameraPos, gLakituState.pos); + vec3f_copy(node->prevCameraFocus, gLakituState.focus); + node->prevCameraTimestamp = gGlobalTimer; + list = node->fnNode.func(GEO_CONTEXT_RENDER, &node->fnNode.node, (struct AllocOnlyPool *) gMatStack[gMatStackIndex]); + vec3f_copy(posCopy, gLakituState.pos); + vec3f_copy(focusCopy, gLakituState.focus); + vec3f_copy(gLakituState.pos, posInterpolated); + vec3f_copy(gLakituState.focus, focusInterpolated); + listInterpolated = node->fnNode.func(GEO_CONTEXT_RENDER, &node->fnNode.node, NULL); + vec3f_copy(gLakituState.pos, posCopy); + vec3f_copy(gLakituState.focus, focusCopy); } if (list != 0) { - geo_append_display_list((void *) VIRTUAL_TO_PHYSICAL(list), node->fnNode.node.flags >> 8); + geo_append_display_list2((void *) VIRTUAL_TO_PHYSICAL(list), + (void *) VIRTUAL_TO_PHYSICAL(listInterpolated), node->fnNode.node.flags >> 8); } else if (gCurGraphNodeMasterList != NULL) { #ifndef F3DEX_GBI_2E Gfx *gfxStart = alloc_display_list(sizeof(Gfx) * 7); @@ -527,61 +720,81 @@ static void geo_process_background(struct GraphNodeBackground *node) { } } -/** - * Render an animated part. The current animation state is not part of the node - * but set in global variables. If an animated part is skipped, everything afterwards desyncs. - */ -static void geo_process_animated_part(struct GraphNodeAnimatedPart *node) { - Mat4 matrix; - Vec3s rotation; - Vec3f translation; - Mtx *matrixPtr = alloc_display_list(sizeof(*matrixPtr)); - - vec3s_copy(rotation, gVec3sZero); - vec3f_set(translation, node->translation[0], node->translation[1], node->translation[2]); - if (gCurAnimType == ANIM_TYPE_TRANSLATION) { - translation[0] += gCurAnimData[retrieve_animation_index(gCurrAnimFrame, &gCurrAnimAttribute)] +static void anim_process(Vec3f translation, Vec3s rotation, u8 *animType, s16 animFrame, u16 **animAttribute) { + if (*animType == ANIM_TYPE_TRANSLATION) { + translation[0] += gCurAnimData[retrieve_animation_index(animFrame, animAttribute)] * gCurAnimTranslationMultiplier; - translation[1] += gCurAnimData[retrieve_animation_index(gCurrAnimFrame, &gCurrAnimAttribute)] + translation[1] += gCurAnimData[retrieve_animation_index(animFrame, animAttribute)] * gCurAnimTranslationMultiplier; - translation[2] += gCurAnimData[retrieve_animation_index(gCurrAnimFrame, &gCurrAnimAttribute)] + translation[2] += gCurAnimData[retrieve_animation_index(animFrame, animAttribute)] * gCurAnimTranslationMultiplier; - gCurAnimType = ANIM_TYPE_ROTATION; + *animType = ANIM_TYPE_ROTATION; } else { - if (gCurAnimType == ANIM_TYPE_LATERAL_TRANSLATION) { + if (*animType == ANIM_TYPE_LATERAL_TRANSLATION) { translation[0] += - gCurAnimData[retrieve_animation_index(gCurrAnimFrame, &gCurrAnimAttribute)] + gCurAnimData[retrieve_animation_index(animFrame, animAttribute)] * gCurAnimTranslationMultiplier; - gCurrAnimAttribute += 2; + *animAttribute += 2; translation[2] += - gCurAnimData[retrieve_animation_index(gCurrAnimFrame, &gCurrAnimAttribute)] + gCurAnimData[retrieve_animation_index(animFrame, animAttribute)] * gCurAnimTranslationMultiplier; - gCurAnimType = ANIM_TYPE_ROTATION; + *animType = ANIM_TYPE_ROTATION; } else { - if (gCurAnimType == ANIM_TYPE_VERTICAL_TRANSLATION) { - gCurrAnimAttribute += 2; + if (*animType == ANIM_TYPE_VERTICAL_TRANSLATION) { + *animAttribute += 2; translation[1] += - gCurAnimData[retrieve_animation_index(gCurrAnimFrame, &gCurrAnimAttribute)] + gCurAnimData[retrieve_animation_index(animFrame, animAttribute)] * gCurAnimTranslationMultiplier; - gCurrAnimAttribute += 2; - gCurAnimType = ANIM_TYPE_ROTATION; - } else if (gCurAnimType == ANIM_TYPE_NO_TRANSLATION) { - gCurrAnimAttribute += 6; - gCurAnimType = ANIM_TYPE_ROTATION; + *animAttribute += 2; + *animType = ANIM_TYPE_ROTATION; + } else if (*animType == ANIM_TYPE_NO_TRANSLATION) { + *animAttribute += 6; + *animType = ANIM_TYPE_ROTATION; } } } - if (gCurAnimType == ANIM_TYPE_ROTATION) { - rotation[0] = gCurAnimData[retrieve_animation_index(gCurrAnimFrame, &gCurrAnimAttribute)]; - rotation[1] = gCurAnimData[retrieve_animation_index(gCurrAnimFrame, &gCurrAnimAttribute)]; - rotation[2] = gCurAnimData[retrieve_animation_index(gCurrAnimFrame, &gCurrAnimAttribute)]; + if (*animType == ANIM_TYPE_ROTATION) { + rotation[0] = gCurAnimData[retrieve_animation_index(animFrame, animAttribute)]; + rotation[1] = gCurAnimData[retrieve_animation_index(animFrame, animAttribute)]; + rotation[2] = gCurAnimData[retrieve_animation_index(animFrame, animAttribute)]; } +} + +/** + * Render an animated part. The current animation state is not part of the node + * but set in global variables. If an animated part is skipped, everything afterwards desyncs. + */ +static void geo_process_animated_part(struct GraphNodeAnimatedPart *node) { + Mat4 matrix; + Vec3s rotation; + Vec3f translation; + Vec3s rotationInterpolated; + Vec3f translationInterpolated; + Mtx *matrixPtr = alloc_display_list(sizeof(*matrixPtr)); + Mtx *mtxInterpolated = alloc_display_list(sizeof(*mtxInterpolated)); + u16 *animAttribute = gCurrAnimAttribute; + u8 animType = gCurAnimType; + + vec3s_copy(rotation, gVec3sZero); + vec3f_set(translation, node->translation[0], node->translation[1], node->translation[2]); + vec3s_copy(rotationInterpolated, rotation); + vec3f_copy(translationInterpolated, translation); + + anim_process(translationInterpolated, rotationInterpolated, &animType, gPrevAnimFrame, &animAttribute); + anim_process(translation, rotation, &gCurAnimType, gCurrAnimFrame, &gCurrAnimAttribute); + interpolate_vectors(translationInterpolated, translationInterpolated, translation); + interpolate_angles(rotationInterpolated, rotationInterpolated, rotation); + mtxf_rotate_xyz_and_translate(matrix, translation, rotation); mtxf_mul(gMatStack[gMatStackIndex + 1], matrix, gMatStack[gMatStackIndex]); + mtxf_rotate_xyz_and_translate(matrix, translationInterpolated, rotationInterpolated); + mtxf_mul(gMatStackInterpolated[gMatStackIndex + 1], matrix, gMatStackInterpolated[gMatStackIndex]); gMatStackIndex++; mtxf_to_mtx(matrixPtr, gMatStack[gMatStackIndex]); gMatStackFixed[gMatStackIndex] = matrixPtr; + mtxf_to_mtx(mtxInterpolated, gMatStackInterpolated[gMatStackIndex]); + gMatStackInterpolatedFixed[gMatStackIndex] = mtxInterpolated; if (node->displayList != NULL) { geo_append_display_list(node->displayList, node->node.flags >> 8); } @@ -613,6 +826,17 @@ void geo_set_animation_globals(struct GraphNodeObject_sub *node, s32 hasAnimatio } gCurrAnimFrame = node->animFrame; + if (node->prevAnimPtr == anim && node->prevAnimID == node->animID && + gGlobalTimer == node->prevAnimFrameTimestamp + 1) { + gPrevAnimFrame = node->prevAnimFrame; + } else { + gPrevAnimFrame = node->animFrame; + } + node->prevAnimPtr = anim; + node->prevAnimID = node->animID; + node->prevAnimFrame = node->animFrame; + node->prevAnimFrameTimestamp = gGlobalTimer; + gCurAnimEnabled = (anim->flags & ANIM_FLAG_5) == 0; gCurrAnimAttribute = segmented_to_virtual((void *) anim->index); gCurAnimData = segmented_to_virtual((void *) anim->values); @@ -631,8 +855,10 @@ void geo_set_animation_globals(struct GraphNodeObject_sub *node, s32 hasAnimatio */ static void geo_process_shadow(struct GraphNodeShadow *node) { Gfx *shadowList; + Gfx *shadowListInterpolated; Mat4 mtxf; Vec3f shadowPos; + Vec3f shadowPosInterpolated; Vec3f animOffset; f32 objScale; f32 shadowScale; @@ -640,6 +866,7 @@ static void geo_process_shadow(struct GraphNodeShadow *node) { f32 cosAng; struct GraphNode *geo; Mtx *mtx; + Mtx *mtxInterpolated; if (gCurGraphNodeCamera != NULL && gCurGraphNodeObject != NULL) { if (gCurGraphNodeHeldObject != NULL) { @@ -678,21 +905,57 @@ static void geo_process_shadow(struct GraphNodeShadow *node) { } } + if (gCurGraphNodeHeldObject != NULL) { + if (gGlobalTimer == gCurGraphNodeHeldObject->prevShadowPosTimestamp + 1) { + interpolate_vectors(shadowPosInterpolated, gCurGraphNodeHeldObject->prevShadowPos, shadowPos); + } else { + vec3f_copy(shadowPosInterpolated, shadowPos); + } + vec3f_copy(gCurGraphNodeHeldObject->prevShadowPos, shadowPos); + gCurGraphNodeHeldObject->prevShadowPosTimestamp = gGlobalTimer; + } else { + if (gGlobalTimer == gCurGraphNodeObject->prevShadowPosTimestamp + 1 && + gGlobalTimer != gCurGraphNodeObject->skipInterpolationTimestamp) { + interpolate_vectors(shadowPosInterpolated, gCurGraphNodeObject->prevShadowPos, shadowPos); + } else { + vec3f_copy(shadowPosInterpolated, shadowPos); + } + vec3f_copy(gCurGraphNodeObject->prevShadowPos, shadowPos); + gCurGraphNodeObject->prevShadowPosTimestamp = gGlobalTimer; + } + + extern u8 gInterpolatingSurfaces; + gInterpolatingSurfaces = TRUE; + shadowListInterpolated = create_shadow_below_xyz(shadowPosInterpolated[0], shadowPosInterpolated[1], + shadowPosInterpolated[2], shadowScale, + node->shadowSolidity, node->shadowType); + gInterpolatingSurfaces = FALSE; shadowList = create_shadow_below_xyz(shadowPos[0], shadowPos[1], shadowPos[2], shadowScale, node->shadowSolidity, node->shadowType); - if (shadowList != NULL) { + if (shadowListInterpolated != NULL && shadowList != NULL) { mtx = alloc_display_list(sizeof(*mtx)); + mtxInterpolated = alloc_display_list(sizeof(*mtxInterpolated)); gMatStackIndex++; + mtxf_translate(mtxf, shadowPos); mtxf_mul(gMatStack[gMatStackIndex], mtxf, *gCurGraphNodeCamera->matrixPtr); mtxf_to_mtx(mtx, gMatStack[gMatStackIndex]); gMatStackFixed[gMatStackIndex] = mtx; + + mtxf_translate(mtxf, shadowPosInterpolated); + mtxf_mul(gMatStackInterpolated[gMatStackIndex], mtxf, *gCurGraphNodeCamera->matrixPtrInterpolated); + mtxf_to_mtx(mtxInterpolated, gMatStackInterpolated[gMatStackIndex]); + gMatStackInterpolatedFixed[gMatStackIndex] = mtxInterpolated; + if (gShadowAboveWaterOrLava == 1) { - geo_append_display_list((void *) VIRTUAL_TO_PHYSICAL(shadowList), 4); + geo_append_display_list2((void *) VIRTUAL_TO_PHYSICAL(shadowList), + (void *) VIRTUAL_TO_PHYSICAL(shadowListInterpolated), 4); } else if (gMarioOnIceOrCarpet == 1) { - geo_append_display_list((void *) VIRTUAL_TO_PHYSICAL(shadowList), 5); + geo_append_display_list2((void *) VIRTUAL_TO_PHYSICAL(shadowList), + (void *) VIRTUAL_TO_PHYSICAL(shadowListInterpolated), 5); } else { - geo_append_display_list((void *) VIRTUAL_TO_PHYSICAL(shadowList), 6); + geo_append_display_list2((void *) VIRTUAL_TO_PHYSICAL(shadowList), + (void *) VIRTUAL_TO_PHYSICAL(shadowListInterpolated), 6); } gMatStackIndex--; } @@ -789,31 +1052,101 @@ static int obj_is_in_view(struct GraphNodeObject *node, Mat4 matrix) { return TRUE; } +static void interpolate_matrix(Mat4 result, Mat4 a, Mat4 b) { + s32 i, j; + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + result[i][j] = (a[i][j] + b[i][j]) / 2.0f; + } + } +} + /** * Process an object node. */ static void geo_process_object(struct Object *node) { Mat4 mtxf; s32 hasAnimation = (node->header.gfx.node.flags & GRAPH_RENDER_HAS_ANIMATION) != 0; + Vec3f scaleInterpolated; if (node->header.gfx.unk18 == gCurGraphNodeRoot->areaIndex) { if (node->header.gfx.throwMatrix != NULL) { mtxf_mul(gMatStack[gMatStackIndex + 1], *node->header.gfx.throwMatrix, gMatStack[gMatStackIndex]); + if (gGlobalTimer == node->header.gfx.prevThrowMatrixTimestamp + 1 && + gGlobalTimer != node->header.gfx.skipInterpolationTimestamp) { + interpolate_matrix(mtxf, *node->header.gfx.throwMatrix, node->header.gfx.prevThrowMatrix); + mtxf_mul(gMatStackInterpolated[gMatStackIndex + 1], mtxf, + gMatStackInterpolated[gMatStackIndex]); + } else { + mtxf_mul(gMatStackInterpolated[gMatStackIndex + 1], (void *) node->header.gfx.throwMatrix, + gMatStackInterpolated[gMatStackIndex]); + } + mtxf_copy(node->header.gfx.prevThrowMatrix, *node->header.gfx.throwMatrix); + node->header.gfx.prevThrowMatrixTimestamp = gGlobalTimer; } else if (node->header.gfx.node.flags & GRAPH_RENDER_CYLBOARD) { + Vec3f posInterpolated; + if (gGlobalTimer == node->header.gfx.prevTimestamp + 1 && + gGlobalTimer != node->header.gfx.skipInterpolationTimestamp) { + interpolate_vectors(posInterpolated, node->header.gfx.prevPos, node->header.gfx.pos); + } else { + vec3f_copy(posInterpolated, node->header.gfx.pos); + } + vec3f_copy(node->header.gfx.prevPos, node->header.gfx.pos); + node->header.gfx.prevTimestamp = gGlobalTimer; mtxf_cylboard(gMatStack[gMatStackIndex + 1], gMatStack[gMatStackIndex], node->header.gfx.pos, gCurGraphNodeCamera->roll); + mtxf_cylboard(gMatStackInterpolated[gMatStackIndex + 1], gMatStackInterpolated[gMatStackIndex], + posInterpolated, gCurGraphNodeCamera->roll); } else if (node->header.gfx.node.flags & GRAPH_RENDER_BILLBOARD) { + Vec3f posInterpolated; + if (gGlobalTimer == node->header.gfx.prevTimestamp + 1 && + gGlobalTimer != node->header.gfx.skipInterpolationTimestamp) { + interpolate_vectors(posInterpolated, node->header.gfx.prevPos, node->header.gfx.pos); + } else { + vec3f_copy(posInterpolated, node->header.gfx.pos); + } + vec3f_copy(node->header.gfx.prevPos, node->header.gfx.pos); + node->header.gfx.prevTimestamp = gGlobalTimer; mtxf_billboard(gMatStack[gMatStackIndex + 1], gMatStack[gMatStackIndex], node->header.gfx.pos, gCurGraphNodeCamera->roll); + mtxf_billboard(gMatStackInterpolated[gMatStackIndex + 1], gMatStackInterpolated[gMatStackIndex], + posInterpolated, gCurGraphNodeCamera->roll); } else { + Vec3f posInterpolated; + Vec3s angleInterpolated; + if (gGlobalTimer == node->header.gfx.prevTimestamp + 1 && + gGlobalTimer != node->header.gfx.skipInterpolationTimestamp) { + interpolate_vectors(posInterpolated, node->header.gfx.prevPos, node->header.gfx.pos); + interpolate_angles(angleInterpolated, node->header.gfx.prevAngle, node->header.gfx.angle); + } else { + vec3f_copy(posInterpolated, node->header.gfx.pos); + vec3s_copy(angleInterpolated, node->header.gfx.angle); + } + vec3f_copy(node->header.gfx.prevPos, node->header.gfx.pos); + vec3s_copy(node->header.gfx.prevAngle, node->header.gfx.angle); + node->header.gfx.prevTimestamp = gGlobalTimer; mtxf_rotate_zxy_and_translate(mtxf, node->header.gfx.pos, node->header.gfx.angle); mtxf_mul(gMatStack[gMatStackIndex + 1], mtxf, gMatStack[gMatStackIndex]); + mtxf_rotate_zxy_and_translate(mtxf, posInterpolated, angleInterpolated); + mtxf_mul(gMatStackInterpolated[gMatStackIndex + 1], mtxf, gMatStackInterpolated[gMatStackIndex]); + } + + if (gGlobalTimer == node->header.gfx.prevScaleTimestamp + 1 && + gGlobalTimer != node->header.gfx.skipInterpolationTimestamp) { + interpolate_vectors(scaleInterpolated, node->header.gfx.prevScale, node->header.gfx.scale); + } else { + vec3f_copy(scaleInterpolated, node->header.gfx.scale); } + vec3f_copy(node->header.gfx.prevScale, node->header.gfx.scale); + node->header.gfx.prevScaleTimestamp = gGlobalTimer; mtxf_scale_vec3f(gMatStack[gMatStackIndex + 1], gMatStack[gMatStackIndex + 1], node->header.gfx.scale); + mtxf_scale_vec3f(gMatStackInterpolated[gMatStackIndex + 1], gMatStackInterpolated[gMatStackIndex + 1], + scaleInterpolated); node->header.gfx.throwMatrix = &gMatStack[++gMatStackIndex]; + node->header.gfx.throwMatrixInterpolated = &gMatStackInterpolated[gMatStackIndex]; node->header.gfx.cameraToObject[0] = gMatStack[gMatStackIndex][3][0]; node->header.gfx.cameraToObject[1] = gMatStack[gMatStackIndex][3][1]; node->header.gfx.cameraToObject[2] = gMatStack[gMatStackIndex][3][2]; @@ -824,9 +1157,12 @@ static void geo_process_object(struct Object *node) { } if (obj_is_in_view(&node->header.gfx, gMatStack[gMatStackIndex])) { Mtx *mtx = alloc_display_list(sizeof(*mtx)); + Mtx *mtxInterpolated = alloc_display_list(sizeof(*mtxInterpolated)); mtxf_to_mtx(mtx, gMatStack[gMatStackIndex]); gMatStackFixed[gMatStackIndex] = mtx; + mtxf_to_mtx(mtxInterpolated, gMatStackInterpolated[gMatStackIndex]); + gMatStackInterpolatedFixed[gMatStackIndex] = mtxInterpolated; if (node->header.gfx.sharedChild != NULL) { gCurGraphNodeObject = (struct GraphNodeObject *) node; node->header.gfx.sharedChild->parent = &node->header.gfx.node; @@ -837,11 +1173,16 @@ static void geo_process_object(struct Object *node) { if (node->header.gfx.node.children != NULL) { geo_process_node_and_siblings(node->header.gfx.node.children); } + } else { + node->header.gfx.prevThrowMatrixTimestamp = 0; + node->header.gfx.prevTimestamp = 0; + node->header.gfx.prevScaleTimestamp = 0; } gMatStackIndex--; gCurAnimType = ANIM_TYPE_NONE; node->header.gfx.throwMatrix = NULL; + node->header.gfx.throwMatrixInterpolated = NULL; } } @@ -868,6 +1209,8 @@ void geo_process_held_object(struct GraphNodeHeldObject *node) { Mat4 mat; Vec3f translation; Mtx *mtx = alloc_display_list(sizeof(*mtx)); + Mtx *mtxInterpolated = alloc_display_list(sizeof(*mtxInterpolated)); + Vec3f scaleInterpolated; #ifdef F3DEX_GBI_2 gSPLookAt(gDisplayListHead++, &lookAt); @@ -883,6 +1226,14 @@ void geo_process_held_object(struct GraphNodeHeldObject *node) { translation[1] = node->translation[1] / 4.0f; translation[2] = node->translation[2] / 4.0f; + if (gGlobalTimer == node->objNode->header.gfx.prevScaleTimestamp + 1) { + interpolate_vectors(scaleInterpolated, node->objNode->header.gfx.prevScale, node->objNode->header.gfx.scale); + } else { + vec3f_copy(scaleInterpolated, node->objNode->header.gfx.scale); + } + vec3f_copy(node->objNode->header.gfx.prevScale, node->objNode->header.gfx.scale); + node->objNode->header.gfx.prevScaleTimestamp = gGlobalTimer; + mtxf_translate(mat, translation); mtxf_copy(gMatStack[gMatStackIndex + 1], *gCurGraphNodeObject->throwMatrix); gMatStack[gMatStackIndex + 1][3][0] = gMatStack[gMatStackIndex][3][0]; @@ -891,6 +1242,13 @@ void geo_process_held_object(struct GraphNodeHeldObject *node) { mtxf_mul(gMatStack[gMatStackIndex + 1], mat, gMatStack[gMatStackIndex + 1]); mtxf_scale_vec3f(gMatStack[gMatStackIndex + 1], gMatStack[gMatStackIndex + 1], node->objNode->header.gfx.scale); + mtxf_copy(gMatStackInterpolated[gMatStackIndex + 1], (void *) gCurGraphNodeObject->throwMatrixInterpolated); + gMatStackInterpolated[gMatStackIndex + 1][3][0] = gMatStackInterpolated[gMatStackIndex][3][0]; + gMatStackInterpolated[gMatStackIndex + 1][3][1] = gMatStackInterpolated[gMatStackIndex][3][1]; + gMatStackInterpolated[gMatStackIndex + 1][3][2] = gMatStackInterpolated[gMatStackIndex][3][2]; + mtxf_mul(gMatStackInterpolated[gMatStackIndex + 1], mat, gMatStackInterpolated[gMatStackIndex + 1]); + mtxf_scale_vec3f(gMatStackInterpolated[gMatStackIndex + 1], gMatStackInterpolated[gMatStackIndex + 1], + scaleInterpolated); if (node->fnNode.func != NULL) { node->fnNode.func(GEO_CONTEXT_HELD_OBJ, &node->fnNode.node, (struct AllocOnlyPool *) gMatStack[gMatStackIndex + 1]); @@ -898,12 +1256,15 @@ void geo_process_held_object(struct GraphNodeHeldObject *node) { gMatStackIndex++; mtxf_to_mtx(mtx, gMatStack[gMatStackIndex]); gMatStackFixed[gMatStackIndex] = mtx; + mtxf_to_mtx(mtxInterpolated, gMatStackInterpolated[gMatStackIndex]); + gMatStackInterpolatedFixed[gMatStackIndex] = mtxInterpolated; gGeoTempState.type = gCurAnimType; gGeoTempState.enabled = gCurAnimEnabled; gGeoTempState.frame = gCurrAnimFrame; gGeoTempState.translationMultiplier = gCurAnimTranslationMultiplier; gGeoTempState.attribute = gCurrAnimAttribute; gGeoTempState.data = gCurAnimData; + gGeoTempState.prevFrame = gPrevAnimFrame; gCurAnimType = 0; gCurGraphNodeHeldObject = (void *) node; if (node->objNode->header.gfx.unk38.curAnim != NULL) { @@ -918,6 +1279,7 @@ void geo_process_held_object(struct GraphNodeHeldObject *node) { gCurAnimTranslationMultiplier = gGeoTempState.translationMultiplier; gCurrAnimAttribute = gGeoTempState.attribute; gCurAnimData = gGeoTempState.data; + gPrevAnimFrame = gGeoTempState.prevFrame; gMatStackIndex--; } @@ -1039,6 +1401,7 @@ void geo_process_root(struct GraphNodeRoot *node, Vp *b, Vp *c, s32 clearColor) if (node->node.flags & GRAPH_RENDER_ACTIVE) { Mtx *initialMatrix; Vp *viewport = alloc_display_list(sizeof(*viewport)); + Vp *viewportInterpolated = viewport; gDisplayListHeap = alloc_only_pool_init(main_pool_available() - sizeof(struct AllocOnlyPool), MEMORY_POOL_LEFT); @@ -1049,7 +1412,12 @@ void geo_process_root(struct GraphNodeRoot *node, Vp *b, Vp *c, s32 clearColor) vec3s_set(viewport->vp.vscale, node->width * 4, node->height * 4, 511); if (b != NULL) { clear_frame_buffer(clearColor); - make_viewport_clip_rect(b); + viewportInterpolated = alloc_display_list(sizeof(*viewportInterpolated)); + interpolate_vectors_s16(viewportInterpolated->vp.vtrans, sPrevViewport.vp.vtrans, b->vp.vtrans); + interpolate_vectors_s16(viewportInterpolated->vp.vscale, sPrevViewport.vp.vscale, b->vp.vscale); + + sViewportPos = gDisplayListHead; + make_viewport_clip_rect(viewportInterpolated); *viewport = *b; } @@ -1057,11 +1425,16 @@ void geo_process_root(struct GraphNodeRoot *node, Vp *b, Vp *c, s32 clearColor) clear_frame_buffer(clearColor); make_viewport_clip_rect(c); } + sPrevViewport = *viewport; mtxf_identity(gMatStack[gMatStackIndex]); mtxf_to_mtx(initialMatrix, gMatStack[gMatStackIndex]); gMatStackFixed[gMatStackIndex] = initialMatrix; - gSPViewport(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(viewport)); + + mtxf_identity(gMatStackInterpolated[gMatStackIndex]); + gMatStackInterpolatedFixed[gMatStackIndex] = initialMatrix; + + gSPViewport(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(viewportInterpolated)); gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(gMatStackFixed[gMatStackIndex]), G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_NOPUSH); gCurGraphNodeRoot = node; diff --git a/src/game/screen_transition.c b/src/game/screen_transition.c index b49ddaf5..d6656af2 100644 --- a/src/game/screen_transition.c +++ b/src/game/screen_transition.c @@ -16,6 +16,19 @@ u8 sTransitionColorFadeCount[4] = { 0 }; u16 sTransitionTextureFadeCount[2] = { 0 }; +static Gfx *sScreenTransitionVerticesPos[2]; +static Vtx *sScreenTransitionVertices; + +void patch_screen_transition_interpolated(void) { + if (sScreenTransitionVerticesPos[0] != NULL) { + gSPVertex(sScreenTransitionVerticesPos[0], VIRTUAL_TO_PHYSICAL(sScreenTransitionVertices), 8, 0); + gSPVertex(sScreenTransitionVerticesPos[1], VIRTUAL_TO_PHYSICAL(sScreenTransitionVertices), 4, 0); + sScreenTransitionVerticesPos[0] = NULL; + sScreenTransitionVerticesPos[1] = NULL; + sScreenTransitionVertices = NULL; + } +} + s32 set_and_reset_transition_fade_timer(s8 fadeTimer, u8 transTime) { s32 reset = FALSE; @@ -85,14 +98,29 @@ s32 render_fade_transition_into_color(s8 fadeTimer, u8 transTime, struct WarpTra return dl_transition_color(fadeTimer, transTime, transData, alpha); } +#if 0 + s16 calc_tex_transition_radius(s8 fadeTimer, s8 transTime, struct WarpTransitionData *transData) { f32 texRadius = transData->endTexRadius - transData->startTexRadius; f32 radiusTime = sTransitionColorFadeCount[fadeTimer] * texRadius / (f32)(transTime - 1); f32 result = transData->startTexRadius + radiusTime; - return (s16)(result + 0.5);; + return (s16)(result + 0.5); } +#else + +s16 calc_tex_transition_radius(s8 fadeTimer, f32 interpolationFraction, s8 transTime, struct WarpTransitionData *transData) { + f32 texRadius = transData->endTexRadius - transData->startTexRadius; + f32 radiusTime = (sTransitionColorFadeCount[fadeTimer] == 0 ? 0 : + sTransitionColorFadeCount[fadeTimer] - 1 + interpolationFraction) * texRadius / (f32)(transTime - 1); + f32 result = transData->startTexRadius + radiusTime; + + return (s16)(result + 0.5); +} + +#endif + f32 calc_tex_transition_time(s8 fadeTimer, s8 transTime, struct WarpTransitionData *transData) { f32 startX = transData->startTexX; f32 startY = transData->startTexY; @@ -166,6 +194,8 @@ void *sTextureTransitionID[] = { texture_transition_bowser_half, }; +#if 0 + s32 render_textured_transition(s8 fadeTimer, s8 transTime, struct WarpTransitionData *transData, s8 texID, s8 transTexType) { f32 texTransTime = calc_tex_transition_time(fadeTimer, transTime, transData); u16 texTransPos = convert_tex_transition_angle_to_pos(transData); @@ -206,6 +236,56 @@ s32 render_textured_transition(s8 fadeTimer, s8 transTime, struct WarpTransition return set_and_reset_transition_fade_timer(fadeTimer, transTime); } +#else + +s32 render_textured_transition(s8 fadeTimer, s8 transTime, struct WarpTransitionData *transData, s8 texID, s8 transTexType) { + f32 texTransTime = calc_tex_transition_time(fadeTimer, transTime, transData); + u16 texTransPos = convert_tex_transition_angle_to_pos(transData); + s16 centerTransX = center_tex_transition_x(transData, texTransTime, texTransPos); + s16 centerTransY = center_tex_transition_y(transData, texTransTime, texTransPos); + s16 texTransRadius = calc_tex_transition_radius(fadeTimer, 1.0f, transTime, transData); + s16 texTransRadiusInterpolated = calc_tex_transition_radius(fadeTimer, 0.5f, transTime, transData); + Vtx *verts = alloc_display_list(8 * sizeof(*verts)); + Vtx *vertsInterpolated = alloc_display_list(8 * sizeof(*vertsInterpolated)); + + if (verts != NULL && vertsInterpolated != NULL) { + load_tex_transition_vertex(verts, fadeTimer, transData, centerTransX, centerTransY, texTransRadius, transTexType); + load_tex_transition_vertex(vertsInterpolated, fadeTimer, transData, centerTransX, centerTransY, texTransRadiusInterpolated, transTexType); + sScreenTransitionVertices = verts; + gSPDisplayList(gDisplayListHead++, dl_proj_mtx_fullscreen) + gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE); + gDPSetRenderMode(gDisplayListHead++, G_RM_AA_OPA_SURF, G_RM_AA_OPA_SURF2); + sScreenTransitionVerticesPos[0] = gDisplayListHead; + gSPVertex(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(vertsInterpolated), 8, 0); + gSPDisplayList(gDisplayListHead++, dl_transition_draw_filled_region); + gDPPipeSync(gDisplayListHead++); + gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA); + gDPSetRenderMode(gDisplayListHead++, G_RM_AA_XLU_SURF, G_RM_AA_XLU_SURF2); + gDPSetTextureFilter(gDisplayListHead++, G_TF_BILERP); + switch (transTexType) { + case TRANS_TYPE_MIRROR: + gDPLoadTextureBlock(gDisplayListHead++, sTextureTransitionID[texID], G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, 0, + G_TX_WRAP | G_TX_MIRROR, G_TX_WRAP | G_TX_MIRROR, 5, 6, G_TX_NOLOD, G_TX_NOLOD); + break; + case TRANS_TYPE_CLAMP: + gDPLoadTextureBlock(gDisplayListHead++, sTextureTransitionID[texID], G_IM_FMT_IA, G_IM_SIZ_8b, 64, 64, 0, + G_TX_CLAMP, G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD); + break; + } + gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); + sScreenTransitionVerticesPos[1] = gDisplayListHead; + gSPVertex(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(vertsInterpolated), 4, 0); + gSPDisplayList(gDisplayListHead++, dl_draw_quad_verts_0123); + gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF); + gSPDisplayList(gDisplayListHead++, dl_screen_transition_end); + sTransitionTextureFadeCount[fadeTimer] += transData->texTimer; + } else { + } + return set_and_reset_transition_fade_timer(fadeTimer, transTime); +} + +#endif + int render_screen_transition(s8 fadeTimer, s8 transType, u8 transTime, struct WarpTransitionData *transData) { switch (transType) { case WARP_TRANSITION_FADE_FROM_COLOR: diff --git a/src/menu/intro_geo.c b/src/menu/intro_geo.c index 37c6752a..10ca9772 100644 --- a/src/menu/intro_geo.c +++ b/src/menu/intro_geo.c @@ -1,5 +1,6 @@ #include +#include "engine/math_util.h" #include "game/memory.h" #include "game/segment2.h" #include "game/segment7.h" @@ -70,6 +71,20 @@ s8 gameOverBackgroundTable[] = { s8 gameOverBackgroundFlipOrder[] = { 0x00, 0x01, 0x02, 0x03, 0x07, 0x0B, 0x0a, 0x09, 0x08, 0x04, 0x05, 0x06 }; +static Gfx *sIntroScalePos; +static Vec3f sIntroScale; + +void patch_title_screen_scales(void) { + if (sIntroScalePos != NULL) { + Mtx *scaleMat = alloc_display_list(sizeof(*scaleMat)); + guScale(scaleMat, sIntroScale[0], sIntroScale[1], sIntroScale[2]); + gSPMatrix(sIntroScalePos, scaleMat, G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_PUSH); + sIntroScalePos = NULL; + } +} + +void interpolate_vectors(Vec3f res, Vec3f a, Vec3f b); + Gfx *geo_title_screen(s32 sp50, struct GraphNode *sp54, UNUSED void *context) { struct GraphNode *graphNode; // sp4c Gfx *displayList; // sp48 @@ -80,6 +95,8 @@ Gfx *geo_title_screen(s32 sp50, struct GraphNode *sp54, UNUSED void *context) { f32 scaleX; // sp34 f32 scaleY; // sp30 f32 scaleZ; // sp2c + Vec3f scale; + Vec3f scaleInterpolated; graphNode = sp54; displayList = NULL; displayListIter = NULL; @@ -110,7 +127,11 @@ Gfx *geo_title_screen(s32 sp50, struct GraphNode *sp54, UNUSED void *context) { scaleY = 0.0f; scaleZ = 0.0f; } - guScale(scaleMat, scaleX, scaleY, scaleZ); + vec3f_set(scale, scaleX, scaleY, scaleZ); + interpolate_vectors(scaleInterpolated, sIntroScale, scale); + vec3f_set(sIntroScale, scaleX, scaleY, scaleZ); + guScale(scaleMat, scaleInterpolated[0], scaleInterpolated[1], scaleInterpolated[2]); + sIntroScalePos = displayListIter; gSPMatrix(displayListIter++, scaleMat, G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_PUSH); gSPDisplayList(displayListIter++, &intro_seg7_dl_0700B3A0); gSPPopMatrix(displayListIter++, G_MTX_MODELVIEW); diff --git a/src/pc/gfx/gfx_dxgi.cpp b/src/pc/gfx/gfx_dxgi.cpp index 04674952..fa4eb33c 100644 --- a/src/pc/gfx/gfx_dxgi.cpp +++ b/src/pc/gfx/gfx_dxgi.cpp @@ -36,10 +36,10 @@ #ifdef VERSION_EU #define FRAME_INTERVAL_US_NUMERATOR 40000 -#define FRAME_INTERVAL_US_DENOMINATOR 1 +#define FRAME_INTERVAL_US_DENOMINATOR 2 #else #define FRAME_INTERVAL_US_NUMERATOR 100000 -#define FRAME_INTERVAL_US_DENOMINATOR 3 +#define FRAME_INTERVAL_US_DENOMINATOR 6 #endif using namespace Microsoft::WRL; // For ComPtr diff --git a/src/pc/gfx/gfx_sdl2.m b/src/pc/gfx/gfx_sdl2.m index 66916191..910a0806 100644 --- a/src/pc/gfx/gfx_sdl2.m +++ b/src/pc/gfx/gfx_sdl2.m @@ -175,7 +175,11 @@ static inline void gfx_sdl_set_vsync(const bool enabled) { if (enabled) { // try to detect refresh rate SDL_GL_SetSwapInterval(1); - const int vblanks = gCLIOpts.SyncFrames ? (int)gCLIOpts.SyncFrames : test_vsync(); + int vblanks = test_vsync(); + if(vblanks & 1) + vblanks = 0; + else + vblanks /= 2; if (vblanks) { printf("determined swap interval: %d\n", vblanks); SDL_GL_SetSwapInterval(vblanks); @@ -260,10 +264,10 @@ static void gfx_sdl_init(const char *window_title) { gfx_sdl_set_fullscreen(); - SDL_SetWindowInputFocus(wnd); + SDL_RaiseWindow(wnd); perf_freq = SDL_GetPerformanceFrequency(); - frame_time = perf_freq / FRAMERATE; + frame_time = perf_freq / (2 * FRAMERATE); for (size_t i = 0; i < sizeof(windows_scancode_table) / sizeof(SDL_Scancode); i++) { inverted_scancode_table[windows_scancode_table[i]] = i; @@ -396,14 +400,13 @@ static void gfx_sdl_handle_events(void) { case SDL_DISPLAYEVENT: switch(event.display.event) { case SDL_DISPLAYEVENT_CONNECTED: - //int displayIndex = event.display.display; if([[UIScreen screens] count] > 1) { setup_external_screen(); - //SDL_SetWindowFullscreen(wnd, SDL_WINDOW_FULLSCREEN_DESKTOP); - //SDL_GL_GetDrawableSize(wnd, &configWindow.w, &configWindow.h); - //SDL_SetWindowSize(wnd, configWindow.w, configWindow.h); } break; + case SDL_DISPLAYEVENT_DISCONNECTED: + teardown_external_screen(); + break; } break; case SDL_QUIT: diff --git a/src/pc/gfx/gfx_uikit.h b/src/pc/gfx/gfx_uikit.h index f93873cc..c98beffc 100644 --- a/src/pc/gfx/gfx_uikit.h +++ b/src/pc/gfx/gfx_uikit.h @@ -27,6 +27,7 @@ UIViewController *gameViewController; void gfx_uikit_init(UIViewController *viewControllerPointer); void setup_external_screen(); +void teardown_external_screen(); void gfx_uikit_set_touchscreen_callbacks(void (*down)(void* event), void (*motion)(void* event), void (*up)(void* event)); #endif /* gfx_uikit_h */ diff --git a/src/pc/gfx/gfx_uikit.m b/src/pc/gfx/gfx_uikit.m index b63a0ab3..530e5383 100644 --- a/src/pc/gfx/gfx_uikit.m +++ b/src/pc/gfx/gfx_uikit.m @@ -42,15 +42,14 @@ void gfx_uikit_init(UIViewController *viewControllerPointer) { tcvc = [storyboard instantiateViewControllerWithIdentifier:@"TouchControlsViewController"]; if([[UIScreen screens] count] > 1) { - mainWindow.rootViewController = tcvc; - - //setup_external_screen(); + setup_external_screen(); } else { [gameViewController.view addSubview:tcvc.view]; } } void setup_external_screen() { + [tcvc.view removeFromSuperview]; mainWindow.rootViewController = tcvc; UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; @@ -62,13 +61,24 @@ void setup_external_screen() { externalWindow.screen = screen; externalWindow.screen.overscanCompensation = UIScreenOverscanCompensationScale; externalWindow.hidden = NO; - UIView *realView = gameViewController.view; - [externalVc.view addSubview:realView]; - realView.frame = externalVc.view.bounds; - realView.contentScaleFactor = 1.0; + [externalVc.view addSubview:gameViewController.view]; + gameViewController.view.frame = externalVc.view.bounds; + gameViewController.view.contentScaleFactor = 1.0; +} + +void teardown_external_screen() { + if(externalWindow != nil) { + [tcvc.view removeFromSuperview]; + mainWindow.rootViewController = gameViewController; + [gameViewController.view addSubview:tcvc.view]; + UIScreen *screen = [UIScreen screens][0]; + gameViewController.view.frame = screen.bounds; + gameViewController.view.contentScaleFactor = screen.scale; + externalWindow.hidden = YES; + externalWindow = nil; + } } void gfx_uikit_set_touchscreen_callbacks(void (*down)(void* event), void (*motion)(void* event), void (*up)(void* event)) { - printf("UIKit set touch stuff\n"); [tcvc set_touchscreen_callbacks:down motion:motion up:up]; } diff --git a/src/pc/pc_main.m b/src/pc/pc_main.m index 66f5e5e3..e7fa92ae 100644 --- a/src/pc/pc_main.m +++ b/src/pc/pc_main.m @@ -93,6 +93,25 @@ void send_display_list(struct SPTask *spTask) { #define SAMPLES_LOW 528 #endif +static inline void patch_interpolations(void) { + extern void mtx_patch_interpolated(void); + extern void patch_screen_transition_interpolated(void); + extern void patch_title_screen_scales(void); + extern void patch_interpolated_dialog(void); + extern void patch_interpolated_hud(void); + extern void patch_interpolated_paintings(void); + extern void patch_interpolated_bubble_particles(void); + extern void patch_interpolated_snow_particles(void); + mtx_patch_interpolated(); + patch_screen_transition_interpolated(); + patch_title_screen_scales(); + patch_interpolated_dialog(); + patch_interpolated_hud(); + patch_interpolated_paintings(); + patch_interpolated_bubble_particles(); + patch_interpolated_snow_particles(); +} + void produce_one_frame(void) { gfx_start_frame(); if(!paused_by_menu) { @@ -121,6 +140,11 @@ void produce_one_frame(void) { audio_api->play((u8 *)audio_buffer, 2 * num_audio_samples * 4); } gfx_end_frame(); + + gfx_start_frame(); + patch_interpolations(); + send_display_list(gGfxSPTask); + gfx_end_frame(); } void audio_shutdown(void) {