From 00813171c1caa0a6e56dc28fbcbb37dcfc417ebc Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Mon, 25 Dec 2023 01:52:43 -0500 Subject: [PATCH] Automatic holiday sprites (#22929) --- .../Holiday/HolidayRsiSwapComponent.cs | 14 ++++++++ Content.Client/Holiday/HolidaySystem.cs | 34 ++++++++++++++++++ Content.Server/Entry/IgnoredComponents.cs | 1 + Content.Server/Holiday/HolidaySystem.cs | 14 ++++++++ .../Holiday/HolidayVisualsComponent.cs | 17 +++++++++ Content.Shared/Holiday/HolidayVisuals.cs | 9 +++++ .../Entities/Objects/Devices/nuke.yml | 32 +++++++++++++++-- .../Entities/Objects/Misc/fluff_lights.yml | 28 +++++++++++++++ .../Objects/Weapons/Bombs/plastic.yml | 8 ++++- .../Weapons/Throwable/throwing_stars.yml | 14 +++++++- .../Structures/Decoration/fireplace.yml | 13 +++++++ .../Objects/Devices/nuke.rsi/meta.json | 11 +++++- .../Objects/Devices/nuke.rsi/nukefestive.png | Bin 0 -> 1429 bytes .../Misc/Lights/lamp.rsi/christmaslamp-on.png | Bin 0 -> 186 bytes .../Misc/Lights/lamp.rsi/christmaslamp.png | Bin 0 -> 697 bytes .../Objects/Misc/Lights/lamp.rsi/meta.json | 8 ++++- .../Objects/Weapons/Bombs/c4gift.rsi/icon.png | Bin 0 -> 549 bytes .../Weapons/Bombs/c4gift.rsi/inhand-left.png | Bin 0 -> 552 bytes .../Weapons/Bombs/c4gift.rsi/inhand-right.png | Bin 0 -> 603 bytes .../Weapons/Bombs/c4gift.rsi/meta.json | 31 ++++++++++++++++ .../Weapons/Bombs/c4gift.rsi/primed.png | Bin 0 -> 687 bytes .../Throwable/throwing_star.rsi/festive.png | Bin 0 -> 621 bytes .../Throwable/throwing_star.rsi/meta.json | 5 ++- .../fireplace.rsi/fireplacefestive.png | Bin 0 -> 1455 bytes .../Decoration/fireplace.rsi/meta.json | 7 ++-- 25 files changed, 237 insertions(+), 9 deletions(-) create mode 100644 Content.Client/Holiday/HolidayRsiSwapComponent.cs create mode 100644 Content.Client/Holiday/HolidaySystem.cs create mode 100644 Content.Server/Holiday/HolidayVisualsComponent.cs create mode 100644 Content.Shared/Holiday/HolidayVisuals.cs create mode 100644 Resources/Textures/Objects/Devices/nuke.rsi/nukefestive.png create mode 100644 Resources/Textures/Objects/Misc/Lights/lamp.rsi/christmaslamp-on.png create mode 100644 Resources/Textures/Objects/Misc/Lights/lamp.rsi/christmaslamp.png create mode 100644 Resources/Textures/Objects/Weapons/Bombs/c4gift.rsi/icon.png create mode 100644 Resources/Textures/Objects/Weapons/Bombs/c4gift.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Weapons/Bombs/c4gift.rsi/inhand-right.png create mode 100644 Resources/Textures/Objects/Weapons/Bombs/c4gift.rsi/meta.json create mode 100644 Resources/Textures/Objects/Weapons/Bombs/c4gift.rsi/primed.png create mode 100644 Resources/Textures/Objects/Weapons/Throwable/throwing_star.rsi/festive.png create mode 100644 Resources/Textures/Structures/Decoration/fireplace.rsi/fireplacefestive.png diff --git a/Content.Client/Holiday/HolidayRsiSwapComponent.cs b/Content.Client/Holiday/HolidayRsiSwapComponent.cs new file mode 100644 index 0000000000..d84018d3e7 --- /dev/null +++ b/Content.Client/Holiday/HolidayRsiSwapComponent.cs @@ -0,0 +1,14 @@ +namespace Content.Client.Holiday; + +/// +/// This is used for a component that swaps an entity's RSI based on HolidayVisuals +/// +[RegisterComponent] +public sealed partial class HolidayRsiSwapComponent : Component +{ + /// + /// A dictionary of arbitrary visual keys to an rsi to swap the sprite to. + /// + [DataField] + public Dictionary Sprite = new(); +} diff --git a/Content.Client/Holiday/HolidaySystem.cs b/Content.Client/Holiday/HolidaySystem.cs new file mode 100644 index 0000000000..07ae98f449 --- /dev/null +++ b/Content.Client/Holiday/HolidaySystem.cs @@ -0,0 +1,34 @@ +using Content.Shared.Holiday; +using Content.Shared.Item; +using Robust.Client.GameObjects; +using Robust.Client.Graphics; +using Robust.Client.ResourceManagement; +using Robust.Shared.Serialization.TypeSerializers.Implementations; + +namespace Content.Client.Holiday; + +public sealed class HolidaySystem : EntitySystem +{ + [Dependency] private readonly IResourceCache _rescache = default!; + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + + /// + public override void Initialize() + { + SubscribeLocalEvent(OnAppearanceChange); + } + + private void OnAppearanceChange(Entity ent, ref AppearanceChangeEvent args) + { + if (!_appearance.TryGetData(ent, HolidayVisuals.Holiday, out var data, args.Component)) + return; + + var comp = ent.Comp; + if (!comp.Sprite.TryGetValue(data, out var rsistring) || args.Sprite == null) + return; + + var path = SpriteSpecifierSerializer.TextureRoot / rsistring; + if (_rescache.TryGetResource(path, out RSIResource? rsi)) + args.Sprite.BaseRSI = rsi.RSI; + } +} diff --git a/Content.Server/Entry/IgnoredComponents.cs b/Content.Server/Entry/IgnoredComponents.cs index e1d744da2d..c1b646ec4f 100644 --- a/Content.Server/Entry/IgnoredComponents.cs +++ b/Content.Server/Entry/IgnoredComponents.cs @@ -18,6 +18,7 @@ namespace Content.Server.Entry "PdaBorderColor", "InventorySlots", "LightFade", + "HolidayRsiSwap", }; } } diff --git a/Content.Server/Holiday/HolidaySystem.cs b/Content.Server/Holiday/HolidaySystem.cs index 86cd300101..4224b01491 100644 --- a/Content.Server/Holiday/HolidaySystem.cs +++ b/Content.Server/Holiday/HolidaySystem.cs @@ -2,6 +2,7 @@ using System.Linq; using Content.Server.Chat.Managers; using Content.Server.GameTicking; using Content.Shared.CCVar; +using Content.Shared.Holiday; using Robust.Shared.Configuration; using Robust.Shared.Prototypes; @@ -12,6 +13,7 @@ namespace Content.Server.Holiday [Dependency] private readonly IConfigurationManager _configManager = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly IChatManager _chatManager = default!; + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; [ViewVariables] private readonly List _currentHolidays = new(); @@ -24,6 +26,7 @@ namespace Content.Server.Holiday _configManager.OnValueChanged(CCVars.HolidaysEnabled, OnHolidaysEnableChange, true); SubscribeLocalEvent(OnRunLevelChanged); + SubscribeLocalEvent(OnVisualsInit); } public void RefreshCurrentHolidays() @@ -102,6 +105,17 @@ namespace Content.Server.Holiday break; } } + + private void OnVisualsInit(Entity ent, ref ComponentInit args) + { + foreach (var (key, holidays) in ent.Comp.Holidays) + { + if (!holidays.Any(h => IsCurrentlyHoliday(h))) + continue; + _appearance.SetData(ent, HolidayVisuals.Holiday, key); + break; + } + } } /// diff --git a/Content.Server/Holiday/HolidayVisualsComponent.cs b/Content.Server/Holiday/HolidayVisualsComponent.cs new file mode 100644 index 0000000000..96032263e6 --- /dev/null +++ b/Content.Server/Holiday/HolidayVisualsComponent.cs @@ -0,0 +1,17 @@ +using Robust.Shared.Prototypes; + +namespace Content.Server.Holiday; + +/// +/// This is used for an entity that enables unique visuals on specified holidays. +/// +[RegisterComponent] +public sealed partial class HolidayVisualsComponent : Component +{ + /// + /// A dictionary relating a generic key to a list of holidays. + /// If any of the holidays are being celebrated, that key will be set for holiday visuals. + /// + [DataField] + public Dictionary>> Holidays = new(); +} diff --git a/Content.Shared/Holiday/HolidayVisuals.cs b/Content.Shared/Holiday/HolidayVisuals.cs new file mode 100644 index 0000000000..4af1efae68 --- /dev/null +++ b/Content.Shared/Holiday/HolidayVisuals.cs @@ -0,0 +1,9 @@ +using Robust.Shared.Serialization; + +namespace Content.Shared.Holiday; + +[Serializable, NetSerializable] +public enum HolidayVisuals : byte +{ + Holiday +} diff --git a/Resources/Prototypes/Entities/Objects/Devices/nuke.yml b/Resources/Prototypes/Entities/Objects/Devices/nuke.yml index 63e28648c3..b61787b574 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/nuke.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/nuke.yml @@ -9,7 +9,21 @@ - type: Sprite sprite: Objects/Devices/nuke.rsi noRot: true - state: nuclearbomb_base + layers: + - state: nuclearbomb_base + - state: nukefestive + map: ["christmas"] + visible: false + - type: Appearance + - type: HolidayVisuals + holidays: + festive: + - FestiveSeason + - type: GenericVisualizer + visuals: + enum.HolidayVisuals.Holiday: + christmas: + festive: { visible: true } - type: Physics bodyType: Static - type: Fixtures @@ -90,7 +104,21 @@ - type: NukeLabel - type: Sprite sprite: Objects/Devices/nuke.rsi - state: nuclearbomb_base + layers: + - state: nuclearbomb_base + - state: nukefestive + map: ["christmas"] + visible: false + - type: Appearance + - type: HolidayVisuals + holidays: + festive: + - FestiveSeason + - type: GenericVisualizer + visuals: + enum.HolidayVisuals.Holiday: + christmas: + festive: { visible: true } - type: Physics bodyType: Dynamic - type: Fixtures diff --git a/Resources/Prototypes/Entities/Objects/Misc/fluff_lights.yml b/Resources/Prototypes/Entities/Objects/Misc/fluff_lights.yml index 83701249d0..ec9a94de86 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/fluff_lights.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/fluff_lights.yml @@ -62,12 +62,24 @@ sprite: Objects/Misc/Lights/lamp.rsi layers: - state: lamp + map: [ "base" ] - state: lamp-on shader: unshaded visible: false map: [ "light" ] - type: Item sprite: Objects/Misc/Lights/lamp.rsi + - type: HolidayVisuals + holidays: + festive: + - FestiveSeason + - type: GenericVisualizer + visuals: + enum.HolidayVisuals.Holiday: + base: + festive: { state: christmaslamp } + light: + festive: { state: christmaslamp-on } - type: entity name: banana lamp @@ -93,12 +105,28 @@ sprite: Objects/Misc/Lights/lampgreen.rsi layers: - state: lampgreen + map: [ "base" ] - state: lampgreen-on shader: unshaded visible: false map: [ "light" ] - type: Item sprite: Objects/Misc/Lights/lampgreen.rsi + - type: HolidayVisuals + holidays: + festive: + - FestiveSeason + - type: GenericVisualizer + visuals: + enum.HolidayVisuals.Holiday: + base: + festive: + sprite: Objects/Misc/Lights/lamp.rsi + state: christmaslamp + light: + festive: + sprite: Objects/Misc/Lights/lamp.rsi + state: christmaslamp-on - type: entity name: interrogator lamp diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Bombs/plastic.yml b/Resources/Prototypes/Entities/Objects/Weapons/Bombs/plastic.yml index e3581370f0..ac675f6cd2 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Bombs/plastic.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Bombs/plastic.yml @@ -11,7 +11,6 @@ - state: icon map: ["base"] - type: Item - sprite: Objects/Weapons/Bombs/c4.rsi size: Small - type: OnUseTimerTrigger delay: 10 @@ -54,6 +53,13 @@ - !type:ExplodeBehavior - type: StickyVisualizer - type: Appearance + - type: HolidayVisuals + holidays: + festive: + - FestiveSeason + - type: HolidayRsiSwap + sprite: + festive: Objects/Weapons/Bombs/c4gift.rsi - type: GenericVisualizer visuals: enum.Trigger.TriggerVisuals.VisualState: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/throwing_stars.yml b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/throwing_stars.yml index b0fa94d440..48138452b2 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/throwing_stars.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/throwing_stars.yml @@ -6,7 +6,19 @@ components: - type: Sprite sprite: Objects/Weapons/Throwable/throwing_star.rsi - state: icon + layers: + - state: icon + map: ["base"] + - type: Appearance + - type: HolidayVisuals + holidays: + festive: + - FestiveSeason + - type: GenericVisualizer + visuals: + enum.HolidayVisuals.Holiday: + base: + festive: { state: festive } - type: Fixtures fixtures: fix1: diff --git a/Resources/Prototypes/Entities/Structures/Decoration/fireplace.yml b/Resources/Prototypes/Entities/Structures/Decoration/fireplace.yml index 03851318e1..f5bbafa40c 100644 --- a/Resources/Prototypes/Entities/Structures/Decoration/fireplace.yml +++ b/Resources/Prototypes/Entities/Structures/Decoration/fireplace.yml @@ -8,10 +8,23 @@ sprite: Structures/Decoration/fireplace.rsi layers: - state: fireplace + - state: fireplacefestive + map: ["christmas"] + visible: false - state: fireplace_fire4 shader: unshaded - state: fireplace_glow shader: unshaded + - type: Appearance + - type: HolidayVisuals + holidays: + festive: + - FestiveSeason + - type: GenericVisualizer + visuals: + enum.HolidayVisuals.Holiday: + christmas: + festive: { visible: true } - type: AmbientSound volume: -6 range: 5 diff --git a/Resources/Textures/Objects/Devices/nuke.rsi/meta.json b/Resources/Textures/Objects/Devices/nuke.rsi/meta.json index 6e44a5417f..2828b13ddb 100644 --- a/Resources/Textures/Objects/Devices/nuke.rsi/meta.json +++ b/Resources/Textures/Objects/Devices/nuke.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from https://github.com/vgstation-coders/vgstation13/blob/835fd60545178a19064f5df9981dac6e1b220775/icons/obj/stationobjs.dmi", + "copyright": "Taken from https://github.com/vgstation-coders/vgstation13/blob/835fd60545178a19064f5df9981dac6e1b220775/icons/obj/stationobjs.dmi, nukefestive by Alekshhh (Github)", "size": { "x": 32, "y": 32 @@ -10,6 +10,15 @@ { "name": "nuclearbomb_deployed" }, + { + "name": "nukefestive", + "delays": [ + [ + 0.25, + 0.25 + ] + ] + }, { "name": "nuclearbomb_timing", "delays": [ diff --git a/Resources/Textures/Objects/Devices/nuke.rsi/nukefestive.png b/Resources/Textures/Objects/Devices/nuke.rsi/nukefestive.png new file mode 100644 index 0000000000000000000000000000000000000000..f9c58ac8e64a4a199565a133bec97269caea63fe GIT binary patch literal 1429 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 JB{VTG002pp^h^K% literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Bombs/c4gift.rsi/inhand-right.png b/Resources/Textures/Objects/Weapons/Bombs/c4gift.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..6ceb49c89d6098ad189c125affb9a6c1aaa8c15a GIT binary patch literal 603 zcmV-h0;K(kP)6|IE$hY$;GtZlR~ApQlc6s;9(Ed)zJn?n#| zW3UP+qE>P;2LTbiyGeF%hn>`ynK$3Qxhvj!;P}sTe11>>>Hx7xp1ys$E0EUYF!RbL$=zx*QcQ`5BLW}=qwF{`4 zBZpZ}r-Ru{29`HFpmX>Fmda)CHQOB641ubd&DdY=--9`|wqL6wP9W;)1UL zxX4PWs}7KIQd~OK0bFFI)Kv#aIVmok>HsdXQtGM$q?{C&PIUkmSt)hZ0a8wiOQ$-3 zi>#Eo>HsMx#idgnz(rO{-I^Rg$=^+a;OI*RK+WGx0pRLO20+cvlWJ30B^dxUe>Vl- zx4!k(#{ZK6Q1f>aBGCoAFKvLgRVG$E7?`^MUk6a~cM|}x1~vCj+L!DAEKJGYlL|@l p97o@p03;DBg01yBG literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Bombs/c4gift.rsi/meta.json b/Resources/Textures/Objects/Weapons/Bombs/c4gift.rsi/meta.json new file mode 100644 index 0000000000..a24d3bae5f --- /dev/null +++ b/Resources/Textures/Objects/Weapons/Bombs/c4gift.rsi/meta.json @@ -0,0 +1,31 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Created by Alekshhh (Github) for SS14", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "primed", + "delays": [ + [ + 0.1, + 0.1 + ] + ] + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Objects/Weapons/Bombs/c4gift.rsi/primed.png b/Resources/Textures/Objects/Weapons/Bombs/c4gift.rsi/primed.png new file mode 100644 index 0000000000000000000000000000000000000000..84c96e034028fae4d4c7e21ddc6af6ef3f642440 GIT binary patch literal 687 zcmV;g0#N;lP)P)QYw5;=i$dDy1sCV2-5@7*c)y_fs{_dEYR*MZN6_4$ZGF)!85nyK#k0p{4BmIp5sPDMyJ+Ui zBb!)QXu;3IItzzjh1*L%ntBTLIt%P^Ab0!Qep&AOPdzFpD>=U-S~mosh{X~ z9Hi5~F+6+(48Y42*yyjk-^2Odqjl+91K^!gLz=kz)qrpVSowThN$&sWzn`(%Fjdgc=W}X^ZE*;g((4=`c?qk6(9%%gU5@V9Xt(%Jiq>UeLey_ z_gdc?z`w#gCjeu`qPUJt!#n63cMoub_ex(h&JkpDd=z+o_2ITU06GF%`c?q=7SO1G zl#KtL0B%IpjB3W;-3PSv#RNzdYWDX5fM%~?qyB>gG)l19{~siv*(=znf8QtIFQXu~ VFsSaUt^fc407*qoM6N<$f&h>QLdO6A literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Throwable/throwing_star.rsi/festive.png b/Resources/Textures/Objects/Weapons/Throwable/throwing_star.rsi/festive.png new file mode 100644 index 0000000000000000000000000000000000000000..cd62feb095a4d9ca97c4cabfe36a38485676446b GIT binary patch literal 621 zcmV-z0+RiSP)voPXEn9X?fW2UM^B@BO)2ms5@jzL4;UY1t)VnTGgk$x^%}+-YX@ zW#L2Ns4W8uUn$-2_*rqr<9EgOY+?fZs;8EzW227EteqF`7mnm}WwSbu`jWO(VQxlh zx9lDq5=;_9!=TIxIZ6yjEl6g6`v!k}QxwHx%G+WMTO1j(;*E-0maZwOY0*>i?!A)`#F2c_4GkEsK{5yddp^>1K z{KiCypQG;pK@bE%0~Fz{0;)=PZ<2Vl9A1V2W`-7tXN$lp@$UQ9YmVdYWUZtK-JPn+ z%d)T*oJ*mqGUv>kGu@qYDckxPp~D%V2+a)3FaQ8jO52{90RUd(h?Ek#Y3dGl^(_?P zIt3IVYi*v0a{{$)&wg3aJ^MV|BCwaZO#t|T?>Gp8;P3eWm1BSEx(1^W00000NkvXX Hu0mjfyLu#H literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Throwable/throwing_star.rsi/meta.json b/Resources/Textures/Objects/Weapons/Throwable/throwing_star.rsi/meta.json index 44d65d9d5e..c716710532 100644 --- a/Resources/Textures/Objects/Weapons/Throwable/throwing_star.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Throwable/throwing_star.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC0-1.0", - "copyright": "Created for SS14 by deltanedas (github)", + "copyright": "Created for SS14 by deltanedas (github), festive by Alekshhh (Github)", "size": { "x": 32, "y": 32 @@ -9,6 +9,9 @@ "states": [ { "name": "icon" + }, + { + "name": "festive" } ] } diff --git a/Resources/Textures/Structures/Decoration/fireplace.rsi/fireplacefestive.png b/Resources/Textures/Structures/Decoration/fireplace.rsi/fireplacefestive.png new file mode 100644 index 0000000000000000000000000000000000000000..bea2ae81cf5da33c8f496d198cd12e5678b25b3a GIT binary patch literal 1455 zcmV;g1yK5lP)AMc95!Df8E&V9kc3=(MxJgsje$Hrnc(O{>y5cjP(QiRY$idhgA-z3F=IpPZa~ z&U@bHd7t+^Z=%s6f3!u8pIic51uSv~+!R>k0$5l@kiApJwCDd+s#>MS=0i;^R>rh| zIueu;Fn#t>1`BS(O@Vu zgac0=2rz%BE<->(9HoY~nC^`B_I5T>Hb|w*uH?XXb|-1uBOXeQPf~P$LThbpWxc(< zx;;YrAmG%{AN0hNUCR7cW@ymoW4_}Jw50rTIzROh4*-;q9SN+H0ptDpEe#BW?EPet zRwojA@RH;|{GgNFa`QFCsQ>`0tE^1p{k)UtzAir0jvmzk0@$khWwi3AwKOp?K|MV^ zT4!e`8@=%x`uY2Fbcbgnb#?t8VOjP?Pk@N_#W$~@lAZtZuh|g|ZNHsOpS!?Qp#H)J z4i@CSuwf~k{pWAGe|d|J02wsKuvxSzAQW)Ex005$j^$JUCIw)SfJYD#-hE<5%E)-Jf1J#JDIZ{*#TOvOUjC%h%8hf6c8O7n~?%Wuc!H1r<4FQPCxc` zkiE6lOV7PLYPb(DW8di7c_#qCe;=9T{^9P&Q(fWVpGF%Zqu`9JQ$_%C8jVc8Lx)%k z>v-l2_3c_k!5wEZd5?K00mTsSw2H%d?HD=B2zY)?8(lcpIyi+$qLQ;UYuIEYLSC;o zV_)3=h`#9hWSe3?RDgb9wxS5K9`1QocPb|dNT0zINm_B$(pd>I0@}7)KyGplz4`@h+22B< z&>eYcC9U3`jvV>`G)MwCx*5&p?OcbKtd7d8DIl*x%vgOz{PrH3J?YXU~qSU zC^SsLMn;G{0HDj0WedQv({jfsNWfk}Ae57B!zyUo6d(+zQYjrcxfaNWLjn1E1*DPA z*-I&<0=R7ofZ=#Nu5;Y)_s>w83?Ad`A5E~+Us0j6(>Ok^T(Qax8g*O-Eq+O6lVF6% zLe*dk0Z0K)Qxj!hg=U?VQ)#v|GHWw?y)6Vlx>rXcbnB)~{7SUyr06F=W+8U+op0H> zd`3aQomEx3B~}2)N)pCYE5SAbWb{^x*MhA9RweJmK3fz}D3G@P>oV8hfyQ5TKIVI8 z0`U_))})Q_X&3q>?}Y}CPr_SLXYJ4Q5ome);_AOYZWjg8vPwayj-`nr9rI&eKd zFB$uVFa{ZB90ho>9wgwIik6ZXXDh>uZC!V1bz`1=j19HXB?V9-+{BlfB_OtIBlFj! zXmjo94ER0C03Tysd#c|Qp|km`#7LHLCP0gMv*59hef=y~z~+k|^T;2re=uz>`YnaO zE1~AS$Cdc5#E48lBHX0w->pO+dyZ_oi`{T-xsKc6-=;F(i