~!
zTwN%CJ?T(tn2*wt8T^ayw9nu<`8B|7&G~hj|NY|T`%K<^UHs49&r83p`|&4VzIClc
zJ?~{vf4_|j0{K21k3HSL^u=3|$yI-ST)*g6@JV;+UUK|*aZ^TQz$gAmE48Qf%>Oxu
zZA)PHP7am-HtFB~Z(pqinKs=+FIu;@fAx4&VFY
zwY2GBf!XUy68JVKt(mps&N<%~XWz)=FaPjh<%{#dU*WOe{TNc
zGwXIAY5xE6aaA{WT~~C#tOw?1;*(hd?}t29dBW>|@0~!}*$t{oMXsOaa=mkC^@(W@
zIMsO<|F9|3w12(3Ub$zdN!$LsrkUxyN|u5f1WXi^4|4Z*%Z9Bm`(qU!)V?6!clySq
zPmSe(qDbQuMBdO899b@l^_Y?$4e7FXz}~`LK2w14qkO{eN~bE}pW;e%qql1)i(I
zwk%mV>sjQEcC&7`xw-oa{`}Fdn37X(US1rRuc*5^Wb=vK7ve83eajOrnwk|ox1wvN
zj$QTDPoaVPZHmo!S@W7t88oG{@aR_coe@3|crt0%+uJ9t4!rt(YNoIG`Ofw>h6~Q-
z1>3^it%ddD&M|erk26@Ve6Va@nT*G?o8=c?^WI}W8^t7Uwyr6D(}8)DR+yRCK39;u
z5mZ#Fv10E^0ijbi8|&7cimQq;f6mv;6!Lb#?3Dp`dt=@GeqE2M71Yqa!KIY0_pZVt
z|FWKuor>ItUR|@vE3Ex)bMou%Y+^6DS+iXFakGnWTi`3iqbe|4~acPD$#v+Kbn
z;jt1&gePyC_%rciX|?3+(0KpNx7lpAeNkL>P<6+W=^xK*+rFr(!SFSg?&~$LmU1sN
zyF0JzMX-!4gTd53lTX=_Ngjy{+iqOeEBwFwhQ&F_=?{~(+vfYGC%y=S|nQUdRauhyr|g>uhdFrlTHCHL5#-FEt7YW2Gx)W3{jxYSu)5X`Qw}GuY8o@;zqh&_@uzhY`|LgO1!v3?KQ~RwFSUHWg7u4X
z+@9xY&GY{U+f;AKd$V}4VE<)*rKQTdLgq&wahziGNH+LE#jVPhuGLGnH>Rhki@))^
z=Cdv~H`;iP{?X0VB$CR*vl1_m`{rmHzQ98Zw#Bm+yYM=SKGNyOE7gF6W+U-t^ht`nve@1$RP1zgR8r
z()j;`!!lWReXL1(a+>SjGlzr@$5%B3I!|%AbWpf1NpQVLBHwje^_&*($ZL{J4flk%
ze|Td(bN18}W8095t;vthZpyP>dM`u4hsB{UG=2ZgesQa`={JjOuXXh;bosP>(w^TM
zr!E%GT~YPS^TgEjEwa32aVM`mD$(Q#xwRl(JjmAfvDTyTre=jrCqG_m&e
zK8L?)yjdD*+xD~ge)7$++`c=0&HA?$QQMb?E{haRJlfJ`_MIi@;oP5P7W;P@SLx)R
z$X>=3_%%-Ec>DMRe^SjZ-p%FO-jAPGUHrYs@Bg;-6{l+t
z%nDE5CQ_joF~3_{?yvlBl^J&LCw5D{`5+LotvT;gZ}jcEvXi{Nd3}DVVVfdmy5-5j
zr?+>o%zQIj#QgxvzjjWC%{M>D=&cf#diL?cg-7jM_pB_sUAde8#kydv?^AXhE)se_
z(a5!!PvB3CNmb<`AJO$aFX{!=H-DU@@!)yXKGt2Qj~a9rZYosa;+^u)+9&w_%{j-t
z!ZuFL=3yyvE>W;FQC+Mh*KNLR5!j#v3Rs0ewJU)b)oNKJz
z`Q^=)jZ2aiKHdJZZvQ{Qq$Od#9vK>EgsMs9hPjm7ve>)gsys9!|
z(aT+b*8bSd@SiVlZfttt!7|g!ucidb@0{(J$8uuz?!eS~Kk>(1!Wa7Q_!pYEAOFpB
zG<(-npFdmM8MarMq~0?Ws`;Vb!aFfw=cnW}v8=i;92|#uV$LiI2`lwC;V(QDW2P~o
zhiw<{Lgy)O@+=wIesPt)y|#DLdDZwiDR%>NElj6tb_fNn%i_A}o$gvtdvgCog##|0
z!o7>-*k`)y>Gmw+;cOKtU&vG}CuhC#r{DVW>sry5Uv-w0Zjp$NU{LT^YB~R{Gwa2y
zP4k{^y~@-0Ex~W0=d^C_xrsO1EO&eOuIfC|@1w34CE)Y;&widft=p9f$5IZRTf?E&
z&crDp|H7}A%a)`Ui0b%FV34sVp55%nOAb-r=cef2Qz
zc|kA#{D_|_!Ex@$l5GD^e3@%mPRT?$@H;99G+bF^{&`Nh5@UGI`F)SySAQ+CVaqoQ
zk$k-7uX2XjxeSHonDbFnv+u4Cy#3{$*J=yzPqs^nd!BAotUq7HS-8SbR6G4^_=oy^
zyzbkqSR8J3+AVw%xo2X}%HTx9{1DgF8;g>7=CxI`J3fxicFSi|3x7Uif%e+nn|?Dy
z@9;Uh?9o)g6>7H`Z#=B^EqcTp!5S^Q=4-$G&L6#DKZR60moK+rz8LHOVZZi{xr#h}
zah|Muh35vI4!x$Z+1-BOQM;+B6n}q?~58tH5~UZtjMWd|KI#=wzc5*
z=WBP=KYmyl`}RR{pIT$iz10WO3e1ZXZ{D!)PfWgZP;NV0m*cX@D?i_QzM5%?jfZQ@
zyz_T|)jd^R>ivHSUtQk3U%9=vY`HI8dibEoGw(juf3=9wcO#yoU|s!Pl^Sr
zs0y^r-~=J*)B_9TCm^X%wA1%whxck|3}(g_jOuR#jVQtE&Ehb
zk@&-Z`{mC?N*~_D__B$0BK!G(MOWw4mp_p*XzUD@{8Mo`-Xi<}(>CqnOh3QL?G!iG
zIQTQ5W4_>7o?FV-e%ng@`dM$eGSsDN`yT860y|~T-1;3nXWizz)4F@R{EvI+&UfHw
z>ADg4?1${^moIPD#a*2{|FYX>mOaw$x5N*{>6~zq^*z2zJ&P`sr#m}aH<&+YeAORhCJbghzgJ#&Xk`nKqO&Mf=7SLrLKrJcR~
ze2ts;6T=_1KZ9RC|GQ
z4X;%XTwWbs8xgiDah~X;8B>+B)^tvuCR`Vop!el+t>4mezm@XVhn*hhxg9?konOro
zlwmE>`YnWELhQ?BzvcZN@vS{(X4uwc|Gq`@?d3Vs?J5e(jrUHP=imRl-lw$oeQwyf
z_tWneDE@t6th1t&@wSEQuH7lW^PO30vz7$yFmp0_v+Ab!>`hZTD~=09vFBwp^W13r
zrntAqSoP}lbNj9AB%Y=`d6vMLknv{kf`ywGTK|pV-^7wTl`Brk^524FH>R%d%AeSF
z?Q_iW6489?c4Fn@fEyE36-}JFc8h-XIHR;ZX3eEjE~>@>xFP>jBmNB{tiCgcc$=S{yq`eNAEvAeNZ~RM)9U#=#2Hh
zzt2(aHH_t3xvu}E-nkz|VcQtQKXg3d{8UtPah=nW>puj)uBl*}vhM#U-g&n6uGM0D
zFZOQHy5$#m*s}7{%LAoB6F+}EGiUA(BfTKkQ2DTXs~M7N+y2U~Vs&j1@0e^DEz=h>
zvtZeBb~q4w#$}*w!rYoyGV7-&qzDhwptE-bGLTJYh?>-14VAbe*A=Y~q=Di-KH=
zKFknJv;I+egnQ1p1C`M)f1i#rEU%BsGTB%iEICU`ELpL>=H%mvdkfk^Z+_ai*eZMR
z?Xp{6jxCGc%oshbXHK$ly2IXzqy54AwOX*W+zcE7XzUTrJ;*8gW$`9$vibi%m7
zb83e6$`X%?Sq4jetKUBAJang?wdj$`gHUjpLp
zuXnv7XsEsE_#LKMKl-8t0yZ=pE^(OE!y9=z#r@%eSk{7nkLQ-GN-!;$^K;Ry`M=Ct
zO@a~vPOM9K!*Kuk?ehxlw|4&8$#UVLib0m)>)@ns*ODc+?&+(3HC@AoC;IoAJD1(m
z<0oF*CSds|H?4Bn4W=i1FU&XA|MY)D)&>4=e}(rL-?dwQZ|ao0%a<%HE8$n;IhTHR
zMcO0B*}|@A-^28mUA@P@WcvNwc;Dzgt;bTlM#iCPS1vB{OIi0|=Czk6W!toAja#!z502K%@%)%LPU}s;zGZFT9`R`6U?k;tGD*R98zK5WXcQo(a
zH!>xw`08S2ELqC5(*1cA_Bw87G
z*1(W+ZqfDwMe+@w1ll_!_xoJunerh(Uw(qp@b9OT$^f+q@
zyBiAc9elJyV!EqU-zDF9K5P#16IEi4x;IW+wcCG(+><#B+uAf#7kMPqUr0N)yIu9;
zhu81KesWyfYV?2e2h;0MgYM3MB=lc&PUobopRyBR0l~l^`SS0b&5z$nm|k45@w(BD
z5=nFB&mqe1PE0ZSdQT}&t#qRP=?Us;w;5huKkE1{xNLIz=`~_I(%VhCdduDlE&Lbv
z;YYTz=;Omj76jdVvg62Vn>7c2J=rx|&wBC%&8=56l1mN6y+3zVx^ZbgTRG?WZsE7G
z6}CLS6=C;;t8#uhc^gk$!MO7L&w{3+Dfb*KEkcW~E9msN#vWM6u{-E+z2TBl)d?N5
znRRb(4?K|Z?q1Syo%DlSoXrjQ7_B{YamM``xm{8RH4jg}(wmreK5DH1N7TcqIhzgs
z=gmwGKNj!zSoGtjH_roK$R1O4Uf=KWLTOFJ(KeaK4yIRr-Tv{xYI%!Ut6P?t&D9Cd
zlHTjQsC+SN$;y9z6O`uNIra0`H;r{4a&@WK=KmS~+QcUiFa@|6uiSrd0wkGv&ZqtT@n@z?+GuT$|S+a+!u7COqC@@v+#|8cJ;ZkF0F-+g*vq1=tqyqxw1
zZ^nu#Q^LQRCNK$`FaG;&_MaJP=}OTrCA8&^M8~|meWh`|dH=1;%>Tq*oKJdoPfqen
zkGsR%D@;z$o~=80_ApCQ@7r|@g1bs|%f259`)TI?IH^3oXG{4Vd)*ovm0h1se{`Dj
zB(h-VjGB3sX%|kM-=T|<7>;nPSeC=Yu_|(sgLBMG
zr5U;k&puy&mmqd$bwc>h6)&ImhsQtg<@^yn>DG&UZ{OTclFK>Ux!0YIRqy$IQ%*n0
zDM4H|`km8N)dyvv`^>{`OrE*eIez_o`?QY-($+qDF>%2S<35)3q+bbhm%me8Uo)F~
z>Lm%OP0|v%N3CY>zIN%1?5fFs=5$)uF5=&t&8Jdu_1xDxO2-NwJ(5GX<)B{ljwDFO==i
z>r`G5%d6hswt3{39B;3#WjJHSyv)A*>y91sw14kY{v6D5zGe5`kP9ylaE8fdX_zIg
z-1s^|{MDAXDuw1LzjW^&o{{ixxw{MBpB?-+!*`!PbkOV7|LJ{GJi2XH1)p1(7+>Na
zyZ_WOgOXa+=|}e{los9DpB%tdkkPnEXY!j|rH${r<`%EYH~4V2c*fU{L08;g@@cWth}`+-M4d(qd|rKs>i9`67@QfM#-L+xjxnQNOJAxe`2c>S$MgA
zd*JV{EvshzxjgG=w4!9tlwT8cr|N84&=h)l{ndMuS{W?7quUE*&zI$}G_mxqy{s!=
zW|?>Yf~?6APWGZdia%zGt?81J;D~l>O8cepe;If1#>sQj#J7pE7HXTFXFKyF|J^;K
zxTlQFIp?(66YT5f8>;*2BrHBMiP5~}mZC}I+66)LG(G%|@tk_@VU~RLFs~+SpuOG1
zqN@|PK6vWcWb3Vr{lr+3F?R;@B
zL3ivUw-q}wT3&dzwd4A;Ek_P|e?NUcEv!&B>96vxdgD`CalH)9G3`$b7MV<7Puyl0
z{q4q@ZT}jde%^e~FLK8_m#~(@g(}mw>4vQSJE6KHGFa1=#bbW%6SM4m8wNh@lYh4q
ztICzx?}}DCbF=^8O6{ktFFbt(jJKMqK3ydHYV#xKt%>*9*z@PUw~{PxTH$m1VV0L-F()$A$W(ldj0RwEhpvRe9d<@nl6nqFC6I&G&Ad&yINBev
z*9^s&wK+;>=Y1?FOxzUqMXT6)*$>Uz!Ote-96Z!&_qN}8ckjOG_giwK7;9H}6@Mn&%3mKEx|-+{XS#$?w|Lmd4nOz4JsRb&@Z>`Ij62a-n;-=DA&OHiSLg
zsLt=3acKwJouA>eHvf)YRuj8Rq_0KAQud&Flj5u0lNEPw6PHvtXD478v#2gXewL%s
zWPasGuV?;RI3w~|_BSnq$y1WbFBx*mCd~f4>?MnPXLLs7*W_Q)JGVr(y%M{2DqC{u
z@v_c?44F!+>gwwj$gPQe@$mEQJZ*>hPEK|o{?4zs5~ZWF>-fwM_q{*p``DaXx7y@g
z{*t^^a%&~M=CAIeXR-}u)){<&z^r$}7Y-UAJey@;kujNL%s&vwhrBn$t@^
zvbR-aDHYCr$gwP;P;*j&+Lkrb`l|&VF^Y4D2)$+R(U=;MB^n}e>41Lzi=f5M+ok&c
zWGJxTpK130?&R@?dlAX
zy4G)5BJ0YS^7egdKWKM{`XNiW*oNn2?=01$9H~Fq1Gy{L(jNgu22o}
z`ylGMI5=e1akjet56@QbEqx!)RW)hDa-P^9E5a|${=zbK^SpN-AHSDr%4+}D>GErZ
zzV?baE86d@ZB==;^nc&Z7oR0A+y1mp(T~iK-LRfR_f+uRKPn=cc
z{+k}_=6Lw~hW&pQU%Bg*^XG~0DX;44beE<`CGUvh?*2z^NfND9Zztv`ZCWR8>21;D
zZ9FUOXxwGL!^^bj?8&9X~*Z3S&_mRJiwfah%`d
zaC3Uy=L}b&Qz_p
zmJQt%s@|1PL_^Co;)QnqxM>p7D4KXeGU>0{mlg}otEmmUr)9YCY-Xum*W1dtz0cY3
z!Q^0IOzpK(G-&9pe)Eh}F+^Y1@<+;CUzJjZtCgB~?~=|}En_iE|K+Wh>g
zA@s4QcPqy%tL)d-L2=%5-dgf+im7bpJhj9hFgX_d)YnOj^D!v(f
zSlp{ufN4Jyum6|8YcIGgO?B)`=BL}1%O)NFdGWoxaqIj4`*NJWeA~Fn=4E{KzXvDY
z1U#=+Ilpn)zbkROe(aABWj~5=h`iilTb+G*ujRS=tap6`siYTR923O+szNG
z>6-SoTqo?#--ejg3#t}hep+Sw^dtAsFH{V@(tofbQLy69>>mAyBTMaaegw1)l
z^IuzJ3a|OGuE8{|%B1-}y?A8{8$Nsf%oHr;
zVVc$w|LCh};_iw`DGqD+9tH-zUl}yVs&gfqVtS3Jw(0(ejD@Ff{aR?h+WmpZy^8ik
zaXa&KSM+m?PM-ZOvS@vP)Z!=KvgC4K?DF^{DdXgE@u}($E+cLpV}FmVt5+4e7IN~q
zbiWOr{PxYSv{e_hy~7IP7uJ0|-Ni6R=>4P@86IyFRs^m5y3*aXKm9}#|LXtizKfa|
zyt=^AmD+u`TXKa<)p;Anoj-2fI(A4jQ1)Ndm&>=sU&_r`Vx{&rM^0~Fx7lkKeewRB
zo9~~z7nl^|CXqdVm)1+aIB?eC1(~qOXsR(q;eI^PgR@(`xfS
z+1y?m#uXnBc9C;dC2Q4Wk1G#qC$Gs~+%s{#%1fKgV!4&??TQ}v)tNn<^L_2l7QVcL
zcPBkG<+ES^XS$PQ?G2vI-m3}QU&QyJ=YQ8-G_5XEm-rw;1;xe(d
zA>Cf{W)9zDw*9Y@=65_?xr9l~m}5e2^0FsClD;3%KeK$jo7shlkHu%t5L>s@(aidT
z-MX%hl|N%0U$vgPDD}@-VXA|rnRtW12D58b7q=;2S>XCX=&jY#WgU-JHnQK~T4|x^
z>+-@Q?e)Z{;6Hgvuc!E_XzlB}dYf+&^8)u-8|Gf)n^`1js>eU+tlb;OosDxUy#ZjJ@q=#19G;b*-aj(?*tVUCFU_+P7;e01e0-VlHA_qLwVBIq
z7U^+)erD|A^)fN=SAhKF7yGu)aye0U?8()tNuPd2fBwx{wtUsyXQjhbm%e}3esZ!{S0>54a4+NZ`%_*i
zZ{fDxJ7eVvAKoY5y&ONW`8=P<_~d%?0&eBM4&6P$Jl3~=YaO2VGAv@={H>RLkG~Z*
zjXtvEIls*9y*EmGCTv}JOXS~y=>dn#R%t(+wB_JV&kScqW9u0{K`oc2-+PdiPD?NWqFTdYw}1FXp-n
zX)bb0I(EPS{^|JJnQ7^O%ZuLWgndv6)KPFg>Ot?Zyg
z?$r5zvU1W6?tDEpiFbbZ?K;PjWUYxNPS$;sH|B1>xBAL*mrnjwmp*X6>E>@!K5m#K
zGG&t2zmz2csixBf@{NCQ-6*@4Awd3=jrHYS)(`Jb(>g!#ll#{_)B6s|dWRN$ay)IL
zut_{}OMT0XlbgeDr8v9@SKPao^ZogAG4K9a?ApYXHYxXIHo>`@F2xq3TefQhfRYqd5!J!b{%p9hWVNK9F(nn9Eb2
zuP4@i;H^8lf~C?tBAGAaxxt(=9g)9fOyMv0+{ud1ymjYhsm?!*72>Q9(w0u=-0z;7
z^SkDE+!g~j#_4>Ojm(eZUKIX4VsfYOQAN+!bM-<`N){?F;F!3y=q77+)tTd;7As5t
z$vpA%n`;|O-Tkg?mOf!E-lzO$-}!qyIRWk(6W5olY6uNGs}(%=x63}y
z6;1!dMSc{lNLQbDAmD$fpmp}7i*d4cnJ-f(moM3TZrXG0OV3uU5Q{lsn$9$3UdP{?
z)*iDq%KwRcv!MQ6#GMarXEKY8e2zvGU)&v|cI4FaA`bWTcYb_JyMFY#9=m7ldcC{g
zj)g;aC`gKeETOxhx5PZEIg7a
zw%;hI&f?vp?fh3O|I~`de|V9%WPkZ%jWBjwcAoWiQt>_~6e`{&u23~fxs%2>Yv%I>
z8w(F{e^hBm+_V3z9hcaH*Zl#p`j#SZZ#SnlIPRF{l`p>b?a#^Dr&$iju61D9tv21b
z0$e_^eZFz&zsIo!(GxW8%7vzFt@*@!M4IjX>gmxkJwG?tetRmHz-(1=gGGGd&SzHH
z&OyRCw=Y(nJf_p~vMqIs`H!i#6yp6H)!0Y@r?t;7K
zwhH`vtGkl6VI+4HLeOiwBk@~!EY~i{t|N8tcv22y;Iq1yWe!(gHtK;K+
z&0$N~=I&76{3*0!hT6Fa?@!Clx6hxGf1Ke~Vu8AYubj*jowMI0H5+#_|B?!P#N>gc^<~cRW4xoe|>V0No`!f
zg#UISuix-^7BIR$T{~;r=i8?y9sN?MRR7{kTK!`aD|ex^QxmnguJ1l!VJDZx9~Z~A
z)l9GHJ-0Qu5N+L*$sNWzn?559MHW<
z@L%BW$#UkLzDq){U$3+_dY}GFV`j4Y!KG_VMXIxB)EKN^d1P+Wy0xWmHr$Gx_a~lL
zM*gm)=JaVvIS={oI*UzRwe@dzn~%ts+7Hw13t#=b*Sn4}?cR;Uwh3Do2e0{as8euf
zGn38xnj58?zqU+^R^yEpDD=s_z3*L{fL+U!c}A0Bb}W~^-lSOVqa(F5hJUN9uiWV=
zTe)U;l=v?ZO=4b{EdD$Gf5W+qu*wIr+P9h4`puf;U5!w3|*T^S-c-efzO(%Z){9raEQ;#)z
zS?ho8<|#bA^T_Kiwu>r-8kydnN{shUJbLyf)PdnjBD?sz{h*qiaqrCi@>=&kFLBQ+
z_J75^v8d5=qT>0O2`#6;nb?W=iQ7$WaCm;YH+ga3$(lp9B@(K>9ETUa=(Sj?&vZ%Q)ty>g2T_crDEPh2=}
z#`HZlbJk_wU6Q$T?_)OWyRwJ>{E^~{{~KU@R(Q9m*WI~N^^@IOjyV3z?k%;f3cnZL
z(su4?`K3>5mh632v^~5l;NXmzCd&`&Xl;F0ouqwCtxwzCd%Nal*?-$~r!?G-@SWYY
z{N;;v1~SD_mNi?lJNM6N7kc%{aC*Z}f!gWMw0kZ3yU*WT^WojnMB^vf%BK%|{S-QS
zz4*JPOs$sj`WDBU8gBn@kF9mByKALy@LnnS`!V2$LWa(SKxK8=J(=}SAN2*wbA7T~
zyDlU8MZuEHJkgTE7wd$-KU~c(JF(!+hm%z&7G(7(|LC0~v_|FT6#rSFv0Dl|DCBuiEq90
z7VSv5`T42pN9lvVI#wSMZE$$X?w3}UQn>*o~K
zsq*kyZ+iTgO^2^v_rijYE7-2hU`SeVsN&CIrii$|0-UB(3_Nqb-~U(0zF908w)-iK9_$(-0Mf%KJEyYmDS2O*T_rRD3~Xi
z>Fs3SYn=YMx9(BN;t2kJPfl6q(n;4ReY~7J<)(T6(nWH6{P(`t+1KZsyCU-2x7let
z3)oUmf4r3Ve&vGbR{l4a&J-!6akwpb+xzE!?**MFCl`N{mf>M}`*ZP($VpO@-{0^x
zh^u<&E-Y~&w#T&opQE^Kidc;xd+`2md6_+{e$SZK@TfHTt?I#W!Cwp6#ZrRvs@6By
zd&+QfcVu0Bw&il&zll9{H}C#tPuSX}ImO-kBdg{kx1|{oYO@5d#|4?*Sev14xPRIy
z`39y&A8G0Jd>)b<{9?URQhxe5JC;gEc|V&JcJ%5Sf$yj1)Ub%}6lLM?X+4_0@N3b-
z%sj2N{q?T4YSFXWZX8zCm3{Ew?#jgc>-(}cEC>+Qxt<^Th1dD4n)B+1b;`yIxg9s;
z?3p>M^V>}aqnx#C3_XKP#2fS-k6+pnc+Eu8n{~FH7}K@e^RH)rmw%aXZ^xO+FAWbW
z+;2@&ZE&o2^3D3%A-?6PW2D<$o8BE^4Thh(9$&HVF#T#UVPoXR!~=cH|6f)M+ga(X
zs9M%`=k>82jQ8f=_`ir{#gkaMk3~(lPRld?njhDAh%Kn%gRA(1a3}RuGdb6<7Cv`R
zK3l9g{`cX6ws$k<{yNlfR*zFPHj&{!@4EF543`x0&pKtM*&Sitc%A>EaMrdTeg}U~
zc>Uv`b$nai`cjQ0C(irs?BG9eu;%N5zjJr|TyfzBdnZrKP0tl>A}hpHH@e@IOMd-e
za>>Dp56#Z~&sMj+yxw`MAWf?Kb?JMT=O<276&3`@Ew3`oaNlh2FW0h!<;&?vQ-ALK
z`J2VxJk~sMoU35-w@XZg|5Rk36s!;QJ7_lZj#-fFr@2gGtwM{I#3v_ef7?E}L$a`F
z>6_(=4jGSP51IwN)oiFL68)wBTGwptg(T@KTl=3Ct~~wi6nA9xwpQ(Pyw7(otjW;V
zc^P%wPUMfL%aop|{>X>ZBwzW3ZQLH%;Az9l&HQP~^<|6Q4(H`4r3*~W6_A;AR5)1V
zl4`IE(}zv@sd`8GRHsb(>%+41nc%v=B1?>Ge*I4MoaJu3Sx@!I(wGO2qeRm*8v`zd
zap$!>Iq>b`GnLzKi<&wr8|7@3Tj%}Ut+3a%<;bBc1|@fedD4EH^Q{i}cF*G~vyn`=
zs$`b6NAp|Wcjp5;wbpageYoqs^59Be=7d}&%dq3|ZAXi4g`){HQf42Wy5X|&C`a{uzzpo$P7M?lb
z?(Jz?_|%R(KIy!{Zf(A&LzvK|<41Qkx+G+tnrb+&u|puNLFS8sylwN-b6b^b*z_iz
znRanio_+q|{zoSlU7TRrTc5^u?T65r!ux6x%RcdaTkrbnMsXSEw5|^&98-7AHJ_-z
z?d3MU<7I#L?|1$`&Bu60JK=75mFBLpH`|3n<7L>cEKEMVl7aVugV)wi4XdsaV}ny#91%qQ@u3
z1<76$?uP8*cXUghdarrm3fFmp6^2=Py6f1|<@;XewgfI*ETtf_?Lg<`N}JR;&Xp6y
zrNW)6zBOOy=)aTm+n4)JRm|;{fJ4U@E44lJ@5vF*XWA*$a#!KOho{x^bK|%APM>CY
zNNCzWRC67hd#AT{OgMM5d}n>Agy9#>Lyw|*)oZgptkihgKfUAT
zvITvKtCU1lD>ah0MPA$8Tl}MXJ|VxOR$P$DFpq^UfZKGq@f1u>0iS+;x-g+0CAMN#ams
z#?$r(KRxe6<-EQ+NoAqe|Me;hT8stGiQ8?QEF!i`j9+?#lU4fm9~v6*z3XhguiU%a
zpKAjf>zx0d3uBpnJ&Phu0Z2BJPG{x3J
zQ1hgj$=X}rFU+2^DztGTTiU_@GdjffhHN>qR>$Majg9Mme7`+2o{xbcP-Q>!|8u&_
zC7qs3dUD6Ua=rIy;rLlSX**B+IFY(~^@pJ8fl
zZ_Rt2J4kmo&c0|od2g@cQj^MgCnnwqoMSLqw4*FBX>R_R(j*tRpWRAV)}659ulM_A
z6@1#QQ;*R{&)_2GW<%bsVSD05_`>df6<>ZdvTmAm((lvL{+NlMStHF|T&e1Gq5Hy#
zPvXgsT_TGe*QV{*<|n-G3q!CaPtft)Iig=hBp&>An7zrUlf!9BVG%8|Gs=_%J)t>e4+3ybA
zR=j$1t?S>lfu}!7D+e(g(6(bPUmJ9)(Y-kVWm$>X6Lq1#1=CUxs;Z6OKN?p+7^6
zWx=DC)=dQq|C|w8le#w1^53y1FDzQp^yBjTY+MB&F+DQ~lXxPlb?{mbUo69UU$@T@
z@kWblS@tj1tNx*Qd*M=s&AgVL$Jm*E2z(T7wh!Ezkk@PC)U%nRv2fw%2E9eOn?EHk
z>zt;MD|$1gUPq_P-D%BvpUQvN4elxZ;}E^{<9X2@H$JmMoNH;w!Ed`~
zT6gV`y*5A0l`Dc#zwegam7vatZSVi=h~KZCTA+WPbMN=7Cqn-#@IQ8~my**vwy@sl
zm;A@~M#oa)ZgbX6atqmWC;Nz$Tu()R!}&EYz8n!*Eg@!n^3c1wqmxpK-W)59J!e}~
zX7#5pm`f?=-1FYZqHBJ0DqeOSy?f@*a_*3uXL_zZcbm0(#)GmF`>h{qpYMHiYv0mC
zMQqK_=a@AmB>JUK`uXEB^S?5lc?+1$Orzc`-#x2J`sWk->n-1Ht0pYjQ2E5`ZNrvj
zp3ddfrvok1@9*puiC9u%y;SS+Ti%t)uLnd>rQBHi&?_J4+3R^Ih>Kf7Of7I58pLLzupu5(e>RrLzATv+%l`{!rK*O-k
z%#%f|7Mu?~-<%A13dlTMxuP5-dQ%S4XhtdQ^LjD}6q0|L!fwaxju
zOms@yzK@S@;&t3O)rgZ+{ucz%Nf3}X9uz#iQ)@`X*kKNnP{XJB5#+f9eB@3>d
zkNJ2!_Uo-DZl@N!P3t}&W4~_cquVkv&$g;HSD#jpUZ5=|>Uws`{l8ao=M@X_#%$kE
zwSoPS-@@n@zjjJGpZlHUurG+{q^HTyHY1^auG9oyW~JqdM5Ls07o;)(?)kf
zuHByc&+xIu{rcda78BTT#HXtavN@cdY^mX`2(xYa3{N#xqX(p
zy&P@-8K#F{zi`fC&qT=`M+)Ar`2Df^cuC#VRkK+>-~Q}u8tiChb)#OTcydR`p%+Cj
zFU?wbaD8Qgsh<3WKuu|lKZZLmH%s?>f4p+U@OS&hSy#XP@Cv-Mrf&bHL&^8$Yu4Hd
zbiL{={=xMjB-`i>+x63d4-0-gmG=L+;dD{>1DV519(f1U?X}vw-heUE)VyyWKU1U~2zT0i0Ki$d8
zqQ7aft?6vxS4Q*tH%G9rHT2I-I9V9wxFomNM%w;3Ys<2p(?yO4m(N`4_3@vYloq2{
zM|u6BZRh?4@Ym)UFOh6MyD@d!@8se$j)%gF9eP|WU6*}5q<@BKneRi*m!E}itliP>
z!f_`$kz4Awz3lSTCtI(TMj9-eGp+sG-O9dgo>iak*sg-?ktdeIrnJp_mjU{MUUPrRsXW#<=>sB3{1Sz8nSFfB3Yh}~}
zI?^LF?gyDhzw!8WeYT>5_|J-2VyAbmJhA=XcAu-4^jGA`vE;0sHF=MfH2=kBd-0g1
zP1k3HYH2KO{#)zi{_xFBHyPFomtB`evz$>oyyVMb2Bvp{ulG70KK`I$a>q0=xeco`
zy8pW_krz5Xx7MS56<6=7cOTw2JqvU@V>DaW*uJH9o?+7a<2_-|{rJ`?E-k(A%v|GA
zhrt^A3Fk$>9iPv3kKy}5KGy6_zSrHC@E_9(;Jj4ReC6mV?d=zN&v)!xx%1zC-R9Kj
zbhoXX@=Ui*ob1Wm`QX=#gz~V3=6sn63!+c#diZBOyMN-=FABE`GI$Du?N+Ls)f4x9
zeSJ#Q&pL}A%jU1=%6+vWMKxdxXZ?)J)$&go7B6ZS_S&Mb+Va$NHQV1|O{GDzYl_cI
ziT^h><;lYA&n%M|nmdvmK3IOsV_s+_{$o+xq#tL*3N?4BELCq@*l_>Xu_G&<{`+pm
zeo)kLiBQ6YX8)|HXWC!bT$ChzkM0I${F7Jo7RpWZIOO`d
z=Om{!Y9g+}(ZoRkVqdbppHOyNokk
za?G`vD-~P+ybC^l`sI>4oh1o9X+HWvraHWPZ37oO#cUuu>qWdo{gTn8+e<;nHI+tH6T?q}Q3h%i7E8
zcX2&aLvQb+-)26;a#k);$j7vrmzpY
zT_61l5C0OMcO_!x@zXUN)2wZLq%J=GXr#d=yr}qu|5Oic+p5SFEs;T)rRUZ5C4Ihb
zk$PiG%nY^W_zAPM3@vB&e)dvu|H7lYck`yrA5O&{Sn%eY)5Hqt(4OZ3&4w%?tuIa_
zvI%4~e6!|PTjFza)w&H&c6~0i@N1M{mJaD^(9G&gT3mg7|L>VT3r`xf^D21g_dQ)9
zde-Su)|I`Je*btX#aya!@kHhM`=1lDc3QK(zqRq_kF!^rPA+D8`e9YLUA_PH#rN}8
z7o0HiQRaVoS?0wWIM_$Ev1?bZlBuzDr)B9?n6
z0+t=#@_U;3)hBmF)HPPT4N$rC+`?4y`NVBZrNw>kgxFVIuG;=_&7nB&%V8FNrzGUo
z{ky$mh`g_0R##=7IsxHSjZjpHyT|IN^#nl>KldIOL9#Hu>cU_J|
z;-1Yi9!)zxI^A`Q_|)_K(s|y)UAAp9`*bJD92YcC|Gwg)q`tXD$&{^@6EyLF!I-DTrz~OCmB@P_cEPh16Z&3%xmT2>
ze@->R^y0M3v9^ae|9^5^SvT{1TY2Y83(uVatN*@dvC4hHcJoC3u^X`~cC31RDC5mu
z_77p_*}v>9x0ra~LCJIn`P&>P?%F173EiUeRQYwyfzbW$U4GeSih0&tzgu^(%Ql~1
z^ywES*&@DQT<4^p{Q7t*qF!(Lff>{6wmhlW@#*X)-Z!hRJ)0aM=Dy(Mgsls7_Ae@o
z+rB2U>~eC#@upawmCv>{HH$ms)=n}zG4Zm(XVtE!tmh9n#{NosvEuowhW*Ot9gn6j
zoG&;nC+4iJ+$N*0T3s`ny(hSJf_%@JZC2tl*|H@k%y=ius+OtZE5pje|F!c=JQrqH
zj^SQ)X5kKjla&!dU&Z%1WE?k}lJ$1(0nku70|Ns)OMRVKuWQlabB)tVIT&B~2I$V~
zO5JSd^>Y5IZ|61Id!8MOI;C+mTk&*Z1P>!?{DJ*@AGLB^eo?F}&plI%VS3?()oH;e
z8SNGyS$*=V{&WsIo5UxJ-xMute;5B;?cBpB(gI(PY!Tak?i$}(X2Ul#&Kxh
zjnw;MGfrp4WO2V<9j88B^YFr3F`w@IQQaOb#U}J-_M+8`f8J2sU#haPpx$29VD5*|
zl3#xoPv^7yeZRXnYwnenmW{l{d*V+#t&J%*OfG%2A#wNf=*fO8_a1uK8)i&yJAPZ)
zj`0WUgcWudKJ0Pg{HQcX%}C{}z>TG*i}#$aFyct|V(k4j*J0%)r*ki=vv25Ge!cls
zZ9Y#!#Qp4_ac2zJt*VXqo~nHm`j=SdxK(tflI@#q$@>V<*9eY29@!?)#j
zYh37zxYxG3{g>H74cG4YBkvYjSxbc!{Vi#_y=%7N)+45mF6XSVK+x
zfI6dgZkFJjau@3eoyHcya3V^P5G__1x`PbeK)J_KK@)qiN}_2U~Zs
zf7)>L<#gt%nbXe(viQ49P)Vbw)tCbzwwVd(b
zSrZfU1(S6bc2q39vUN9))Sn`+gh$r8rxpIcdB)#WvqSC@zhkl9qRhvKoO3N(j~zYi
z^Z1h>{|j|zmtE4I-s>4LKlVIQI4`Gz>)*p~J*>CH*nbW<_GYvuCO
z^B%5}nJ%|EK0w1tA?&~LqeZ(s|K-QYM1C?}6M1;WUcsn`m76;csT97sx7dSc&)RkC
z-w4RLb}kZ)*k`bY|KY32vsCY%YUZ05svLD_tNZMWZWpQ*RemLUCHS7G^OWg)+1>Qo
z=|9V>oBJL*GHC?dms_JArEK|bJ7Zx`?u*CPIv4f{OYNQZOX~A^IXRCT&J6u$l|Npe
zsdDI=o0e(BO;6oR!rCQXWy!e?ok<@I#9E)O-;&lA{_
zRqUn46YZ-~ZR>N-olSlqousvPnQ0j7rfYNUESL36n%mXM5htVASb9E$|JYCSU2@T3
z$`cJtNhq=}}Y5
zp^L3n|3jMnmt=W0#!H^M>&h6_KFNLNfr(${O%pX^y>R-Z(_Hb=to0w$)og6N-!Uay
z9}m^%Jh~?|#~`<&w*CQ+VA}G%N-O`IVf-VIw!obyZ3;8%zRf3R<@|Hrwm0Q|>(q-M
zq@|KRay<32xLv&A+v^h(-q;-AlD5Bl%h1}i{nX(nQ9-R6lbx4}D_ywH!^d%|YevCa
z`Q6VChVBsEbN#8{OOpdTTaWE_n4VH*As+utW19GlOF~jD8+i`4Zqd8W6)t#sitJSj6j~z*fUQQ^l5B
zy`8k8E?o9U7*ZW9&R8>J((oJ1j0d!RvN3i*+n(ZftJrGmnKo
zgJLF3Rd(GF`R(^*VZK7P(s@;L4l*PME$Dw0wO_sDY~C4TCc{|q4@VAm8giDMOj>wm
z#r*59UmP!Wm{_fXoS8LO++I@Ij^2ogYbwU3--<-({Id#u-gs)kBbX{+)
z-;#LI-Onl)|Jt-9kkvGlf7c&ZRQFWTgkYUr$m|HA7c=1miPa3x2rsQXUr-ec||t6l`yv%j#fv;4ESmQmnNi;T5S
z%*mOnLf)GeONmzS_`
zSJc+>JrB=2_1L!Jz5JDXnCca!!
z@o?$#Yf~oiz1jXqpz`z2l@s=+T$lfT`LIDbW7@lGxq7@^#%FHsNSyp!Na>huT;*k{
z(j&3_-c`N-wUjQ!`iN}twXO9m?r1W$T&-`H?z_J5Ve`v%9#O6C3gJPS_Q~HaY>s#l
zoYo$_l$F&|^k9wEO3n+1Hl6w|cyi${feVW@WXs*Rs_cKe?p*o@%OL*Lcgu^4&6$e5
z4sHtX6!ezN+BxIggIM7U%g*ZOOD%Z0-gw@Moi^)VruK1dDk%CB{mjDuzUha}8}>V^
zPTO<7M?H4`wX44EO+M!io%eXJbFS_4#%ms-C$8-_II#R!P{XhOU2o?IwEgreZQdUK
z+4~W@bLKQA=aT`m+&|r0c<^Dx`Rlp3E)tK9_u}w2RBKO??roy?P{IW{hZT~aX)ANpQoul6Izx?>?pIc^zZjDf@GR<9d
z!^}2b)Ap$S24+^__m%UfKFDegcyuSG#x&pIlTh$qqZ`Mc3%FFwwdp#~xu>xB_K(l|
zPaoutXPENQs$bQ0O4yd#)JA^K>z9?TUA%BJ;3@x{4R=3J&%3)NmQm>Z+!r&;%D6pd
zGw42Uy?(xB){V)Fi@RF)vzZ#(T&;RgHZgs&_HU-R?++6SCf-X6jK0HJc;kda?EP04
zKW@<3+2FV7^!h`s5`Q*q7x*Z^$X1c9D0TIKoQ-pKxTHgE#zid=j?aeXY!Yeb^dcA+
z7B(g|t=?BFSsi++u+F7?s<`Wq7039J()vwYxn5Vitf_v-cxBhuWQ)%qx-;)OP4;Sk
zTJEAS?W$e$ikhpxV_8Sc@nYG^;b>Br02etOkCA}_9ow{
z1rA-2ktWQ+)0NyK^@VKwEqOPnG&*?t@Aj3w8`*SRuKUp3iEkF1EfDDEKQg1a_D9tG
zlmZ@`Z(jpl|MS>CE&R7B?Zbb|hfV>Dzwu3((lGJ*!oC%yx>`bh-z}G9
z*VuQ=Oz^Ji>~AZ0DHGFH+9@k0H`iUre06+Fx%5}Yn*!6zqWE3bRjp7=`t|JmXPfsa
z=IXyrsZ>OXb1qS1jtGr;F6vu-@5ezFzOTL!u~tv~{(l!>HBG(oc4EYd{>yBMNe-vD
zXS6k*?>qBxnQv3|`h?Qkg?pc0{nwoJ&F#sI$hDL6y4HPu%b%3^e9v}1PXWfo`!;Mc
zn|V6NQlv8L|D^U#+$ilAwz)gi
zZ@o;RxYK{Px|drjnN^p+yP$BxRX4%i%J$N_Wi@jzs_sZKyjEN?<;E5hW#QVyi&Ase
zDV@yU+`9j|C$o+Fsi0%e<_8s=Suyq9mP~a`f%gwjF7*7ic+um}>h}sB`)1tN`ToMD
zV(PZ?5`oRu|K{bc2vE6q!omJ+;rS;jq1V=h&Ajn&`mgYy%pAWd9(S^Da)pFFnY}CK
zw$779r_%2na@?>WYg<^R7{Z8-QstN6jc>KnmXb;l%Ei>%wDC@XSG=+V3HXO^{l
z{??0VU-*CS>fb#m(svK5+He`&^Vk&@QEq;k?n$mITuOE=!#`{pBi=ET~wO?{N9AWFy;Pv8)DuZBg&Z9H4RwU&!_AKA~Z+CU#;Tb=&
zqw8IFxCmB0%#)bWUoKW~CV$!KMSoS>Zgl7B&*RBwseH?}LTaHnqe1`A$sJbPKd%2;
zTD#x(&@SW1y8boml$Pkm{`)Ji@N{A0Tzj|I6Q;aq-NedBjI7cX_ZzQjIl{e!rkRZk@p9+@7kci*~WqtC(Sw|AKu_iDy`
zxN=DGkjT`_8_&Ekv+h1~e((3T08
z{Wm_!+rtJkqZ>7Q{so#{Tx@#Vc*_d!N}Xu8K&
zG!CqPv~Tmwdu54fH!m63&TS~pxgfMN>7df)oAIqP`%m4loU?uAomm<&b7QwCOGYbC
zUJ%}PWNp-$Z9ktYyq|FFmO`c8s)7$6+?~1F#pDA5FM9n-G2=8ly!qd&`)^`1om5)2
zZu+yOnPz{yve(_?{&XF)6B}*V5BTj}l$ZAHSV%Ny%#s=g)92b@Y?_7b0;^ANWsrB6
zQhw0I*89W81q^K`wskia9xnOL6ZT|lnS;e!g)5)#G)xpd^6blmC*exYdkZuV$66fW
z;-25OpJmhC?}?Ktlyl3L27O;;t!B93m#c_m@*hu?-7*S0%+@HRdyB19JR_yEc!67h
z;m+i<&
zlK+&j@0HpUEqDJBZkKGHl+Q
zu|v&!Uaw%^uYJ!1_oXkrl)sksk;j9>Pr{{FFMPYtNAG@f)Hk-|NaLSZW`5qM{HEh)
z!kLK6h0eMxGjshS-4|=fy9y?Se9Jt(;#Kb>BZVB9k|*q!C$!A}|7Zc*d4c^Nh1L)L
z7K;U0^{A{V&wjOXSzWGNcM!io`d9nYyz>Q0r}E7%k-c!{x8jXY4r?CO>TMLed!TN4
zvQP6R%`Z=kdv}^i`lpI6vD5q&IU`&lg8d1<$m-!ScK5KfF`t?AMiCSN%ryhXcup!3OPlIu+}s+g=y_#*|NW9zBD+qB
zK3KTN<%G`H!@Cz3J?T{NYcc!1_Qt!_Z`S_Xmi@~-SyaB?FMdW-K9`OeXUvMl`(M^|
z$A3!xvE^^i;T12N|Jlr)b1b=|HR`|doF|)YSrY3N-WiK3-FvOppBlOG_PQTGdj3nl
zyqxky_t~rd4BtiGy9%GlO#iZBvz!3`bz7|&;=iY?xXS%Xs^X+b<@Ughnqj>2tP5`?
zNgQ6gRGI6v!<28X;!_<$zHdHoL*&%oMT+XPPS@02oZvG(BU0jR*ZjgYWsx^S+6{dr
z*MBdIF)FP-%MlURc+~Hu6vKr6ty@27+UtwE#|nJ4}J-2WrY95_ul=1XYB;#5agx#OBS9-c{Vd7iH)
z|2cknde+^|!m_XYZ*Qnv^jY~K=fSZ18`cYICAOFr@3Rei_wU!4ASOeXCh2)mtMr^!
zFPwSoVg1Z6>gzSdmo0d~_H)B#rDv1AhVB0*oTQ_(CgbKy-MybD_qi_QozELG>9O9L
zw&Tn%bo;&+Gk^M-*AX0>Bh~04dtv`9i$mc;Q=j+D-*ofmtz_0cis!`M2>-oh5R%IC
zJ}A>L%}42)jbPESM6;i-o9_llX3V}MTC>SYROeOa!8?a0wRZR{P1h@cG*-IM1tvEoZkt-Lt=IQqhRf>{8~iNDEN?(ZI^0Rt&+qUelY3P=70y`iXtakS*MlvJ>}hFv^z4p
zbib$Gt+)QS46_9no?d9hHshk1Wx+Qm&wHsZdiy3w7O#1`|JYOCT5_-~lGPdw;iVoYwE1$Kwe~0o#gjg*PdvI}1KD*-F2D7MK
zr!xl@ynnFP_UUhCvBv-Z4fid#zEDxT$mp?*@}`+*XLtT#;C4J@xAvuh(&uT;6Q(b|
zlU(&`Zxp-I_FpQM*94|!9AZ6q;p#o3sxuAwlYL*EG~o<7Sv;rF(q?`5>4t#%EgQt2
zFO`$2T99zX`xu*B{65AW83XU12REpAFUw3ixu<4tU8&NM+O<&|U)pl7W!%*SKD4Y(^dDl_mASD3;lB?`R0`!n*Z!{
zY8u}~mMISu6B54^Z?fcS>vR{e)-=yO*l8MC^5TEO>;wG!-$-llEqx_CH|HYnhtrml
z%WD``PLBvIYu>ndrrHg+GX6hv`xXSqOg9vpB3;R^b2e_{zP;ykS^U*^T&XaX{r6C+
zVbYmEnFW5_k-ov6l@9ho-&WR4@@uW%Uc6OoSJZ*GC**$Eu&$YThU-?}Fa4YD$;wY>
zFZ`9^k^AFX(Q<{*g1<~M51M%|T~5%hRNm&fjII7httfY5^}I{V!ul1aEcR#IT&}%n
z^}eeWM}(hR@V%YR%-X8UaLA}$W~$MvRo|{R(ulFDCUblY!)8&u8a$MiCHNovrTjGqTf(!S@{^z{1
zG-pY{B9Bi(xwcnsH$Mwb7n`>H=MJwQhvgK@@8>Ue`)_X~7#`YE|PlN%uj|Qk`u9cfaQwx?GMm
z;hxi+`+mb?Es?^DL9bC0!KqcS3J7vrr!whh5v&t9sTCGbY~
z9A9kUk#4^5+`*npY8?mW@2qZ~y^OW`@8N0EtFImTe>U;xq3cp|n{(FolsyuWG5qTU*B!?x!3td+P6(R5bT~e!sz^PxR^wkFxde*)2G)m@)tF@zK2=zoIHt
zUro2XX#UHEeEVf$S%fnjrm8MK&tBT=^#8@xNfNuK2o#m9=|8Riz<&F#8R}akE?kWJ
zG-*#rxN3*LTaxiQR>Rko7aE)jqvKl4CTD-RZxkXC`g^nb-V|=3ZAY(rgllp$IQ*Ho
z>(CzYBm7@uCaGL4W_f0jd~|VtO84sd`?jomKC%0Eo~lE-*%~<=nY84JPU{b03ClJJ
z%qw3dF7Cv>=zGvHku#0YQ(~6acBZI*t$&(kVG|PiD&u~Q$0MB+N3OBeP2{mKd3smT
z@dvb%z^ZS0hjX3e+K4)t?}BpTgOF@3BJ%0P;Wb)lBDBbu;i?`460{6Eg<<#oYLV_F>D=M8RotN!m{P*_#vJ
zzL{jMlW!3G=JbT(uxGb!I83_!%72N!XA^f!Rb|d$RU5fOPabEuH_LFm{GBq9<%Mj5
z_0-%QlI)gNE1uZJuIT3p*dVgBC2#qpcaQGsGg~lb1m;dd!AL!j)q32qtBn(Jw7G&uj_8e
z<4LVIW2Lkd3)8uxSq-0@E1Y5HR_?X!X4);o&aba#J03lA#h@wH_x&5zqo%HnYvlJ&
ztJLr^e%%-BU0GyMX1_5%kb(Kv)Yr$B1ngl6bx*EZcIoV{l{x<jgma3w{W^1T!L3*CwpZn>^Loh0`DB9r
z(ZJvvSKc3w<6~BJGgZ2=ASu}U)T_|^sJ!cjOghTVm$2b$K*
zzj|}S?iNY)11p!#w3=Dmy?JH2O{7NHLdO47&XmFRs!2b``r(DCcf_`BIQ4ItDEo(%Z)DobSzd?uUYlf}{%pfM
z-KRFej*^Gtnd~=j|1opjQ?_@XHa~x}VDEA7ulH7{Z16e|`{~uXzSh5`eBFIVOMc${
zc!A&G_r?$fUZWM0ekDwhtJE<`oyR)6Dp&a0PKSovB(bHx%j~y0ZgFXAe-PfPQOa&&
zZTg7c|ASrogN->4d9cCdljgM_&OnjRCUjy%#6Ba*WdpMp;`D!}{n5I?Fsn=8w(OUKrT+d3zXPU^vf_>f-c5bqmE`K9sj#}#D1)F7)wHUuJ9JSt+y>nB^
zKl4?o+zWzd3vDg3jBTH2@%}6m&-(+SvRB!!TDx=2V_sYyU|sTh6JN>3W0Tqn9N(u&
zcPvTZm$NBi3h)v6zQa$nvE{knM`kZ6;Z)Vb>rG~@KT#VR_K5e)yr&s6tRFp1vG^-d
z>YOhk+WB!`i^7CSrzYsXxjN5_Pn5;r@Vl>Fl>xQ|n=9nGz6HeON4MM#b{4%f>q^1L
zCw|LUcuY(AcX;BqpeIvx&X+G*&3Zt+TI{&j*MseAKL63#9{AP3@zFcRJL;!$o@}lX
z2wJkc;nvZOYTvKy)?nv6(Ry;?lw^)SA-krB=1HEvG;!tAw4Q~#{<+6+<;QV!J}BF=
zi{E)pQJHl~Ti=sTmi7PLFYOV`%pqKKEJN9zv=s(BWEsI@rFDw;JJKvcKO$>
zLFWuYtRM7%BN_YNxwHGNtCDEps)N0>(b)0r`eZ=OB>wKG6ZV(tRT
z^>J}&uWrPPY%7{uR}|9a%Eh=_HF4p)mz9;g8$Gy|iG-Xr+tslwR!nc>TlT|8izPy)
zf05t8XEZ&{Hn0C{G5^-kbygdg!u$NP?w0T$KU~W{=l8|Sxr^&wv}QEd&d*#}(LXWv
zPEyrvvt>rUD)+)#n`S->HQE0#gRgbgroNwZ%C7x*^I@Uz?8aS7?oT>acw=I(+ArR%
zTaSv#D{B9>J}iE$hu42&r-k3Wuvi1ba>qvbTnCFi3871UFZ`4;=sLh{@tLJTu}1lK
zLF(!XgjjQ`o$_Uk!{t-1s1+Lyz_1}^L6f6
zdDry;Gy5j}^FFQPZu(`y9GzueS{?hkKlIJN=BV8K_p@9DN6W44vm5_3=4PMISd+Z&
za(898&6Py|m11R=-ByJ)dws?fjix#}ZfX`RAl|
z_ST>1RD}iiH1isMzcAjtSy@y*Y3Ivy`Cl{tJ<3zQe9NFA&^lOj=bW2f+7Wzeq0Be#
z*7ctKzba-^sNu$`hLL&JCrdl}#RubRF*
z-X?FWSrql_$|~-aV(Xiq24yds8EU*#<8;oG2c4%CCO6u2Wp8EaFwuCRp7P|6e3!RT?8bZC{&Lx0
zu{XM|zCZNe+-=7;B;Lq&dv-J>#4E2nYl(oY{#2Z2rD!)Vss+JDAhv$Z3we4K-$G
zgVJ*f8Tksz;&T>+sWn*c{?VK<^?Y&b9R9VR%Q?2zZ)=v)2#i#-oH%#uci-gt<)@6w
zmzP-O2)0{aXT9aUNXGSoMzKEk`FE0!*4?_>EgyaE+@3=%SGBzIS-*44ORfFEUanB(
zJV~(1@V0^6R<)#^?*pwPk9PSTVKryn`h5SxNqcrJ-(F=sskJohe|VIR*@?=hFV=G|
zT9puVeU{1;b33lb;kE3HVQtE5RF-}4vpH{h-A4xZoU@D)ZD$_RCDI*
zr1H4qlU}I@vT6ot?`ORG(^1i`XpOMkDPI?zP%(>79{DHNS4%a1l_}WVA!&c{z?>QD
zsxBGN{&{6T_dD6o*A3X`d#~Q}yW{YyCOPKsciKc=E#H32_s+J}x#AKM-IF4%o1afD
zo7s}Tweah<`x1NSiO4Cnbzk|ERaZDgsv~zEr+>HBUH8Q-3RiOk?49JQuB@26e3@9~
z+^OYnn$^Aw@-BBc_UnC;a+#ob---2=9ILNQsanf1M>tV+Lj@;u%ZjNg70Wv^H4m-H
zDb-oIMBODko|kt|S=+uZ+_%1LcpXi&-f=|Ns+v6|
zS6HK;C!8tpIpZDwKT
z4{O-+1x+~~s|WarL@<6n!}ZP6ejjl*xGC-z+-q|p
z_ms0il`)ss`U92O8GjF6QTu0~ZnT>9yJO3*N$e?J>(?smvreDqA|rZ@Mc8=B)D&^K!D(--D*5GAfMA
z>ZZSy)$lA)P@A%~_kB9AI-6PUp%aNAXN9Nq+$)GVQL8qsU;j$Z3!mz@VQdHgOm#|o
z_fou)O?Yx+ondUJxJXgY{(aYHy#6E>=fpTKq%zN-QFf->r`a}gb{CwlP2FP@qCWlM
zg=+n~Ha};uE}3t<^Y{9RGAVPmFqJUsT|U)&G;I6g61O+95A?l1?)yxWu8h@Sp
zE(!`o%$6}@+r7_g-@Pqc3u@mS`8=1w?d-Rr-+N!(SY|TqdW5h=QcLa+7ABFXyICuq
z%e1b0x9xs~{$jhcA5;8uW=&!eP&&16`Wn$o+1v-Gdj}q}d7vK1xH~>gn?*J8i|&)W
z3Cla!jwC)?V0ghQW%p#eF#C%I>z`T)XIb?n?9iKebKR_^N7agNuT;s}$8uRhYSE&5
zKkVHzsu&iUtY9Y%URpGKM(wE<=D-**{}SJd2`=|E8TAT(*)gvUQ6t}a4u$B
z(`pUJt)Dn2*?wMiOnNb&=A)u}{|nk*mNrjymHN!ex!aI2ss2*_I;joJt1q9=6`SVn
z6yy5Q`J!3tnKSvf_MBTH-goTp-g9nd@2lEoX)jXr%6@K{dQUXYX4~S{t!&yC78?Y*
z@M@e6;4QdxOj~8vo{q<2$HVPY^{4Id4}CR%y{g|W`;~vQs)WNQXs-Unzj~%la55*~
z>6sn68yCsESD5|ennjz(j8it+1zQ^2ZGP{Z<+(0xsZ@Gs)1{|-k!3@YfJ1(caMeN99h10zc34U`p7R)qW96fpAu;kwmv=oxPDKO
zcFaeyW6go92`pTG9WrKXc3df*oqE4^J%=Xx?)#
zpJC1wZO3TDfZ~N@r*CSJlE^KXXTKiyQQ2>v~pWrRh
zS(TZur~c>N$avlA5%2fBMG`T|w)=G+nnZv6QhRL9hSO%kZ%&o#E{%*?u}k?+dd|OF
ztrlL!Z*?SOg662a>^|&%t}VXP>5Y7}rC`^gl+%&Bq+f^Z;{WN)xXpgM7}w*J5|^b;
z*GyLX9i7r}YeRyxmq(A!fy9{`;_SLCq#{U)EfJrni4{u_rStYG5*pXm6)+AD0rrm4GM
zFFz8TT%!AWy7o&Y`zvbI*LgUWe=AmfS;-gmndjK2y<&g8c{c5}PxzJ3{
zC!f!Yn$-L{D|y6g*PenEZzE%rxfa`L-~O9;bk)Q*tNk~>e7^tv=2zV-5?9Y&S*~|F
zWJ+4!^*M)sZ#_HZpykpJ7bAba=nsGUphlV_|Fvqcnc$J~4JS`snKnsd{_!YJPi=Ou
zLww)0!}E(e%U+amiDy5!=X@@*Ii|SxY#`6+v}!AHx1aq#BZLgKEUpGHyw^+--~Z?0
zb=gGW|3Bv|xsD@hfyA9{awdN|
zmT_~wu6*7;`}kd6)zYpv?kj)J+WN^X-(I4cx>8Gx6zo-xK2)>-T0xz
z&G*kdYG#>e$EoO(op<%RrbGz_BtQ$yp|$Mk@)onel;^0{&VM>ZM+uY
z`kJlC*2kl*SpQ2~(skD-2Tu7e_hoonI8FS%)1PBK7aN;0j;0vAUlliN0m{aaz(b}ajgx$#0MGW#4K?wKd^Z{^Kg86nzc)S6oG0kC!;(At
zJK0~n{Pv_ZLLxYDmRE@8j`bq(GV*){zh}RZ^DA4L;k<%RgnQ?wy0xEoc^LID+CMQA
z)HMD#S@OH;tzXX{il2Yk{7va-gF2sC|ABKBZc$&(6U;YMMepW-4s`X$^J
z&byvu8^s-sZF{j#x#q2Z;h(m>)^mNGCSRDmxZWi(+++5V4)*yvTqefyt9y@cm@#R)
z%7ZP!3af8P`);2d)^h0TK@0nuGo_~<76dPGcs9@DSE%!p4Q<_myds`CA$p6v-()S`
zmZP|@$w@2!=dF)DZr{XtRI<8qmc%4<_21!Nq&j=SLYEWs{>_(ah}C}H-+JDrs-*OO
zl<&=(eqZi~L}YL{>jwzNBt2c=VOmrbyiIV0l`P-B2a|dy$-js%H41(@e|65Z>DRX`
z7TWp5uIAO6fLY3S^4DHk6}n>uhi8S$#OBYwu3W4#Ywo`7G(C8H5o6o=0>?L3xqd!A
zS*+`HxAEC09sNt}vK4MNTXM_aUz7B_usUMp$^eb&okwImvtF#dv`uM$-x}F|lg=w@
zCo_IGNMB|siQoVG$2}3HcZHKneT>q#R+a?YPHb7Nuk+XW=(f(a&J+3jHScD~oKV_f
z#Gz34Lezc>Xxn{wecR27)4zLdoJ{_$ie9wpziZ-LmCod=`rjlxR;pXA3q8Ikvox%E
zUFvVKtqu=$gg0I{-u^V&Po_g6sdUlQ9-*A$UAiv{JnU!7R3Gk$IKV$8Z;j=fq>P7K
z)i`hM%DwHfXn*bQF9kXwvWyxgC)=hNKXk3UxZnT1(-{VkfH#(PI{K$rV=Cso;Q|*6EvpBiHXrbm4hJ-iAynmej+|kr_p`Fh~?)&>6
zrKK#{N}9KAzWFaI&w3ocTy?w6@%7typB{_*v)yN#1?$pv(@r`~*P8ZXS*S=<>%_~h
zE7SWO?gxC^rdYTvmd`b*B}%3%v$c$*m({cBym}Cy`|xHwLxyHTNrus(WIe8^PYN&Y@V_ziV2L>X
ztoMpWBEzME=N_}1v_Q@&{(^S8;G_J>Mst057Vlmn+x@b7>yK3_67IKl@jM7_
z`F2D6#f=X}JlRffe)oO9x4e<(D6f3a!iRS^@A{Q~C(z~dEPz=hV5T6>ph-ScvP7
zU`YF(KW93_=Wd;|`l;c~6`_@u>&mwL^bb$`Uw=61tZ_uZs4EH*($px#Qx*4
zU&^wvCC*b9O-oa6EV*dH_dtPC+*nYQZD
zm4g~{*DT9l%>Uf!Rr+N8B^mW9ZQfBmZX4u1?uj%{ITp5I%D?r@pC?V9@|;g~*6rv|
zCCv+e9#werd4+pa;C2g-cWt)fhOR)xC4V>QDy{n$Ty>A@
zlE;5W9Uz
zclWOg0#9DK)ikr+xhJ>2sB^=eCGFf((`~p7elxDKv{$nKe(b?^uaIDglLh*|SKGc=
zEIMM7-)80UtE8)u`ToDQM8&Ii*Hx`Tr8hoUUpT4C!!+4xr?5iSOY@G2Mtry39E7;6
zeO-lG82FxKzW==D;sb$-hjZ>95xuzkwhzCvcJ6KCXPN$8)eqmX=`Pv2CT{1C&6yXb
z$DVa|`#kwGZe1G!-3)lq-87{&?N_
zYByEA^8D48z{w0A!kN;Xo2Q?g8+d!OU27g-L-gPLyZ!Oz2FQ$SOmTlYI#JiPVeDT@!;_j<`&srw$
z;N)tNv^yFn``?LUmEr4Px6=#FJzpH?Els$^KY4PgYvr>UCGMWun>2F1xUB!=FjGP@
zzV1}<)6aX3MJj9Ro%>#VBqv*7lDDr&Mv=n;hb!Cm#N652fV?
zW_;RxS>TP*)T3WhPPSf-KVmf_
z{XZOAPuyOqI!UVWhoOM|tkn~yZr^@jo5}`Z->SEV80$}7+v~e%N%p@ck!w;Z+k_Gf
zwETW*Z*<(h`Qh2`Mn`1-KX6EVU-nP)(ZBd*ew|)MyG7+YPb$sU5csrSxT-rp{P0^A
zjjHZ*k<#hi`DvA@T}uzmzZ}BnRy=j_I)$v6q333@`UFq0lTJNn;B?LN_L9eqiDJ47
zFHO}d;$~TqwZ&qdSxtY?jyaz%mCa&Sx-Wa>Nx{cePXE)j%zF0Up3}7ayGwhCZ~ON{
zrf;9rzGe0Pzj4WCZKyr$*kJ3{Ia#h}TzLr=QulFPW*JH;k
zCU0Zk8EroxJpJ}fi_1(?*34f#S7zPArjEH6%ywG&IV-fzJwEHJKxCQ2AID1f+15`v
za(#dQ-z?*;m3N`N>Z67Se$HD*9$nD_J}yEoUP^IU)Sm7`f;1?(+ZJW
zJq;`NG%{?+QJ%5x)xO?8T#r{Z#xr>`&)Q&edF_RpJ`F89PW125cw(P1`(p7mg>V1m
z&rc3geR286j2U0wO;RbX{C-PH)BTcOlbZ2^gI9P?E%|t0Yo^BDgFFn2=5BXzwW;Vi
z9$|KNxm{heK`t!N`~2*f+NG`c|#KYP>hp!t8JH>1`cio(vxq8fU&Rc@=kX9k0=W
z8!F7*2g4cmb+YxQK6z8NM)_rxTdCx3wYt6Am708JCyCwJ>7;3XSoOk8hc#JW?pc(Z
f26^>=uG5{Ly1(!3`rGbXIDcR8v@{pVa$o=e!Kfx<
literal 0
HcmV?d00001
diff --git a/gamer-mode/translations/en.json b/gamer-mode/translations/en.json
new file mode 100644
index 0000000..e9eba94
--- /dev/null
+++ b/gamer-mode/translations/en.json
@@ -0,0 +1,111 @@
+{
+ "widget": {
+ "tooltip_loading": "Gamer Mode: loading metrics..."
+ },
+ "settings": {
+ "glyph": {
+ "label": "Bar icon",
+ "description": "Glyph shown on the bar."
+ },
+ "click_action": {
+ "label": "Left-click action",
+ "description": "What left-clicking the bar icon does. Right-click always toggles gamer mode.",
+ "options": {
+ "open_panel": "Open panel",
+ "toggle": "Toggle gamer mode"
+ }
+ },
+ "poll_interval": {
+ "label": "Poll interval",
+ "description": "Seconds between metric updates.",
+ "options": {
+ "2": "2s",
+ "3": "3s",
+ "5": "5s"
+ }
+ },
+ "profile": {
+ "label": "Gamer mode profile",
+ "description": "How aggressive the suspend list is.",
+ "options": {
+ "light": "Light",
+ "heavy": "Heavy"
+ }
+ },
+ "auto_performance": {
+ "label": "Auto performance profile",
+ "description": "Switch power profile to performance while gamer mode is on."
+ },
+ "show_temps": {
+ "label": "Show temperatures",
+ "description": "Include CPU/GPU temperatures in tooltip and panel."
+ },
+ "targets": {
+ "label": "Suspend targets (JSON)",
+ "description": "Advanced: JSON array of {match, kind, profiles}. Kind: process, user-service, system-service, container."
+ }
+ },
+ "panel": {
+ "close": "Close",
+ "disable": "Disable",
+ "enable": "Enable",
+ "frozen": "frozen",
+ "gpu_unsupported": "GPU metrics unsupported",
+ "load": "Load",
+ "metrics_unavailable": "System metrics unavailable",
+ "mode_profile": "Suspend profile",
+ "network": "Net",
+ "nothing_suspended": "Nothing suspended",
+ "performance": "Performance",
+ "power": {
+ "power-saver": "Power saver",
+ "balanced": "Balanced",
+ "performance": "Performance"
+ },
+ "power_profile": "Power profile",
+ "power_unavailable": "powerprofilesctl unavailable",
+ "profiles": {
+ "light": "Light",
+ "heavy": "Heavy"
+ },
+ "settings": "Settings",
+ "state_off": "Off",
+ "state_on": "Running",
+ "stopped": "stopped",
+ "suspended": "Suspended",
+ "title": "gamer-mode",
+ "working": "Working..."
+ },
+ "notify": {
+ "enabled_title": "Gamer mode enabled",
+ "disabled_title": "Gamer mode disabled",
+ "suspended_count": {
+ "one": "Suspended 1 target.",
+ "other": "Suspended {count} targets."
+ },
+ "restored_count": {
+ "one": "Restored 1 target.",
+ "other": "Restored {count} targets."
+ },
+ "nothing_suspended": "No background targets were running.",
+ "nothing_restored": "Nothing needed restarting.",
+ "session_failed_title": "Gamer mode could not start",
+ "session_failed": "The session file could not be written, so nothing was suspended."
+ },
+ "cleanup": {
+ "title": "Maintenance",
+ "shaders": "Clear shader caches",
+ "shaders_confirm": "Delete {size}?",
+ "pagecache": "Drop page cache",
+ "swap": "Reclaim swap",
+ "running": "Working...",
+ "shaders_done": "Cleared {size} of shader cache.",
+ "shaders_none": "No shader caches found.",
+ "pagecache_done": "Page cache dropped.",
+ "swap_done": "Swap reclaimed into RAM.",
+ "swap_empty": "Nothing is swapped out.",
+ "swap_unknown": "Swap usage could not be read.",
+ "swap_no_room": "Not enough free RAM to hold what is swapped out.",
+ "failed": "That did not work. See the log."
+ }
+}
diff --git a/gamer-mode/widget.luau b/gamer-mode/widget.luau
new file mode 100644
index 0000000..84c4179
--- /dev/null
+++ b/gamer-mode/widget.luau
@@ -0,0 +1,116 @@
+--!nonstrict
+--
+-- Bar widget: a glyph plus a live tooltip. It owns no state -- it renders whatever the
+-- service publishes and sends commands back through `noctalia.state`.
+
+local PANEL_ID = "nomadcxx/gamer-mode:main"
+local MIB_PER_GIB = 1024
+
+local M = {}
+
+local metrics = noctalia.state.get("metrics") or { available = false }
+local gameMode = noctalia.state.get("game_mode") or { enabled = false, suspended = {} }
+local nonceCounter = 0
+
+local function gibibytes(mib)
+ return string.format("%.1fG", (tonumber(mib) or 0) / MIB_PER_GIB)
+end
+
+local function percent(fraction)
+ return string.format("%d%%", math.floor((tonumber(fraction) or 0) * 100 + 0.5))
+end
+
+-- withTemp appends a temperature only when there is one to show, so a machine without
+-- sensors reads as "GPU 18%" rather than "GPU 18% 0°C".
+local function withTemp(label, showTemps, temp)
+ if showTemps and tonumber(temp) then
+ return label .. string.format(" %d°C", math.floor(tonumber(temp) + 0.5))
+ end
+ return label
+end
+
+function M.formatTooltip(m, showTemps, gm)
+ m = m or {}
+ if not m.available then
+ return noctalia.tr("widget.tooltip_loading")
+ end
+
+ local parts = {
+ withTemp("CPU " .. percent(m.cpuPerc), showTemps, m.cpuTemp),
+ "RAM " .. gibibytes(m.memUsedMb),
+ }
+ -- GPU and VRAM segments are omitted entirely when unsupported: an empty reading is
+ -- more honest than a zero that looks like an idle GPU.
+ if m.gpuAvailable and m.gpuPerc then
+ parts[#parts + 1] = withTemp("GPU " .. percent(m.gpuPerc), showTemps, m.gpuTemp)
+ end
+ if m.vramUsedMb then
+ parts[#parts + 1] = "VRAM " .. gibibytes(m.vramUsedMb)
+ end
+
+ local tooltip = table.concat(parts, " | ")
+ if gm and gm.enabled then
+ tooltip = noctalia.tr("notify.enabled_title") .. " | " .. tooltip
+ end
+ return tooltip
+end
+
+local function render()
+ barWidget.setGlyph(noctalia.getConfig("glyph") or "device-gamepad-2")
+ barWidget.setTooltip(M.formatTooltip(metrics, noctalia.getConfig("show_temps") ~= false, gameMode))
+ -- Accent the glyph while gamer mode is on, so the bar shows the state at a glance
+ -- without needing the tooltip.
+ barWidget.setGlyphColor(gameMode.enabled and "primary" or "on_surface")
+end
+
+local function sendCommand(action)
+ nonceCounter = nonceCounter + 1
+ noctalia.state.set("command", {
+ nonce = noctalia.nowMs() * 1000 + nonceCounter,
+ action = action,
+ })
+end
+
+-- Left-click opens the panel by default. A first click should show what the machine is
+-- doing, not suspend a list of programs the user has not read yet.
+function M.onClick()
+ if (noctalia.getConfig("click_action") or "open_panel") == "toggle" then
+ sendCommand("toggle")
+ else
+ noctalia.togglePanel(PANEL_ID)
+ end
+end
+
+-- Right-click always toggles, whatever click_action says, so the one-click path stays
+-- available without opening the panel first.
+function M.onRightClick()
+ sendCommand("toggle")
+end
+
+noctalia.state.watch("metrics", function(value)
+ metrics = type(value) == "table" and value or { available = false }
+ render()
+end)
+
+noctalia.state.watch("game_mode", function(value)
+ gameMode = type(value) == "table" and value or { enabled = false, suspended = {} }
+ render()
+end)
+
+-- ── shell entry points (must be globals) ──
+
+function onClick()
+ M.onClick()
+end
+
+function onRightClick()
+ M.onRightClick()
+end
+
+function onConfigChanged()
+ render()
+end
+
+render()
+
+return M