From 52ff793b333952205787e84178e8936bbf6ea1df Mon Sep 17 00:00:00 2001 From: Zattarra Date: Fri, 13 Oct 2023 21:29:11 -0700 Subject: [PATCH] Initial implementation of holo HUDs. --- .../code/modules/client/loadout/glasses.dm | 20 +++++++ .../code/modules/clothing/glasses/hud.dm | 53 ++++++++++++++++++ modular_splurt/icons/mobs/eyes.dmi | Bin 1567 -> 1555 bytes modular_splurt/icons/obj/clothing/glasses.dmi | Bin 14816 -> 3726 bytes 4 files changed, 73 insertions(+) diff --git a/modular_splurt/code/modules/client/loadout/glasses.dm b/modular_splurt/code/modules/client/loadout/glasses.dm index 74c8a440b1..61979e2bc8 100644 --- a/modular_splurt/code/modules/client/loadout/glasses.dm +++ b/modular_splurt/code/modules/client/loadout/glasses.dm @@ -36,3 +36,23 @@ /datum/gear/glasses/aviators name = "Aviators" path = /obj/item/clothing/glasses/aviators + +/datum/gear/glasses/blueshield/holo + name = "Holo Blueshield HUD Glasses" + path = /obj/item/clothing/glasses/hud/blueshield/holo + restricted_roles = list("Blueshield") + +/datum/gear/glasses/blueshield/holo/prescription + name = "Prescription Holo Blueshield HUD Glasses" + path = /obj/item/clothing/glasses/hud/blueshield/holo/prescription + restricted_roles = list("Blueshield") + +/datum/gear/glasses/security/sunglasses/holo + name = "Holo Secuirity HUD Glasses" + path = /obj/item/clothing/glasses/hud/security/sunglasses/holo + restricted_roles = list("Security Officer", "Warden", "Head of Security") + +/datum/gear/glasses/security/sunglasses/holo/prescription + name = "Prescription Holo Secuirity HUD Glasses" + path = /obj/item/clothing/glasses/hud/security/sunglasses/holo/prescription + restricted_roles = list("Security Officer", "Warden", "Head of Security") diff --git a/modular_splurt/code/modules/clothing/glasses/hud.dm b/modular_splurt/code/modules/clothing/glasses/hud.dm index e6df06cf4a..4ba68c4547 100644 --- a/modular_splurt/code/modules/clothing/glasses/hud.dm +++ b/modular_splurt/code/modules/clothing/glasses/hud.dm @@ -80,6 +80,46 @@ desc = "A HUD with multiple functions. Equipped with prescription lenses." vision_correction = 1 +/obj/item/clothing/glasses/hud/blueshield/holo + name = "holo blueshield HUD glasses" + desc = "A HUD with multiple functions. Nearly invisible when worn. Still protects from flashes." + actions_types = list(/datum/action/item_action/switch_hud) + icon_state = "holohudmed" + icon = 'modular_splurt/icons/obj/clothing/glasses.dmi' + item_state = "holo" + mob_overlay_icon = 'modular_splurt/icons/mobs/eyes.dmi' + flash_protect = 1 + +/obj/item/clothing/glasses/hud/blueshield/holo/attack_self(mob/user) + if(!ishuman(user)) + return + var/mob/living/carbon/human/wearer = user + if (wearer.glasses != src) + return + + if (hud_type) + var/datum/atom_hud/H = GLOB.huds[hud_type] + H.remove_hud_from(user) + + if (hud_type == DATA_HUD_MEDICAL_ADVANCED) + hud_type = null + icon_state = "holohud" + else if (hud_type == DATA_HUD_SECURITY_ADVANCED) + hud_type = DATA_HUD_MEDICAL_ADVANCED + icon_state = "holohudmed" + else + hud_type = DATA_HUD_SECURITY_ADVANCED + icon_state = "holohudsec" + + if (hud_type) + var/datum/atom_hud/H = GLOB.huds[hud_type] + H.add_hud_to(user) + +/obj/item/clothing/glasses/hud/blueshield/holo/prescription + name = "prescription holo blueshield HUD glasses" + desc = "A HUD with multiple functions. Nearly invisible when worn. Equipped with prescription lenses." + vision_correction = 1 + // Med HUDs /obj/item/clothing/glasses/hud/health/sunglasses/aviators @@ -108,6 +148,19 @@ desc = "aviators with a security HUD with prescription lenses." vision_correction = 1 +/obj/item/clothing/glasses/hud/security/sunglasses/holo + name = "holo security HUD glasses" + desc = "Sunglasses with a security HUD. Nearly invisible when worn." + icon_state = "holohudsec" + icon = 'modular_splurt/icons/obj/clothing/glasses.dmi' + item_state = "holo" + mob_overlay_icon = 'modular_splurt/icons/mobs/eyes.dmi' + +/obj/item/clothing/glasses/hud/security/sunglasses/holo/prescription + name = "prescription holo security HUD glasses" + desc = "Sunglasses with a security HUD. Nearly invisible when worn. Equipped with prescription lenses." + vision_correction = 1 + // Diag HUDs /obj/item/clothing/glasses/hud/diagnostic/sunglasses/aviators diff --git a/modular_splurt/icons/mobs/eyes.dmi b/modular_splurt/icons/mobs/eyes.dmi index 8b8e22abb90df5170409c009ad75b970d0137dc2..ecb7098a4fe4715d4562d72f8edecd9393989124 100644 GIT binary patch delta 1124 zcmV-q1e^Px43i9yB!8TGR9JLGWpiV4X>fFDZ*Bkpc$|&Qy$XXc6o%nBxrz_nOMhIm z6s2U)TaeHk&4FqlCs^96@6fRnGrsWf*0^>zJD}~Y-Y5yj6$Z`WsMV8w4luZ!wF<;@ z$ls9cGQpsFySTB$RB7co2@D#orsNh97@U6L7^i6$%d2eaHh*@x+>Ju_V(Zz>#hBJ| zyO7_tAwJ?iRHGYOw7u0I8n1u_2N0F=000FtNkl%H%>aaE z076S0z~bWKPMZ7bExq>spGo@{&VM)%#p12a_WQ?P7>Ikn9?V1im#>$Wc7DElH-6jR ze&o-d>+g@3jvtRV$H)7!e1`TH{n@84ZY6(SzjJCR%YXHUU)#O+pIrK7F!}Su#6+h5 z{*8@|RQC^37VkfG03V$DF6J+fMMT8I?Gr;s`fqPWL|puMCCcSD(tcbjS^siBj^r;` zrBc~>>+Hth{N=H&h`;wE>-E>~oJ#EZjlqbBa=F~`eaS->@4wIg2N0QGf`w)PLNfrN z8Gz6XK$8jsKz|v4&SMBK}A z=_m4hgtITt?m8dg>DPbEbVU50-@meJ@2~$fv#;|J_B9^8QmO1jbZ$Oa2jf;bnIsGlI{XaK8w-pib{2Qx(WPUzEM8tz1p52Uy_+n{# z-{&KEK7i2t4wF9uBa`q0Fn@hMz~toQa;a2`wY9ZqG#Zh-u2!pOvUte0^&8b{wfMOA zGk%uk)^({=idwCf`5v_PzgDaLdoPcDPp;o+HrLl8qEsjhC$GEl{qJc!`qb3aazw{#<>Yl<>mMY~2LuqB-vN^`0x^^D z10h|OTFGlheEV9t&&U7jpPBgY)XT~1yw-mb^ve79d;p>O9h2b$K9ev56knG5 ze1OTx$>l>UhgR=jx*tbZkB%g-osZvr^YQnxesk{1YOH)4g>SBpB(J;i{qJc!`svS4 z&qPGr{OIOv@;dbgb+KNVkG~hASFg=PMAYAVdp3EU*ZK#^^8tkBcaxz6DwFO5C_P&0 z^8u2Q^YNQ=S5^zt7c!p_-fFDZ*Bkpc$|&Qy$ZrG6o%nBxr&c=7k|2D zkrv6&-a-lHq&Y(y$O#p_dIv`lGrsWfwzv*AJE0$~-YE;G4F=uesMUjgi7>dFwTi?` zET53#3c;XxxwNyS+-T)F3k*7~LUt<&3{Ky0P9glo@~oS>oqt`aceBvF+In_NHKwiJ zuH=8&7Q@t|AFX}^DxGz*nMePd000F-NklROw_8&!V7g1H;fVNLfJUC=-Ua;n_gh3NGDc7lR-SO6vv+ZM{qn$w0=C zSv*NSXyi3R+;LV&d>OBW-+x!D)e4E~sXmm zZfq=GI&dJ~oSxp5k)t7kF3{UxpOpe&#zBJMAT}vf!~)rWbyoW`FjA7`4TKN0}z@42+aV5 zW&lDn0Fz$=1(OZ~J%1^U+I)Pv)Z@{6A9U99=>JdN*K>IMbUe6Kd}M!w!{hrS;$D_Z zKau+*oOt>Cmi-Z)e*MQxN5ud6{VQAU{k5NFx3xdQw#K8^>-Eiu!Of>1#QODmee>O^ zx%G&M;-QBJ+qd_wMMQjg{pVUV zKI3ay>>iiPg*`271Ck6x`-7b7Ar zUAlBUd7Szi4YA%EUaeLa^STGUYvmpPo>HkE5%GJgRZAY{wf;_We*^%b`3{p213Qy1 z0vB3Ky+1%waz1{$(^)CzFeAP@pT1ZqOm@%ZJ|F-6&dPE-qTDP@CXa`4KK?eZW$2%O z-{aAHZ}^^4sh-!2_};a0pO635KQr;)Y1NX)d9D8>7?tPm{s2Pr9g|@N9+MCR5|a=E zB43tze}GD*vbg)^?xp+Z?#I5ReMgeV&c`3V`S|^;-??ykDQSAMNgfa5^Y3ds z`mxWC%|=Ar_~^#@=&}hK#58&?s*n9_*;R8Vye*rvg V^NCV)*I57n002ovPDHLkV1lNcR+j(( diff --git a/modular_splurt/icons/obj/clothing/glasses.dmi b/modular_splurt/icons/obj/clothing/glasses.dmi index 3c19a1f5f8adb65f2d3570db3f8a180abbd4752f..b74feabf8551379ec2e958bef5833724cb291160 100644 GIT binary patch literal 3726 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 Wa?=jNc=5pmXx}%`_@rk2`hNhlB||{~ literal 14816 zcmeHtWmH_t)@|eN!5e7Y-7UCV;{`+40AMJ{OKU)X3x0i&5ux94Q#P#7 zpGiM0Jx^&X4-0oYS5G?^X8^z_Ct;=mHH-uM{h6R|tkiCXeWx{}qT94?vgt>niWr*8 z(ttb6MNA`i16Z*qe^)`nLxVYq1wMZniuiY+4R;Z@YaS+5(1xKqU*U}A%5%!GXb{L? z<*~GMN@L>Dv)gkeGNQTQNd!WMlG(Wj_Lw?(kGb8 zUE<7utME$zfL!ZWVj5=NAXj%6Ydc3Pkf*P!70AlR&KjEHa_t*CFEakrh@Tet-SEmG zW`aah`(&5r_nkh^zGUoFHGbK|QAjzlqOxd{0=Vx6J>7Tw+*E7EHfmW`WFNku|FN>Q z@#dRY(EEF!e_(#lMe&c5^~aTfpH%0?Lra&pHq0jVKhG{s145=U`@OH&iFCU*ez&|^{vH2$9^=R?+r5S4nE)-^YQ%jFq3d_6obLA_6z2C(i zI&r(5R_KR)H01N97z0>A`!1e#dxZYimHQE0rl_^_CvI0DmE~-=V`6; zOTg5GX1pOXy3yctPK3pC>KV?Bx zF6@a->lDs%tr3jep;})hjFZwCDlxAIAO|&GhGNxrS-C``JKsV1H(3k}rHsiMy=LoG zSp`}`=F)j8FpziQd)0!5gH!X;jK=t+zFl+k;+MS!dht2G{pQxSd!iK&*PZ@OBz7W; z_gU6?->kDBEuVMw(x%47bzVT47nVM`m16{cZ#;DFJaHQ+OjCXCH3p?4@O|mLvpc^@ z=g#66=iV)02NS!;!4D=Q`Zr_x{#mnVhu(`fcC}(`IPmmkIVl`^G|6XG&%o2_f)}jY zz;wZ#32(Dp83Mbp&zNIG#1r(=onPgS4IeDEvhIU+CKnz$yM}w;2$s)34o^ICy7Z1M z6JXS4HmDIYRXm>wcz9~U`GWoV@oV+{JClcn`k=PyEV~#4Ck?wVbw{E%0)pxNTM>(o z6Bd>`CAB1uSFHLFg2w$fVz>6v8_#`=n=#)x1x$VU&Xx)hEj;9&@F*M4?VxwzQ!7}s z6{~2fFK|t4f6m;kjqjoReQBNRM@&Fn?y+Jsd81ijyDIO*qCYpjn@hE$kC+5fOlAlR zYeu_%v&SP7HyL?i@2H+a)<}V5LnLS6_ZJ{?@kb3#mhQTtWm1TTe{P_r6#VdAdqemd zYL)#}6Y5?dm+7LpcCNqy3Zn2A4YoHgmsAl-Ug@uw(=EbR&%BuD-k~_ASuyK(uP*VO z7O~4An?2L=I*RC3-6|G z9s4Z}-ZX8Kqv`x=3?_#Ax8qKXwaI#xBwyy!EZe4M*(TH(5>hT!YNK*psE{GwNtS3~ z(^WNHG~VQCtB@b~WxVskKVG+__MVOsqWW_7s-1+5M!KkV&GN}lJj5NXSVJm{%_!?f z`8Rr3O_t&1-ID7HuhxJ{HSw};XY*VBqX0#;;`~5`k_GTf%GHGU(=Sp!ep{q#>IV8( zu7~6+XDiP$-^Zb9$?jaBX&QhPpCJQbuA94HhGGa%=M}B(0%x4~rqQ1XB1w z;<|#HL1dD}@O1zwzPR=!cdmnoBK?uP146>Ct`yapG{bf?0{$C`a@><}>PPYoDm&aU zmr%8tqHI`Dmd~k_x^I>3tXx&6W`e!7y8cY`OfkgvoqU>u&n~Vam^}KP zY~RY$-lS>drEp1Te6*t{jRUCLFT{%1RTu*~2&WqPrQyC#yknj^gclScLH88S_Kcd2 zoX27BrIi3Kh@i`|H*R+-y9jqB8n2{{Iho2M@&hAqxk5gq-Yk!v3Be;&zLjK0g#}$nM0p6{wZ9r%C1^$9WB_>+4Ux5C4|2UC{ zUwyA;a?{G52BJJ=fwW06F`xrj2QyKG3PQ~Y7-DZz=?QHypQ|xtVnuceYM*Pw*$V6{lRA6nBnAvCrCx~P+Lw@3ZEvaQ3$bp zyo*Tq)&X91!wvpOUOEwYIE{JJ)(_C@KX?Ay-KL*LzY!2oZ2}?X3eS zBc$Tir}ehpl0zJ@kv?Y5EGF;^1nr)6+-x)+2Z;$3otLxpUKPB!Q(dh#mRwI@Blofc1LTz z^DB$IB{#VrBG8Ot6=YK9*OMVZE*}fb@34Z#xbQ5u{DQdLva(kM+p9$B zwU|=DOS#nfx3OFYt0GOFz~(ek^86FO{2g=FyZWte5e3mV z?yqh0+B0~oh(zQH`-I|Vt%e!URyu~LNmQE@G^SfnQuyHVjY3XtX_q!EDQ?Y(IK@*9Y)In9VlVY>h1);QAAbI{}UfXnfn+J>ukqUbvIU{nn0{IjXU( zT{$Mv;yNMP@Gm#~hA>IqZY6$%8B&@f1%;?|?kkRbLr0Mt`dn67@q8fMd=FzX{j8=` zG5gq8NX4mtRF<#nTS@-e%Qvz06}Rr_CA8nS$x2a;)!`JB6Tl@w;X_$mgB$2#)(4n$ zk=)Zv$)kxBN1j!Pfb=U(Qyh=}&i0}-JHc0DOrqa-gK>;&Vzdm`&MsB1<*DKb)*&$0 zgpNaCkC#L__>qyWxp4tmn; z1F7oSukYctXb)i{b=tb6Sw8VwsWnjyOO957McSS-We5&`sKL9AvjlgE)8z z0nBh_pBWxlUx?xeMTSYLZ=EZPgeJ>%@m>PkuGy%)xl)1+Y5T3o1882jT_TCnvo715 z$h+Ix&2Z7+)g~Z0AkgyLlaEw4(Gf>7P}@n3Q>qnHgW=v~pu3TcShb1DmRIB?9_Oe4F z%z7L-A&}R#WRXig&bO>tF*@?{q&i82r=xL7eoKvP+~oG|2Rr-@5Awxk=$Y1NWng6| z3Uh9RafA!rutalYB69Iu@-b})H$G-*^6gT}@CO60N?m(~ke*q&P>>H|NjH%xdODbB zB#L_pxJTASZ<=fH%#m`w!weo06?4Z$9Bj%4(@5@5S%77!a-Pu^*05YxI1{(6A09=M zckwQ}Z6DP+J6_bgziP%|61T~$Z>z^%$&i4m3y#Hzdox^Hr3Cpc8eIOI)xufK2+{~! zw>qhhcP{P96*qfW>`wfD`*N6e2Q}bk z*x1lEr5Q$zA_cD;>$x2BV+@g@$h_)lzxw3J}GXhV_mTy z%xI8Tr9{4W0WvDsvO{lRRh;1UJ-@h-!#zY~xcae2SvgO3n_ClG0&F5C2;}EzZaQYv zfzmB(gM)#)n<2F}}@8%Sj!t5L}&7phx?hy5(MvU@qz zJhQylW-#+ES^+uvy(A+=7GLVykNQX~WVb>@&V^=iOYCao)z_;+R+w+U!_l{jBWPEUQ>`|zG$MxeWq+1`RO4!?3%m<0uurO>@or&HejM#8FE&!7 zBq%?)Dc+ORg(m*pS5z+13Jg+SvhL+Q1;M(yc7SszOE{Ct7*oxuZPfx%aykQUiHZ!q z#Wi>naitYDF!>W6&MG~Kq@xJRCd(Vg1os1@2%XbFp2+&7gyRHg;HjaA*HcIZXamdTS)4=SizCpsX#;t zVTw8+(?WX@$Gt*;m=tuDH}d4a#Nw4~p7|b&jA+P9BjMRNIk^x<8bBkwiUox%>NrAg z<+}`(QC*}!fj~nf>3SPqtkOFy^$RxSZ;CN#erCwBmnPBAKiX~WLv}z+%E6Wt_5%fJ-i%z`wz2R z<`h~Z@r3S53d&qKJ4@rYVa^r`f@&gc9Oh@ZzZD!OEca5@GESSik{%Oh@ow4p!$}tM z39D4k3@*wiX_-Fks~x1;CL8o0TZ=|5>5hW4c)_W$_(bD301srf$${}w^lncw zScPJCq4M4k;4Cn#Lx_PTUG`_CKNoB)dABM4+SbP-Wxt|Vj=1P)#|(MQtg0_iN_dVy zT&sSV6N&G^?9AR(-}EoI^`)9IV7NeengVE=5W?@zQTU#P5pF;bq!DG%16aHw*mjCw5hSSI zzE$wR5|6TSNx@IL{Brtc7+ULraPo(s{41%;dk zG}NhKrL89K#h%dlj;}w{7?ayC zB*o6-#2j!oOMsLfJ&#H9sNoLjx?KOEXqb1cw82<|wVL9=)J7~suqkEnvf!g$phM}{ z#ZblVz*##y4NP~Wu`GH?tMWE1!jPh{eLb4tOp?fLJ6vTSH$51+u*UBLp@U?^xy-qS zoEnBs&233~XcNaG@><~%G7d>I3=^13G5iZpLaaWqZTDhaKCx5I#x0_6J9Kqh2@?Jg)vPYS0ONFQRD^~T zVi$b`H|M?-sVK~U{{57a;poJGC^L_Qm7t4dBC$NgEq0nx>HGV$8X!Dee`+&)LcGwD zV}+`ZNQRfcW&n*&bQGZV6=KgAJF_g(<}3;ZlMF#?A%q0%kZOeTlb2Gf>Q<3aCWkBn zaftqS@$CfDDDo>?634%&dQ*i5tOsyg)DEE88WGUe@$tMOWxn-QMe%DL$vE zUOO(K=jPVvKKb)uj8c20{)TnSI8?R*aM1q*-topT;jdCX%HX`Q9FPg=8l{$r1QCT9 z$3z^=t>Eyu%FH1sE`kClPxqwn+`ArGZ)4IzR*JgiJ8-|nNZK355j~UYm+FffA(TsC zNr)%GYAk>!un3FH*GDspz-DEgX~6V1i~-LE7=(VC)-SQxE|q* zs3?cL$YMucCB-SxQ^%(fT07-9Vuad8HbylVrefMA-ZfhnvQ9WzX{6^cBVT71UNKnpvA~)DB&vN@CbI^+uQq6##zkZ3Fx)T>_f;wPB#mQQ*=^cu zHd#rSY`_EcStd$Hl2Sq?QXv=;fzG`6I#K0yA%1e?q*=nSZC*9CBdT{a-1ET>S>i?} zmthAz7Fp*L??hW3WgA)@(^-ciyU!spyWoY58ABmTui;Y?PALN{r+!k&c=|q{>6jrj z$M;8t=Wc^}CwNT5Dj4Rxy0Re$o)~1Ka~i~HVN}eIle5Q*#LpNqqMfN?6nw(&OFh`0 zMOb3c8Fp^+gX+|C<(-@46fx@d+tQ?e!gS5&Nw}RD%FnBcA+}1wGu!?ULDX&1mEM70 zW;H_s#9Beu_>I*(!!wCvzVx&VlzFI32+E?Cnn&kkrpnxcdHUB`fzZu(UMd_j5-H?4L;ML1qiG>%b<4^`nk>XJE)_V-_O%=XSg{e zR}6~f=fX6~%2_zYRI_KMmgRG+U@$yu`usl2U=9-kAt~&OHMp#KF3@+2Fp7(WV@*sl!Dq^5*?exczbRME}_jr%y#F*3zczi)>v|m`B6-iQXK9 z=fr8neR+dSyFCgorV&qz-l#dC>;w4iw89)XKoGLCcp)96CTu#BQYUlk2>ZhwQoMSVWnj>l4?V8z(O`Ot{?i55rfCW z?Sw(X*Hn(%eyT`Qd(zWY+Qxf2OQZ@Dg|74n&?{7zyn`@v5dA1wORJ1=Rb%tv1JOv6(0vnpM)E=Tt45ax_!p%Vc5D5C~`4IAEmn z5}d{3ezv)NO_#w3D=_c-t6-*(=zyw z@uSg{_AE;SBl-GV$tTOb3lcjWL|!$%9YtN&%#$!kCqxLtSj%27(if-5qu=v1o_nV9 zhFUkGDP4>}hm6WXk#7`3l?D#@4Wa#9;wX2I5@Gu4ja#+OE_m;fA~aYUBo%cJKFGEi zw=Ih0d?NyXxaOj-IR#!&@6eQsQkH9FR1q6s&M-on&civ?9a9w!+{Tp)8CTBc*C?+D z^i?|)v(6}dxPPU8oG*BARgD(1LV`epUV;F8YaK>S`EV!vQOA5n@HO44bVLE$ogUW* zTm9Te@!&&4q`YVE`#duSjXi% zEWw6;X<`W-4JT>X$e%ImIh;?&{7Q!^V;thTR0?6?7{s|;N|nmXty%%|#G>Qz$W1m5RPOWz)vsk(d=P?JbtUaegeHx_jI#==mgV zBjEYzCBad&iy$INoXq}8wB@kFNfmd?(Wuf9IX1^DYaH{J({;LbeYrlbsr`qCjrV=` zI9W5-Vsvw>7DmS+eUiLY;W-Xm>@V`E24yJWqEz=}4uxhi=t7mFrpf&zQDtF` zECH);c$JDT)EF+j+F>t2^^4QqstLy~sYXhLhgwCd`UVmlf@H}3u(n(NV|12BR|B7U zVBeBbJ(*JY_b%CDi31Fp8j#xPU9v&J-bz0W;$Omb<6phv#ll#ANMukOdX{OcFG@HS z-68r2DiR`tkS-k{w6g8vFpM8n#e2%0+pkj$w|Mp`NG{}QTxi3-?Fq<&i87jAvfqaX z?#Dwu3Z-L8!8DJsa%Cnjxh}*s(WxXm4H@oqRu~CbS>8o0E>|8tsd4x}%T~>B^X7jl z{ONmcLwM(DH20#Vq;4yvk1F?+DoFIsB}Q#&$EoaRzhv?{K^6@K*(0P#SJ?Qaxgz9a z#hw^orS>O{GbHXrnke7Cl~rS(A-m zj0}PWYiX(tTS)S?GQk_;NMk(^^%abuv!)nN^g;Yr2M3or8K&IDe(dh0Um(JXz@7o; zJYV^Q`B=}*3!LCZy--MtnTq)U=>VNkFVRM=3lKV8pHIBaQ<%hyiit2sQX-pB?2r^u z0jA)mpLf5AvifL{ldhQ1d^~DGG*-=QS2qWg04m9YP+)NF8H!=?)b+JB&`WH^zHL&p zJSw;=Y%_(WSiopAU^|K3P&^zjGAOGEDHIY-Uzxw4C>A#*v|VI9y#LggO&@$h+@|s6 z$sX?YBTe_(B9)x@I-jfC>SBrLhC33G->kGz6D@^`OCg{ue};c2_{jj&_U&?U`NKY3 za$#MDOK_N!X^s5nL$;IScdJZwB{9IP@vc3xam&rv}l?v~a<8q%_VLO{<%scbzxU4_`$y}iBJyt&z2+-=x7 z1qB7!Ik?!lxLBbctRBA3o@PF*&K}giApXGk+a3+jFHAFY7l@}Q6&2JD`m23Tt|}`3 zf_L`#lLaUr>^^3$?3`>I>`qSXe~<9+l<|Us{Mn%YF~UO&x^IGA!^*=2;%;Fj<7MUS zN&R;SON)QSyF%O@f2U(i-nz~(C840?@cW%Ak`Abgp9m*JSl4 zU%x2)Uwr-95C4lbK%xIz$$!M}f9d)!UH=gS|B>^5)%9Px{v!tdBj^9B>;D^FsQ+H> zSUE%QfV`oLnN%>_6?7qlXs#qD{d-9SxRvS*f*zr`%D?ac0MMXIS~NTuKz0rhv=GTt zK}81X8!8F{h@0>@R0(PeQjnI=@>xF0Rdal{ME0RKj1aG{oD<3M3NaHnW)-i`2uwM! z->213P1j&V^5fyBNvo*-mPRdy-3=NR)wb8p=uk+j>W3}OQm2up#&j?j>+2jM`0@hywuFDcABs z!0T!%DuORU$G1uzd)Q1nSG^j?&;hkN4&@h#TO~yAN*aE^utfgsNd`~(VLEWmExDLItv$yK(uKLaPUJ8 z3;nf~ZW|N3b?1SW#4k0oj(`FLRHGrU;jr}{mWJv<^uo-A?>U*S`ry2<7#U+ZHnjm z?xvdgjpH2T=)Rp0;1s`bwtfMpJ65~f*J9@GP8#`=>-WR zTvbtJ<{f6F^5Pd(-xdpPo+~dUh4Xz2tU;O4cSX8AX`Qp+T_e3fFA(P{xTS5>aOm|q ziV2m}t$ga0dXDC_{hh42{*I#Yt(NMC_#nvZYH~rtPtVKV`E6&(h>Ur+?J#fh#8i|2 zO;G=q*6*W$u`wDMOsokkd0Dx>MqQq9pzk*J*VirDR{@fA6;Bij^j7hTS=32D-0N+m ziBwYd31nVmSf5_ZwjYf$&%q&z}L__Vgs~l+t<%kwM>Gepjfusz{`y zq&G+RC%cLH*Eu2%LSG+aO&SC~<*oQ2-WH6Nr=_=?qnwcdroSA^c-Og;Raa-eopBz7 ztV(Xx*Vn@VGBPu$4n+bVh~$#UCxPn_Be(nOqf)=_#PoFhn%dgJ8QYu`;WQSwf{eH# z8c!o#k#0zJi~kPlF{JY*&;jiNx_l-!$$b3GaR=G2dufhYEpKD>$J$`K$1bYVxY)_s@Xd`t;O$4@ z*SWd8ZoOgY#^z%f3!Y%FgRTp;6t50e zSM7#Zy|x-%+P^Hz=jC_%aY7zU_jLLpzxKFRGwbQlBoI^ZwmC_Rt%kKZ={c@}fkDHE zmdaO=P<9^yfDcI&V$CfrUb3p@(CLU=#0Nx2N7us_;9_QGCJxJ}qK_hWN?oObQ_FJZ&If}LY>dpLfMn1rg0^5(s38?hEFRM@#lW;lh(`g zUBQ*0bJ+FTo}q`J^aocnVnFE%E05S}ZF#G`Zbp5<%lf$5lU5GCUQ(zo_cA*#5I*!? zHC-QH1Of5`nlC;NJUIKmK&;p)l1Iq}y+%=6IlLPy&Y50<;fYOCOR60~3iAi=XpZ52 zNq$YHlrjnt}Xiz^RxNhynQ?l z?rb&Uc6n$NWki?w45L-L>Hrll(2LR^pDmxnU`=sm8!i~_pz3uQMkSjhrbS>!%4kyg z2ApKR<(!So2d$4%)nzwsJK@^|(@4idqKqk!)VwzA)cuV3NeiJja)IF`8SGmbDu2I# z|3h)eG14oi{%*xxj;h5UwZGo#4!>CqDzl+3rZs(09UDYE(3_K-U$>1vS%zU%%S0Fu z9ryG!q&kPFhP;kfbi;Sk6MS+Kb0i(Z0p9;Xd@;8=?LN5LG@@ohEL_w2CZDaxxQcHN z*MHOUuva88{&85@tzppb@riz3X#vrwug{I^%7nc9C(;o&_x1kg%RhAM9Q*bS3x$SJq`k~oj!oVWYV z-$vBDiwhn+1(#j5rGJ>j`phI92W7CC7cO#?SQ$r0oOA&1$Nb|I_nBM6++}YxUpOIF<$XR)eseI6fw|!>TGmap z$3Wp2;XB&**S*Ox{P}p8y3a4Xay|u--fE!OEvBbb%qZu-NZwb^ zv2!2KaXs?i@>G5};8-@zUeTa8JPcBPD7;)}&_}#oV{oLH`z+%860adZ+2*1x!Lkc5 z`qqkq=$6a*^FM|4_bYs|yyAF?G$zI$7xh`)rf8ts_UY!I7xj|BySkEi1vkOXk*}pi zLD&KxY?l}N57{Hk>q^q@%9Dv}1$Ou`d@X9> z(s-WggaB-F9ZAVgJWuh5J?`Ep@V9J(wTIGnyU#$us3i^&Ufd3&qtkt^5gMHB|Ng-h zI%tUG9~nMgbj@+zeysv(XrL}8?ccN|q*0n2u&Yb{b-(*ZR^R!>VBTcQ1~!g|E&jTB NSCCPau9Gwk{Xgj?8fyRm