From cd07891953a00a76af989a589bfcc77c9760081a Mon Sep 17 00:00:00 2001 From: RevengenRat <138193222+Ratyyy@users.noreply.github.com> Date: Fri, 6 Sep 2024 20:32:25 +0300 Subject: [PATCH] Sec rework (#413) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Описание PR нёрф щитов, борг сб **Проверки** - [X] PR полностью завершён и мне не нужна помощь чтобы его закончить. - [X] Я внимательно просмотрел все свои изменения и багов в них не нашёл. - [X] Я запускал локальный сервер со своими изменениями и всё протестировал. - [X] Я добавил скриншот/видео демонстрации PR в игре, **или** этот PR этого не требует. **Изменения** :cl: - add: НТ ввели новый стандарт боргов - борг-офицер! - remove: НТ перестали производить противопульные щиты! - tweak: Лучшие умы галактики придумали как уменьшить время отклика камер! - add: Отдел охранных исследований НТ произвёл первую партию бодикамер! --------- Co-authored-by: 1Stepka1 <131589665+1Stepka1@users.noreply.github.com> --- .../ActiveSurveillanceCameraMonitor.cs | 2 +- .../ADT/NeedTagToUse/NeedTagToUseComponent.cs | 9 ++ .../ADT/NeedTagToUse/NeedTagToUseSystem.cs | 36 +++++++ .../Cuffs/Components/HandcuffComponent.cs | 2 + Content.Shared/Cuffs/SharedCuffableSystem.cs | 66 +++++++++++- .../ADT/Effects/Footsteps/attributions.yml | 8 ++ .../Audio/ADT/Effects/Footsteps/borgwalk1.ogg | Bin 0 -> 17189 bytes .../Audio/ADT/Effects/Footsteps/borgwalk2.ogg | Bin 0 -> 20667 bytes .../Audio/ADT/Effects/Footsteps/borgwalk3.ogg | Bin 0 -> 19562 bytes .../Locale/ru-RU/ADT/Job/job-description.ftl | 2 + Resources/Locale/ru-RU/ADT/Job/job-names.ftl | 3 + .../Specific/Robotics/borg_modules.ftl | 6 ++ .../Objects/Specific/Robotics/borg_parts.ftl | 6 ++ .../Entities/Clothing/Neck/specific.ftl | 5 +- .../prototypes/Entities/Mobs/Cyborgs/borg.ftl | 2 + .../Entities/Objects/Weapons/Guns/Guns.ftl | 9 +- .../Entities/Objects/Weapons/security.ftl | 2 + Resources/Maps/cog.yml | 20 +--- .../ADT/Entities/Clothing/Neck/bodycamera.yml | 28 ++++++ .../ADT/Entities/Markers/Spawners/jobs.yml | 20 +++- .../Entities/Mobs/Cyborgs/borg_chassis.yml | 74 ++++++++++++++ .../ADT/Entities/Mobs/Cyborgs/fill.txt | 1 - .../ADT/Entities/Objects/Misc/handcuffs.yml | 33 ++++++ .../Specific/Robotics/borg_modules.yml | 51 ++++++++++ .../Objects/Specific/Robotics/borg_parts.yml | 94 ++++++++++++++++++ .../Weapons/Guns/Battery/battery_gun.yml | 40 ++++++++ .../ADT/Entities/Objects/Weapons/security.yml | 9 ++ .../ADT/Recipes/Lathes/robotics.yml | 86 ++++++++++++++++ .../Prototypes/ADT/Roles/Jobs/Borgs/fill.txt | 1 - .../ADT/Roles/Jobs/Borgs/secborg.yml | 12 +++ .../ADT/Roles/play_time_trackers.yml | 2 + Resources/Prototypes/ADT/tags.yml | 23 +++++ .../Catalog/Fills/Lockers/security.yml | 5 + .../VendingMachines/Inventories/sec.yml | 2 +- .../Markers/Spawners/Random/security.yml | 10 +- .../Mobs/Cyborgs/base_borg_chassis.yml | 11 +- .../Entities/Objects/Misc/handcuffs.yml | 5 + .../Entities/Objects/Shields/shields.yml | 16 ++- .../Specific/Robotics/endoskeleton.yml | 34 +++++++ .../Entities/Objects/Tools/emag.yml | 4 +- .../Entities/Structures/Machines/lathe.yml | 11 ++ .../Jobs/Security/security_officer.yml | 1 + .../Prototypes/Loadouts/loadout_groups.yml | 2 +- .../Construction/Graphs/machines/cyborg.yml | 34 ++++++- Resources/Prototypes/Research/arsenal.yml | 5 +- .../Prototypes/Roles/Jobs/Science/borg.yml | 5 + .../Prototypes/SoundCollections/footsteps.yml | 8 +- .../Neck/bodycam.rsi/equipped-NECK.png | Bin 0 -> 178 bytes .../ADT/Clothing/Neck/bodycam.rsi/icon.png | Bin 0 -> 5694 bytes .../ADT/Clothing/Neck/bodycam.rsi/meta.json | 18 ++++ .../Textures/ADT/Markers/jobs.rsi/meta.json | 3 + .../Textures/ADT/Markers/jobs.rsi/secborg.png | Bin 0 -> 1059 bytes .../ADT/Mobs/Cyborg/chassis.rsi/meta.json | 28 ++++++ .../ADT/Mobs/Cyborg/chassis.rsi/sec.png | Bin 0 -> 2875 bytes .../ADT/Mobs/Cyborg/chassis.rsi/sec_e.png | Bin 0 -> 236 bytes .../ADT/Mobs/Cyborg/chassis.rsi/sec_e_r.png | Bin 0 -> 284 bytes .../ADT/Mobs/Cyborg/chassis.rsi/sec_l.png | Bin 0 -> 449 bytes .../borgmodule.rsi/icons-detentions.png | Bin 0 -> 204 bytes .../borgmodule.rsi/icons-disabler.png | Bin 0 -> 222 bytes .../Robotics/borgmodule.rsi/icons-harm.png | Bin 0 -> 190 bytes .../Robotics/borgmodule.rsi/icons-peace.png | Bin 0 -> 215 bytes .../Robotics/borgmodule.rsi/meta.json | 14 ++- .../Robotics/cyborg_parts.rsi/meta.json | 38 ++++++- .../cyborg_parts.rsi/security_chest+o.png | Bin 0 -> 571 bytes .../cyborg_parts.rsi/security_chest.png | Bin 0 -> 619 bytes .../cyborg_parts.rsi/security_head+o.png | Bin 0 -> 484 bytes .../cyborg_parts.rsi/security_head.png | Bin 0 -> 486 bytes .../cyborg_parts.rsi/security_l_arm+o.png | Bin 0 -> 221 bytes .../cyborg_parts.rsi/security_l_arm.png | Bin 0 -> 223 bytes .../cyborg_parts.rsi/security_l_leg+o.png | Bin 0 -> 371 bytes .../cyborg_parts.rsi/security_l_leg.png | Bin 0 -> 368 bytes .../cyborg_parts.rsi/security_r_arm+o.png | Bin 0 -> 225 bytes .../cyborg_parts.rsi/security_r_arm.png | Bin 0 -> 217 bytes .../cyborg_parts.rsi/security_r_leg+o.png | Bin 0 -> 365 bytes .../cyborg_parts.rsi/security_r_leg.png | Bin 0 -> 367 bytes .../Weapons/Melee/shields.rsi/meta.json | 2 +- .../Weapons/Melee/shields.rsi/riot-icon.png | Bin 383 -> 476 bytes .../Melee/shields.rsi/riot-inhand-left.png | Bin 847 -> 904 bytes .../Melee/shields.rsi/riot-inhand-right.png | Bin 863 -> 984 bytes Resources/migration.yml | 4 + 80 files changed, 859 insertions(+), 53 deletions(-) create mode 100644 Content.Shared/ADT/NeedTagToUse/NeedTagToUseComponent.cs create mode 100644 Content.Shared/ADT/NeedTagToUse/NeedTagToUseSystem.cs create mode 100644 Resources/Audio/ADT/Effects/Footsteps/attributions.yml create mode 100644 Resources/Audio/ADT/Effects/Footsteps/borgwalk1.ogg create mode 100644 Resources/Audio/ADT/Effects/Footsteps/borgwalk2.ogg create mode 100644 Resources/Audio/ADT/Effects/Footsteps/borgwalk3.ogg create mode 100644 Resources/Locale/ru-RU/ADT/Objects/Specific/Robotics/borg_modules.ftl create mode 100644 Resources/Locale/ru-RU/ADT/Objects/Specific/Robotics/borg_parts.ftl create mode 100644 Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Cyborgs/borg.ftl create mode 100644 Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Weapons/security.ftl create mode 100644 Resources/Prototypes/ADT/Entities/Clothing/Neck/bodycamera.yml create mode 100644 Resources/Prototypes/ADT/Entities/Mobs/Cyborgs/borg_chassis.yml delete mode 100644 Resources/Prototypes/ADT/Entities/Mobs/Cyborgs/fill.txt create mode 100644 Resources/Prototypes/ADT/Entities/Objects/Misc/handcuffs.yml create mode 100644 Resources/Prototypes/ADT/Entities/Objects/Specific/Robotics/borg_modules.yml create mode 100644 Resources/Prototypes/ADT/Entities/Objects/Specific/Robotics/borg_parts.yml create mode 100644 Resources/Prototypes/ADT/Entities/Objects/Weapons/security.yml create mode 100644 Resources/Prototypes/ADT/Recipes/Lathes/robotics.yml delete mode 100644 Resources/Prototypes/ADT/Roles/Jobs/Borgs/fill.txt create mode 100644 Resources/Prototypes/ADT/Roles/Jobs/Borgs/secborg.yml create mode 100644 Resources/Textures/ADT/Clothing/Neck/bodycam.rsi/equipped-NECK.png create mode 100644 Resources/Textures/ADT/Clothing/Neck/bodycam.rsi/icon.png create mode 100644 Resources/Textures/ADT/Clothing/Neck/bodycam.rsi/meta.json create mode 100644 Resources/Textures/ADT/Markers/jobs.rsi/secborg.png create mode 100644 Resources/Textures/ADT/Mobs/Cyborg/chassis.rsi/meta.json create mode 100644 Resources/Textures/ADT/Mobs/Cyborg/chassis.rsi/sec.png create mode 100644 Resources/Textures/ADT/Mobs/Cyborg/chassis.rsi/sec_e.png create mode 100644 Resources/Textures/ADT/Mobs/Cyborg/chassis.rsi/sec_e_r.png create mode 100644 Resources/Textures/ADT/Mobs/Cyborg/chassis.rsi/sec_l.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icons-detentions.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icons-disabler.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icons-harm.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icons-peace.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/security_chest+o.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/security_chest.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/security_head+o.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/security_head.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/security_l_arm+o.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/security_l_arm.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/security_l_leg+o.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/security_l_leg.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/security_r_arm+o.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/security_r_arm.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/security_r_leg+o.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/security_r_leg.png diff --git a/Content.Client/SurveillanceCamera/ActiveSurveillanceCameraMonitor.cs b/Content.Client/SurveillanceCamera/ActiveSurveillanceCameraMonitor.cs index 6b038a3a4ac..f7ade7211cc 100644 --- a/Content.Client/SurveillanceCamera/ActiveSurveillanceCameraMonitor.cs +++ b/Content.Client/SurveillanceCamera/ActiveSurveillanceCameraMonitor.cs @@ -3,7 +3,7 @@ namespace Content.Client.SurveillanceCamera; [RegisterComponent] public sealed partial class ActiveSurveillanceCameraMonitorVisualsComponent : Component { - public float TimeLeft = 10f; + public float TimeLeft = 2f; //ADT public Action? OnFinish; } diff --git a/Content.Shared/ADT/NeedTagToUse/NeedTagToUseComponent.cs b/Content.Shared/ADT/NeedTagToUse/NeedTagToUseComponent.cs new file mode 100644 index 00000000000..1f1475487b4 --- /dev/null +++ b/Content.Shared/ADT/NeedTagToUse/NeedTagToUseComponent.cs @@ -0,0 +1,9 @@ +namespace Content.Shared.ADT.NeedTagToUse +{ + [RegisterComponent] + public sealed partial class NeedTagToUseComponent : Component + { + [DataField] + public string Tag = "ADTBorgUse"; + } +} diff --git a/Content.Shared/ADT/NeedTagToUse/NeedTagToUseSystem.cs b/Content.Shared/ADT/NeedTagToUse/NeedTagToUseSystem.cs new file mode 100644 index 00000000000..0be38c560a9 --- /dev/null +++ b/Content.Shared/ADT/NeedTagToUse/NeedTagToUseSystem.cs @@ -0,0 +1,36 @@ +using Content.Shared.Interaction.Components; +using Content.Shared.Interaction.Events; +using Content.Shared.Item; +using Content.Shared.Tag; + +namespace Content.Shared.ADT.NeedTagToUse +{ + public sealed class NeedTagToUseSystem : EntitySystem + { + [Dependency] private readonly TagSystem _tagSystem = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnInteractionAttempt); + SubscribeLocalEvent(OnAttempt); + } + + private void OnInteractionAttempt(EntityUid uid, NeedTagToUseComponent component, InteractionAttemptEvent args) + { + if (args.Target != null && !HasComp(args.Target)) + args.Cancelled = true; + + if (HasComp(args.Target) && !HasComp(args.Target)) + { + if (!_tagSystem.HasAnyTag(args.Target.Value, component.Tag)) + args.Cancelled = true; + } + } + private void OnAttempt(EntityUid uid, NeedTagToUseComponent component, PickupAttemptEvent args) + { + if (!_tagSystem.HasAnyTag(args.Item, component.Tag)) + args.Cancel(); + } + } +} diff --git a/Content.Shared/Cuffs/Components/HandcuffComponent.cs b/Content.Shared/Cuffs/Components/HandcuffComponent.cs index 289f587239b..d493a1eb653 100644 --- a/Content.Shared/Cuffs/Components/HandcuffComponent.cs +++ b/Content.Shared/Cuffs/Components/HandcuffComponent.cs @@ -92,6 +92,8 @@ public sealed partial class HandcuffComponent : Component [DataField, ViewVariables(VVAccess.ReadWrite)] public SoundSpecifier EndUncuffSound = new SoundPathSpecifier("/Audio/Items/Handcuffs/cuff_takeoff_end.ogg"); + + [DataField, ViewVariables(VVAccess.ReadWrite)] public bool BorgUse = false; ///ADT secborg } /// diff --git a/Content.Shared/Cuffs/SharedCuffableSystem.cs b/Content.Shared/Cuffs/SharedCuffableSystem.cs index 21d09c744cd..f9656599ebe 100644 --- a/Content.Shared/Cuffs/SharedCuffableSystem.cs +++ b/Content.Shared/Cuffs/SharedCuffableSystem.cs @@ -33,6 +33,8 @@ using Robust.Shared.Serialization; using Robust.Shared.Utility; using PullableComponent = Content.Shared.Movement.Pulling.Components.PullableComponent; +using Content.Shared.Stacks; +using System.Diagnostics.CodeAnalysis; namespace Content.Shared.Cuffs { @@ -53,6 +55,7 @@ public abstract partial class SharedCuffableSystem : EntitySystem [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly SharedTransformSystem _transform = default!; [Dependency] private readonly UseDelaySystem _delay = default!; + [Dependency] private readonly SharedStackSystem _stacks = default!; public override void Initialize() { @@ -450,6 +453,50 @@ private void UpdateHeldItems(EntityUid uid, EntityUid handcuff, CuffableComponen EnsureComp(virtItem2.Value); } +///ADT secborg start + /// + /// Checks if the handcuff is stackable, and creates a new handcuff entity if the stack requires it. + /// + /// + public bool TrySpawnCuffSplitStack(EntityUid handcuff, EntityUid user, EntityUid target, [NotNullWhen(true)] out EntityUid? handcuffsplit) + { + if (!HasComp(handcuff)) + { + handcuffsplit = null; + return false; + } + if (TryComp(handcuff, out var stackComp)) + { + if (_stacks.GetCount(handcuff, stackComp) >= 1) + { + _stacks.Use(handcuff, 1, stackComp); + + if (_net.IsServer) /// let the server spawn because client mispredicts + { + var pos = Transform(target).Coordinates; + handcuffsplit = Spawn("Zipties", pos); /// This should somehow get the proto ID instead of zipties, but fuck if I know how. + return true; + } + else + { + handcuffsplit = null; + return false; + } + } + else + { + handcuffsplit = null; + return false; + } + } + else + { + handcuffsplit = handcuff; + _hands.TryDrop(user, handcuff); + return true; + } + } +///ADT secborg end /// /// Add a set of cuffs to an existing CuffedComponent. /// @@ -462,12 +509,21 @@ public bool TryAddNewCuffs(EntityUid target, EntityUid user, EntityUid handcuff, return false; // Success! - _hands.TryDrop(user, handcuff); + //ADT secborg start + TrySpawnCuffSplitStack(handcuff, user, target, out EntityUid? handcuffsplit); - _container.Insert(handcuff, component.Container); - UpdateHeldItems(target, handcuff, component); - return true; + if (handcuffsplit.HasValue) + { + _container.Insert(handcuffsplit.Value, component.Container); + UpdateHeldItems(target, (EntityUid) handcuffsplit, component); + return true; + } + else + { + return false; + } } + ///ADT secborg end /// False if the target entity isn't cuffable. public bool TryCuffing(EntityUid user, EntityUid target, EntityUid handcuff, HandcuffComponent? handcuffComponent = null, CuffableComponent? cuffable = null) @@ -489,7 +545,7 @@ public bool TryCuffing(EntityUid user, EntityUid target, EntityUid handcuff, Han return true; } - if (!_hands.CanDrop(user, handcuff)) + if (!_hands.CanDrop(user, handcuff) && !handcuffComponent.BorgUse) ///ADT secbotg { _popup.PopupClient(Loc.GetString("handcuff-component-cannot-drop-cuffs", ("target", Identity.Name(target, EntityManager, user))), user, user); return false; diff --git a/Resources/Audio/ADT/Effects/Footsteps/attributions.yml b/Resources/Audio/ADT/Effects/Footsteps/attributions.yml new file mode 100644 index 00000000000..3940abfbfbd --- /dev/null +++ b/Resources/Audio/ADT/Effects/Footsteps/attributions.yml @@ -0,0 +1,8 @@ + +- files: + - borgwalk1.ogg + - borgwalk2.ogg + - borgwalk3.ogg + license: "CC-BY-SA-4.0" + copyright: "Recorded and modified by https://github.com/MilenVolf" + source: "https://git.arumoon.ru/Workbench-Team/space-station-14/-/merge_requests/123" diff --git a/Resources/Audio/ADT/Effects/Footsteps/borgwalk1.ogg b/Resources/Audio/ADT/Effects/Footsteps/borgwalk1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..55f1b22cda967054372928832dfb2e9721d7063a GIT binary patch literal 17189 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%0DmNZSlq?___Kc7aWybRZI3BDb47SO<5 z4n+hg5w}>1WVjisNn2UMu4W~fmuYmbG@D>0rTo<}YLMiv=4JjZl_ay#2aOEl~!?#Cra{Md>9eFOQ;vCtc z03aXHPw_6IlUXpImXo{aLQv<$FhAhO@Z^)0#vuL+hQpmk#0n$|6mMV9%bmL{E>dz>Aw0GD1|BD&WH5$#Xs8zz~$>SEL?&T@=DJ@cMM+4zyat4b%G*n ztd_+krDf$59x6UjR#kthsr{d$grK0Hv$k^JGbrev!vfH@{=H5c!ev~R`0ns2o0`2e zHMTG_2mic$X>MU|VPX36wESGh#KKHhS6c^cU}kFa($v&%yJ)kcL!4Up4FLQm=2&>s z|Ayvcjp^M%;hP<)+ACavN3^p3mKr8oHtCL9^w9dZJ(xC)0MD)qRf|8^%mR8iynQj+t?8=ZjmK zKzZ}nD)SQRHx8C0pv!l#vLnxM8vH}v2p$b2ffblT$Ie>iv}7@87%z^Dm{^rex$gqSxxJ02WLY&vm$0ziiC$RSI;!JnX6En+F*XzB ztZ`7ji}67D9nbi|(Yr?--EiUc?p_mJ+z1Vjr$w{`$5v%szlO4aGJMPJG_$_?P_0ib z{6^>JHeAS`2idQD7=;Yk0Kjjmn)9I+R0U1f2g8;xABSu2cU+XRc6B$}@;~0gZ!<9r z&=xS65f&?Ci2IIhB^Z-UaEw4uhTofbd1S>OFT18=tTj2i%nQ0Op3mF2)>cJpeG}JZ zjA`I7j>UX1q#+6wiE4klO^Zq&FZeNq*^?2+#YpqO{f)8ePGk#}25aIBvZI*`qvkCY zE4nfQK#)fTcdq0SgxInqalw1p1lLTrDf6Kid+Ts+!JK_lTrd>U?=%llkEy3A|8Wig z3=u@hAA^E0xqHaK=f}`f~H?P|5zyjG*&+ZTW>FiXqM+~ z+}PuJ-p32eHLKsA?__tXn?PDo;UDJJN=#(@#j7Wc#4`H=j}I|OlM8@2YM?iczp2N6 z+8{HYx2>h&+NX-{&ul%2A|d+awOY!hv;upGEsljL-x1UR;MbYQ#Mz|P?tHk1v~f0p zNaKs5SiM#wcR0{K{%8?@sle^Ylb-zju&@N{hR#aK*8AsxA1_k+@++#>y<8tj!6qCI zvFPO0kd8{SjZ$wBR<9H`){d225rT^!hA|w>ooWXh-chi!uy^lako612;?=ddrMg24 zsgsv*g6x8N(b!3d0j3=S)vnFb+1%g7X*QUUpJpTl1U-wvI-k1)M8iyP^cePpr<5EY zzyB*^y~@*4x$LorDs__aoW%oh5m|_b0`Y}EW=l*7Vq1n-Vah?W&qvyxYZ@s9gNxX!FKNYk7x`ic6E}f2kO|Eyvooh)7@=di|z@yo?*w% zq3uY6QByFk+NzKw1xIL||DymHWLD4PmI&!{YqOhk_#uDv;p)N8V}e{(1LaV7nU~&d zz?6~Z@q@O{Fao0VSydzuRIT$tno$(;hf|SeG@b9y14HlHdm`^MDu)dF+=u)`b3NCR zzJ38WF+kST@Qs&`v`8A`ygYtD$mYaC>7X9)GNj+pyv8(x1_ahSZanm*)f+hz0qGq( z9%|aP%YbD9L0m?qJPJe3`n@$QZmhmk!OW2!nSK6wFrK}b_dXGPGO+=3&%xbkc#(VZ z2bp29ySl}O|8v#LFWnk7B(m8Mu{-V*_!|JE=iS*ms)O&FPUJGS7dq!wrsZ@l2xvrE z2WmCz$snH@uFbWw(-D_iHV^q6O+eP98B~D0qoVA)WI1qflN`QDhh!ksJ)lKQ5^$BR zi&~e@m-%vE_2A>7s_V{i7QYB8!D2^_hMM}*YYeUA0wP>N35Bt;K)-BV24JQ&y-@hH zqxi->D>qsnUI6emB=QT6E&26JBUdf(qnwNqV=O9cU#q#Z)DAVTFulXgRAgese`hG> zA~5+~L$)0jRiUw-PQ!bye9498-tYH$8N3r^P2+F8@N<0___D9z{&XjT)=ycK zVrSde2%a~057b0-r(A-nS*UC9cgW7fnv^pp*a0^$OTa5i=WDwK-C9E6))(~-0thqQ zV}=5d0V6=p*yCF2kk|#^9`CqH4PFh4$pz$^{~NO5L0g7cREpxTg}s-3g6 zfqVtE&zv?Y)PTFxeBZ>_z-C<(H&Jb?*lmy&IRge`f@ zKZu^|B4@yslK_8=7H1SX4cz)7QF5Z04r9>rgeI*4)fJ?d#asI7RpEZSyV>I|S1uBr z28R%ZAjM!ey?{Xh9^|2}4;iUg@z?q7jSbY;0y(tB>lQNia2_?#csR$+#?zhv}_wt_veC4uZTT*dC6<`v$P8PAms)q~VJm3@4;N=eIOYut=fgEAl|##+)z zCCit~6=*=Mq{K1zNlblDY8%|G^Sw@vBWjD&H+D<0xELH?~f?#9FE%TKie4|H{-j_07=IaspiYd+0~x+Ys#2!ByH zQ=61U!`yC5aG?0!E45DCAuL=NklU3)-@1V-598vs|8j+4U$r!PT2g469BDUwKI%Jd zjlFF6y3;JEVxSzgC&~P#Lt>LDr?$arD<1b)#<@H0$zm1$&*K%BG0Zn(0Z%mO`IaEP z^*pi7^?Mj1fU!C#>qGB>ja1rzGb5IzME|&Iii>iGu6eU_uhto#0_)tWt6)u+Iz7U7 zpHjAAe*Y=yPK(o#XNy>w^Q9^(E;T|m|2pr7pOwpT>-9r-_q+CeGABnVHR{X3L=-ab z$>;HvQb>ok!qStV?{$M|Cnc^NLBU7w_BLzb<-#k_R}Va7x~x2Pxv##8DaFLASbB`A z<*t9b{(8wbf#r3pFRtscM~0${(S~aD-riu+`Ax*3GXK)z`c=Uu)!($=oZ3p9R5Ze# zEd)n;W|vl~|4O5vJJsa~QPqziB6NG)N3$r5{Oy2v{#+)c|Hk?!^vuzTx5G-GKwpNy zaZK}!Kg{Jiz8(Nva3wf$=ypPnh#PY7)iczSl*S(IFqK-n(Z+5?EQ7mt6&L!a(@eB3 z1l-;8VwA7S-Q!Hf!2Actv0XR$$)jfC=C(BA0-VX7av$Y-7Nc|Lv|foVFIE!PVKr2M zO}5glKvp<^q{P~sToRUDvVTp7E$4;T-G)aOeSn>(QHLhrtiK^mnLo>SGDBpW{fUHe zdrJ-uavl3sxqgGo0j|}RJ_V?9FAYt7w;(s~=FF(od9ras&k5&%#ytaaKrZHPsBo{u zNop~(v3b~*7qKg?)jl1o$J}M_n``>3wW=9UKorToSd{VY0l$5_Jk&t;d=J_r4$OiUTiObcf%w-6&$!!f4o< zB_Z+mh$+M{Lvxy`yH)8PRYdQ@>~v1eq;@|3Mv|H61LXOc+;&d)pEUw?ZB&-Xs&49~ zDKGYJ!S||8ii~TBV1eO1OO2#+0J-J1ugEyIT%{Zmfg4CUeAwqQM=-rH@Igt+V@^8s zefz_{D3ERRz#lU}WwCbCICoi|*B6p!-Q0Mvi=#=O@zT5P+5SSNis7=@t;!bLxGrXs z6iEjFKzb#gC-f2XZ|p4ZWil>L925Im*0`}QV!A1J%vs4naU}PIoF6sSe>0a2BlLZ7 zww`s$s9)WmSxh@XWTp<4S=lus@!!Z3_yia~jW2`Sp`w%Zt!*2D06j^3gHLUJd~?6vP{zX+C{vmF`1@FL z?aqfkW74HN!QXEUaUD*Ms+W#Tv0KN4+4e=t^~2R&*IC2zY4@>3El8(q^RJ!~gnwmu zdlli=mjxEY=4Ng^@+NSvhJ9!L<~6Jd-7kGRTd6OMw21eYkB>*!e07xqYO564tt^}k ztf)Z2L}Pxa-+Sruu>~oM-C9Au(1(>n<|dVMbGQ9-y{2Iw0(8VTms&c<8^^~MmmDE5 z!sbXa5ag&jEa^ILnlW#ZI^S8nt)rnzoMvxQrPzwhD#cT0SIHkTseM;r14UH0+OO_J zoAlQ3$C`$TJH3T=p!h*-=NIiRWWa=pcPeC~!joHdT^QN+A{E8sJ!RY{YeWRNtg&X^ zR$6fOFxp!*OJL_{3b-qh4#P1$y87VrA56bzTal=9no+ix)uq#TF``U#Z9HAh$W zMMPU>@_W&DVq0&SsqYt6e{{&e$2B4KUko5Xa|B(CFnRS;=l~Li3EncECW9IFrZ(Ln z>^Wgq1vG4WebrQ;a9qQv^`}0@W|#m{-5j?pLw62%={n&Qhfe*VZI;9&>Xo=Re|1IF zz@tTw)OQJrop0IGnGw~!1O8?&JfeK@LImIE1pO`(ja)kh3j_m%}AQ5``$ajA~3sdwbt&1ndgA$Q7a$npp`c;yn z+WKL}Zx4%G;6_4vRrwJRNO@fk>njD%Q5*YmDAv%>J!jmslxDDG(lP|?MY<$N6#EaY z`8xZx^~X(<0ue{<1#v|g5BA=2+Kwp%k)`N|&%A*fRjBpu?pWew0|`8W*5enq9#e}8 zgYvP!wFV5Y#iihfQ`ZRuG@^TP3?<2pHI-Ee^v(bL;BgFAE@BcQS!u1DuXI;!33WL9{;4Fcip&nvo|>1Q2|!@i0qCp0Py!rLXP)T z8GoFlR4K8I69zL-tS=Y-X!WbJ0mrcZV4k95AC;78li0v^8vp==Q7e7>TcgmLn=EPNcgh8l3RTEeua3Tdl~PcYClyY zt!r|G63_m&BkW_ddk_qC=r(KW*A3h(HN11}(crQqjO{kvw|(jKa9={L3IQr>yi=0U z4bHW2K#s*a?^vN^6*n@rzS=(SWX?`o-Fe_D~jbdwOTZ&G~$ACf!gWu7Bm zHSylt#J_RLABGj!3cLzTio`svTofxwz+=o*Lvd>T*E)hP_I~z47o8k-ePYLeKTLo= zYChyf3Y+KUUfCHur(2C#r)b=}nS7bC6bKyuOJ_#>Af1b5;3Nz4S+SX_NiB^qEC>KL z!}oqK$`tb%3j;=q#^I$^dVM%iTe|QP1sK>y{4y96loA&(GKg&SYpe$nc3A1Lp1u@G*H>k|2;_^T8Hf!t;J06Pa;~1D| z_iJS+!+v%KfKQV2>#yYuu?CY># ztnMS=SF8z*R;UI+GQ;q+^%&@jV)yFGPe`j}(+Yvj$_QuZoX$;Rz=mzsnG5}A-=HpN z{T>gc{p&+#+$%HlyvA7HN<7pH3MS;wt79h!LB%fpx)+- z+z-7VVOSMtG5gv~yr{}*qW#-K`yLjOTn4wW^oP_=HpBNw|% z!AttVI=G>A@0Wlm6o+f}lKDoUf_dG^ql?%0rW zg)uA@G7a;Q>Mc6TOe^!mSIZD$R?JE-IlPc_no@FT4c=XHcHY~U(KIz}_@*8HOmTg< zn_61d%0jh9qfa~E^Ap$QN-NQ%g}yZA)8Ki+7}UzHZcJG9kwrbF|D;*wxvxVgL9Lj{ zXy4vld^zLxOYZaT5*ig)b%@hJW~k^DQw91*c-1mKHu|tYp!LH2f!(#n>Es2ZRGJ&y zOmn<)7&jRwwvUJ3N8;_5SuK8s=w)!ZKRJI6P+gJ^O}siYxZ8~+psi)#TI7_@hr3JJ zUfIDruqJ8$T+fCU0hl{Jad5RckoBho0-KrUn!uI<3lCb4VS5`T=bJai=D9x5k%~v} zxs3Ukge@H_W{c5$EkBw!CuVTSUi(0mxEhj|bPq(H1-p##a76fZo(Fx0O1?8K>)w1# zjDoj{@*{ENn8;Q_(70N`Xk{f~??hW;taYpaomg+1AZCDm{uc3F2Bs&iU0k9| zIj+v4~r+pRvw)pFwWAj3pfQCH- zC>6tt7-O9g{kKahIR`MF*u%Afg7pWC_A}jUNPiieU{&7+zG*bm&)FN_Yus1mHfy~# zIPNL)#!X~u-z(|7QigLql;HdEJXVmU*ue?j=Diep%xgKYBp?+TwQskFC`VB;L zCER)XK0NA3HVT9|dVfByG7{N4%V&bq{^a!9q^m)~`1`%606zb<-dF7|S|=`w1t=@? zH+sE12)DoqrF(0M=%egBzqLH%`wz~Rte$e~GpJ@3fPmU;P z_%@E3WauD&^-iYAnD`RaV&c!sKNHK#IXe2##$Md7;X43{wK~j2YV9WSRU&bNf-%pf zwj>EC$rj-TT@}dE1C*qjJD}ndP+gMiEu_`hn;6y+_hV6k#*s>QElsAOfP zx6?^>M{_UTh;*fXU>gxm5lFssx#SM(2l7U~D+1y1Rn`Ze7iUbmKA7R%`0?Je5uaEn z%jOHNk_6Oq!Faz2fv(AcCCZ(dZSi*jtYMTKv7Q>fi-<%mXKs4FhHuC99Gi)c-!85s z9~|0e>mE_p+V^~-if}??Iz(UJ7n-1acQE36A@+vBd^c2CC*eFzt)RliBtG}=%>hy| z)B}}P{G4o}G@MvnI{;9XiSm$JHO}L6DXu=Lo4`1GifX*@Gu&!qhM_8!Zf2soo}>30 zUeRG9qC6XRR_{$rH_sZ7W#*uerFjM$&bUVnw;>r-E8}J}!o)4GX-X+<=5sJ_XuIwA z-o9F!O3ClgT_T{8xe^Y3GzUy4Up*i#7k)>cda>KzZ%mCTQy}2@D*|1)Qfhf{ja+OU z4Q}z@wQS}OA=WewwQcy(l#jaaj_&R>Z>;pq$z(5Z$F<=cQo^0HC1AfQ(`feFrLs$N z6qmxWt-WyqGoI7}0+@}~=G{f;Owly|E+V`Qw#1V|rdn@4+27`!u+=I?o_5qbwwl$Z zm+(^`i}ga4=K7y(WqFw(xQy<`Opdp5ZH+_zuvSh8;0|1keYVF}G+1~1d^bKDBL>44 z@5Go=n>lT%@Zb(GpQH4|WM-&We%H0t%&Z$`Hk35RK2j~%92%)ub@tw!Q8~u#c8*65 zH>o)DJK_=OFS%ton&T0*Fys5r&yml;#PO4&gP-XY{fcpwQ!>ln8^=RD8kcQ8_TNWG z)`(M)+!`ku>-2e>m0DBxo0WCuavyn;KM%suo=v)S?|1dJN{MlWcb8kgIND^Fax+~H ztWF)NSjqLXi!=~x-h86o{Iq{QxPR(1*+|>vQXP#VzSIYh)C`wI*A@};_4&jfDzxRf zCvUXf3%*tUdh!~N)mU%nP5ZvF(vY6<`^L>{yj?wqeMq(}$CRo`2M#Q`?<||I^L7-p z6FnuV{Y$lZu|KEc(6bLkilwre)!h7i>!GK&$a;^+sF-QHKg3>@z6IfJ9dIF$kMWWV zn&W!){I+3Km@e(L7Af74Rf$09^~rFquxOUc53hAp7L~BDd43je^>smLtXC{K42F;R zlxMv$vQk|>(SWsj(D|Brr69QMQY-}DIme{4Iwkt`e;^nZ;zfs6@cVcr^Bn&1->43P zlPVdR)$2H6t$wZPU)a25I_>Av-kgo`(`dfK5EDptzq ziq{+FSHET!o?L)vV>!H+Sv9S9sH zHdv?qU95~cvEs5{vW~#pWSXu=?giN2E|7JsD7jf-`p_+4S!p?^IV+CRv9_XioP%$z zf#Z0)V-`_gn>CzBh22_%n#8zQ#due;CQgfDx-gi8&sBGd!{L? zHadaMav|(v@R$l_!_U9RvNQJUH1i(MRq0#ka^0M(^Gmc{_nY2`NXlW1xzcUK*HfV! z?I$ZOcZdV<-unLz>k-eDD~+t*4)19jE2^%x+|n&kvpkqGb3W|$e-Cc zxYsp(%L&YJtli^vI*_`wM@@Ld!C}o3hHs= zOO={Tzv(qrsv)+iRhL>zZ7;Ixy`mgX8BvUn3fwNf&26JTL~0`3!vH7$5K)m-ROy?m zUVQhL?i|@m>l~dncn^TKiDjjn8gty}u>521H-{ItIPvxJKXAdQ-wmcQY~@|y$!1D2 z`>9kgjCD9~v}u0wHb85goYbfvC6WB@y=6sxTkwlwQ@vVPu5E_>OmOEqS9^N)z`j(4 z4ea+=3gc31w=5YP~)9KP})i1ubo2 zpc&ar5T6~j5cxhiwW`0@>F*7q#l+Kx zw}@q%9~b^KbxX8bGP09#@am*#FjNcuxh1e+z$@Bv>B}wD-Kexjlm2Nd)}l%L7X~ucmFTRA z;i703y5FrWk)B4!b&4@19&L_(*o{or9-Da)|F)vSM>Sh^>A$hob$92cABoqU?|c68 z#Ywt3w3dwS`;56iMZju-fdssuU5RN@do$$ldHdyOwL#E zXkF_!d{gc_6jx+6wOem%1u>}%kHa%YZ`R3OS3mdy{p zxGS`XCnRuQSPz)08`F3EK)%SE(wyPMA!~%Bm3e$~B93^`=eHIa^c&Nhe!^a(xBJ8$ zkIyhxmiJgliS6S;3HF4A5oZXz26OD4U*SQYglH7NJriYpMPGC+x1w>{?4qnha?_jYJErIq-eO7`?W75N(#gt~WK|HFBi?7?k_&$p z^*g`mGEntgNx9c;1qr_^>px@Xq~?#*%c$MyY`>o$5H#R$TurkvA+a%eyuE0YpBegW za4DoF>rwxub3yF_>B(PfUa6@)5YW|`hIAuibv8DcZi;XNH@OF`>TKhtB6dTaeT}}G z{t)3k4lqRRL_fyz;*UA^jGbj4*>l49{VM~Hh7EOowX1% zaXIes-D))-7VmYQV->3PlaDE163q?oV#`IcWUU_$7EtpammMgDN(FHpzP+If-DX2r*Cl>T0%~EoJnO%K^eo zAW24uNoCtdF<>)Bx=0G9HgqE!Xnv#^#S?sTc_@u0JhEy2%&xv}FqY#|Y?iv#4!bYe zV+mt70{4odAzBVszrPNeoo~E*GMFh->f*Ipqp<8>?BO=N)k|((!Z>>mWVW8nxi9)G_0geX6twCCc9W&yT;8jL&in>zC$19xgyTa&$QGjj zVZ$UgJ7d{)wj@(zz20^|Beo1>+9t)diHUz-zjCx`-&I;%>qJA~{?NvqWv?~w z)R*I;`w_MNoI5wkO7}IR$5FRxYU~u-C|o(tc?p>VTi@6%)HYUnln>0p1UJfQhT)xkS? zEpY3(u=>0%=(?ui)qQ2dwR(O>BNV4x7nD7m)t7n zwkJr9HoL_UqrLUhzjracI36)-3+o3LKC zpKwB@!(VP~vS$wCzArl2N;0JF9T@B4_S7x`g&U^14mk<9Cc5A9WmuPZ4Wn0kI?v|1 zGL2xdQFdw)7r~#={Jyl_K_s)8=3pms59KeUTT(Hgr2(I0sS+Z;hdt79M|Kiv3 zf-r~o^;oY8NUsc-1c3JALU956@b22@%YGRpdJuhuFWpCs+^*&>)CKI9mYDHBwsq!N zi-W-fO+ffd?_tn=$B><^qXxoI?y)n~Snso4>z*A#Kx|d<(uFjbLx7(*;W2#dWJ!Z_ zJkDgW#ARLga!2%KwZ{YQkUtA*Z*_~VH9vVwV!gwtx8r{BsKMuTlj;3%%WgvIZ7`>~ z%r@Znh&Hr(@cIXVZ6k;j*b*Je3~^DyY@6q@Jq<) zl=BqXPHzJj=|Y};MN|iB_0p#~aRxk+=KIC2U)i0KYi`WZ7f#)Np@Q`0lXD&)880;l zYw@x3$ODr|sLSi80TzeyMJ$W~59S9(Yuqp>CqL=m@2Vht{w8jXPi{?Fx}PSfjCTT^R`&WJW?uc3>s+g~Gt&^bQ0pHUXblK7IA_LBzeMDjc*B#`Pc$KG=7V&=QuQU z{z^{MoXt@^5EWV*yFE?s`=i2|=O*)|Ay@JO)32+t4v=dvU_CgG)!ex9{GTVc_vfnd z*PZIW@TG~}DsNXw(e$q~8@@z{d4YMfy%(~$8|~iV-scppkU1E^oKD>(|8i72gQ@S@ zkBN?7B)-PqX{V^e!~~1?FX0j(rv5}MUZ$*E-Rn;~3 zl0}J`nnK^5DMhlcvbStuZ_6KBY3*6w%xHb z-pKP`q3+eRbs9S#46U61XIdj#c zWK)eBTG?I~bXx)f;2Ad2-`YgJ?)({fUh44@K4<~P{u0LvH#Ps&9TG(b zm#-e0x28%&WK}TdT#tJvMD=NxtELH5yj>B z?)c%@IC)<&2%6r z=_Owx6^|(`<)_Z$EJz-2ahj3c+z_PooG?`gFQh0*NKVLxPbzr7GX$!%bf4%H;!$MyKq^=1AXGC0E zfm??T&0e@X67g29p$cZnZ__`pu!UlpqJ7qSMJMnOrWVp`cHJ;7i)G(%UPKH?wN_-Me}BvPN(C^wmt7}h@;^pDT$as0)hpX*vy>X=Ypbp6w(Qw10lg z5h|UnI`P{=-?LxZ|H!Zz<~>un{msqV%cmI`ky6|>;EKiIF;;N?o_K=lzuQ zTBus~T31Ha{&kd>$Z_zrKzw_~Z7NvLOEzhG`yBqOaydDcJEoJ15$a<8xU?dB#&q ztI80Ya3%MYNLOn*(cHqse$!ucVmX|4Gx5WE(QlDo9pCOveBR>4y(V^lYSXQILc96! zn+m3%>+azFSZ{xHLmHII|Kg(hi;d-G;hoO_o|5w?E25m2dY=&ZDinpCzQp7QnQHgI zJa<%|7elnBY>3BBacr`8y(fTTJHo{v^2?i8$E+QlWtFdL%BC zsY{CZ4JXC5=LWhl2t5`!KvFh)M`Zhf1eQHwq#R(y@ee=fcvVfRu!^qykHabSz;3(%rGr!qTwx zvfl;X_wzpQ@B5DT{pXwGVwjn8=A4#pcam9te42I-TG&!l(hCW5H8RHR-$hU9EjBdfe1mM z*9@%q@s{$e@PyASUMUH3m!-C+;VB8>ZRBR}!R`NM^nB)|Aka-vAj_TToE3T7K4B|z z=4jVX!Zs>G`SdsuYQKf=d`B~xIp$U8**W&HGUDFXy9ELW^Gxnh2#NY-W*YYB9XXJN zQoH_ol%MX3$5!y^EgsJ=`XD8qwcL0Wk+p)HXpwc6>H(>{oYg}LO5jm#v$E#fhQ81~ z;nnnivO8D%pa<3>b(_MRPzv`FeHd$AiYtKX@3!bcfxtFFvL8s~D@eL4sCx$)RQEX4 zi1`P3Wi&LEwSeSqr~|VYhq;f#{Pa>nAoYHF^&yan5W}Mo6Y_WeJjZ^>qs!-N>-5(^ zpPmROEwW}mrp#Ut&b|@+uH-t%{E{T}cj6wi#^uQ8S=yG_q}5s%*E)1pa&%YTyXpeE z26VYhpKMa|{$G!!UXsQC{ds2niw*P)pk;>(b%zUsj5@l%&S6_TV4e+$=4 zV{Rx+NxR~peILalz)RMyk8Phm4x~c+{~L#YzU{A&%ZXKGl7`L1Gy-K4lG3!$DH_;fEF)0*1r<7Q>pI+@h3iDTOkmK(Er8$=>@>n=}Q7-Q0|I(aKEYS->(NE;#81&+pyppWKQwu+4 zt`%nE{SVEtj>u1m$PbHH4U1+8PqGP5Eo#WN?rlOg+W27o|cWA7&{101!0z&{5~)|?1KS> z{lnv*Cio&+Dy#+1SI6XWIdK59cN3%rsGC$6_$RsP`{%#tU%Ut7QUr&AZ$Anec#g{$ zlE8!eC^1(3Cpl2;==o8e{Z3+`c z^jR2d003j+n7$o2Z_M=G6{^zQ5mQ^%+A;l-tI2aOC%**9b3#=Va2_T0J!b_*0Bf=6 zyF@kgoCTgcq%RMzd8MGp2p^MTEv*?dRVu8ZRFDTy>B|?^jOdq^){u+hvW8r)syazO z0t|m>#sa^Z91cugQ+qjiwWhkwCV1stx+A-TGa67eGuP~g%%$Bu%ME^Z! zEwxz*zsJ?i9|EhY0RWus07Z-D$Ev>uUxj-7OE?N+ppRRE#6GlBT*sA-DrC9jP89}i)fcMHJ0fL%$2>=<|sihSFDx19rWEyB&O;886 zoB{9aC15q(?5{Vu0|K!*1J3u0nmP3ChfjcdUI!Hd zUIMIeMOVrYa-cUZoKFtC0xVjg@NYFi{cn|(@e=w7;Lasf3Q)VtDnK-ajLYihgaj#E zz)b*@3jqiYPteq7g9DubQfdFCt8FO=v~v>&^yxa4wyY2<7ldbvkjfYt9!uEal9At&LAz=_(F@bsVuml6#aC`LFS`JA;q!mO-` zz*ab64}dBlq$L%A<+3ZRd1w|z16Z>N&UQ-ZCO{fsKY)A!MsNb?GL|aMdf5for~xnx z0QAz_MRR=V;c?9}(Uu5|Dr zpm9G^%%Yz&18S^qm-6-*pr zRs#rX4h`&jg~I>~4<4h0_VORiC<2&M?aKIZvY>={@Cn-}{?&9JLXqPU{iuc&TDO7c ztF&$krGOXg6UTYvyVFpkYuC%aIu}GBf{U~*1_aw~Tl^?9$Po-k^1!#tF3;=9?fQj} zsDtrEj%n|KenmNho*6uiixuhqG89Io`jzkvU|;Y+VSqz>4;Y}}zdSLG_^aywrOd!f z0+SFBfa`uM>lrGFTF6t`%O<#R}Kw$%OMN{ zC<2WpOc*oWY|vB?wyjuAc=R^CI$g2z-g6awJ5KXoEX?3q5}sg^>M8v-z?_>FSGc_g z%NMpKDXaqVJLoM4bc2Y87?Y7BLeJ!4uY>UJ-lO>;^XwVdqnxjwoRx%_GXy}O z=V3jB;bCp`;LnsSY@ul@~CVG{H>`{T#OKRd^uJ46(ZSi!>2<<$Ul3?zEcF<=C>1H-H> zSA;~wB%VpVcqyl#r1DB#^FK!kfq{WneV+k&VBp`wg0ECpO;_1vN1gop+B9-%X6B}5 zSge7GsfnqXITovn#a_c=?_n`mEXen`-TB(_!j4dvltjbnU|DD+wc(ucN=@Y87>v^> zHs$p_#6IZw`D?b&kmd3j6vQrhZDK@{1bcrr}ur2U-CpzLRIPP ziNZ$azBQ8<3m_1ZimNB-Cl0wD+cv2pwkHX-!u-_Gp*ex}&9M*?0>(44Fg|)V5(9VwzVlsQs1fFO`@b z@75cVJ45lkvf$Kd63`AF_FmMrWi?6)9h&C%^UD0A(-j!?^%nD#p!Ss$TlmiCdO7w1cmq(p8Dlran^OTv#5 zDUWiTuL)O)h;tWB^pn6wpK!O9cn)VpquVP4+s02VGCkJ%y+tvwp>>#VjIPU3&YBiD2`^M)au^N zlhevm-9|R+ZL{%_tbVcn@m`H}o>|{vg%u&=mC%!d@>PVtXbh)n=V&uh1v=iqlf^Z= z1(x6aX<&?T^px#RS(V=N@VKZqx1kyPBCvXR z3S}6qygY)+TQW7;oC8)8hQ$BbV)ICO->T5xVe>|x~KM(S!zMN8S1tKq08?AcEN-Vvj0`{frFRrOZX{6)Ll zV-#7rL(&#CyP-Qp$`nnD`X+YZAI7>_5}o5mZcpP(z|*bBf=;T6eZMRh zj+(X$6qq&ec-UxFHI&C>oCKdhNymNKZ6$+ERBGq+ST)9nIo^;ag|sIs&0|l0z^dF8 zhXZhSy3b=)bh-*=6+dqdw`yGjtUQp?J5yr#Mei8Scm-U*3i^4tXCRD{=Sh}Fd-a&o zDqpUPMm;rKm*e5B&&V;^S<7X=eaViSAZiuYgRDXHPK)m8dm)~c${c?A@ek~SeD)ux z1#Ty8S#=IJY`|>y0)Yt(<_9uh=CzTECtufYugflg%yYU(*fxp)Q=7bd8+N7BDC2hv^C9&I*G`PtaqBJ!bek1WT z>|f`sU!J!%O*(_oFZH3P=LMaO^y z&G7uTt;}suPu(9M9@(iDynRpiA}yzXfj1z@I1 zdc#6fuan*$o%h4|uRV2}Giv2H4UpLFFD)k+#mV2>hoO?r_I9W^u=Ps(-Fs-bF~c>G zpx2Y%Ql5k}_Noj&KJj^O-^ao<#E#y{y~sVz*kaNWhBk9XWJY`7m9YVbyqaxzGWcJ= zXFx6r+C20=Iy!9&6*v_KutuZ5V-4P|PS-7YSSZes5co#xdU!~RC!Owltd2w#u%Sk;u^@g_IO!HcR7tR zt!!h)Vp`|ds?)2*)_WUP!aR3JtHHPZI)te9EJL~<0}(w)A39whc<qk@zi~7m_ zK9G$wIEzoo0oF1^8hO(1=~wA6-z2t8SDUYv(TmbQif4M6BiTkw1{v$KYV|>vAkJbe z_c0f{%fs7bP)L7MlH@M$TL1XAw&>_`YXG-up5MXuAz4wDKI3bZ*$on343Ts#EvZ$URFmlY|gykq_zkRe{G zUJPOB?tM4f7Kb#>y19=nlC*7!tX~5K!aX%4g>CrRiKAX=f2f|*x608r;YdEE^6IOo zG*z2b$bDGg-*FpKEh~2_Ss^tR|04Oe&S;Trd@0iQ@z%yC&EhJhH9;?)`i5@C9}#^o z6)@U$596&49&pMjfAG8T+$J0=5~~?%P=y_zKaN?n3g>o@kB2X)Uc_u+zEnFh{E0nL zI~>TW@i@&UF{5Ye(GTlVh)P)qq=3_irTI|NLU!$*aU4RL=G;oL>Cty5 znMw5$$PqD--ygLbT`kiyS~;bWZ*Ce5#E62^V?h5SXWix7M6+4otPFuXlhru+iqv9#y{RKc(+;ASJVus1xojOsVU=(OnR7@%p2XR?GNW zV}=B*Vt-~wEi|->cln@Z0nZx$c21&uA)*v4^`wqXtkI47JImuAWzxGdeiO0BE;c+f zLv91BDalIvP4>C&_8|^Nt=B-gw`b!-MQlsbp5hfvg`ku$2asm}44XQVn923Ty9ycC z1<1G;-%=W&@>6L;rK*gRymHSNB&Z_^Y8_<#xScp7wUi|mb}h9-hz0s+rLzxjeco?v z-EvWA4$d<2RW%~jzBtT4YRD87QPCpD-n|NKaQU<)#Uv6Tlrd>p!H+0Kv=kgFnb=rB zy!b?$(=v6JL%VAPk|>S2elb#sj1Q5Cy0qVBnaaV4%Ac5z#aL0r)||9%%UY|Bz7p+n z_OCr1Zyeq}MtBZsq5jWil%;Yqs4a8?P~30cLwqXUfA75m+$ z<&11Vg*%T@wm(kgwj5Luxo@RarIx`)%xA1+tJkP+nU$LG4G&-F!bV$y{%G}6^e**v zw*1ieQ9W}q-OrspWAwuAiQc?I6{r>uk!-C z+d{Vj^gZ$V)JDBmm2CQg6WY1j<_x1O+otY3IP{u2)Db{daj!I0|J?B$yjLhksKEmf z&U)3*_oLz)%u=H4+ioSlHpdfpuNTJK>zPsU`)ly?*k0_-JH7Uq(`eBr$f#Dn&hEni zJc1wEJsC?Y;cK_JqAEvx$+6#f=Mbto5<-ZU;~;5A4&_L&;DSm2pTFLQGhlg;Xdx>$+$?Gc&L!ZAAzXe z4kbs^*AAMlQ`2)A4gMq<%+dy*iI`gpPZ_7>J|Zs6ES|29e?pPBo%-nOE6p6a`>l-^ zM%v-g`s%dHQPV40j+)VpLm!C5v~UbfBWlNbvL{z;r!}t6m3I9>dbLmg7``|~mz$M^ zh!Xm+C1Qtau!j^o?~*3nm-;=E6VJ<3Mq=yo!SBxZNbq1j|FozVkcj;RuIp|XCuz433*A?X@=4)&jDnm@1d%GrRIB?UQx3Pmvk?UITUHe4^g|TO&y?xG&6P#9 z$6(bp{%E;ZEn2hFVAzY0AQu_ckpG{Ky_g!r~VVho8I>eZ@dhs^6Z3#N|wWFH5m z{oLaI7KBr!X4!}KN^$XQy$ZpYmpO@j(9+UxFSnTQQ9(X@;7#^{d0?A%f1-V{v+z!h z7aDc$tuh^XuigfyQD!#Jn$`Me8O==^c}b+eE!;X}yc_F%Qei)IXJ~$|`yp$!RQ=am zvV1r0fntq+^OJ8!`_q9rn8W^irA;9kG+w=8BDb^Q^>pHt~kD zdYBiw_qk5J7L#^C-_+g@*unBtd!3Q3QXz(NCM9c*#T~3#7gntDIb%tqzY~`(+_Djy zAy?ay4X`n^l#;L_`pjvmwjGHuq#O&*p7067W>ansk?G7~lDr{(* zE;z27SSo)9Y5O+%6@&%WCz5DAe zZ?0~{beqd3p_VfKAX;OXdWI%CjxyXUu8%$?Xyo~Y{tOK` zG@E8dy&NH(s!he?d!!P>k?%1*B5eklrQu#)f>9W)T$H`UDk1WyK?7ng?GI+g&n=Fl zzQEC+iR>P_DK=%Lg7@qT4J64br|~LzEH#lXi~A2b`{59>6=wI?oQc}-5bRh zjCu3Y#|-ECg=&q2uN&HXkE!DLXzjc~$Z6BbI#H<2-jK87FvV;-y11q&gL^LMdKXEO z`T;NV-6t(k9U4Lw>Ue$xG_-GHrhWUQ$Rl$^zBa&a}|j^xe9DQ|IDEm%iQ@ewjGRPji2HkG)k<{^_Zi z0bZetim2n}hG5KCsccpzwj1~Ub=xlzSwwV>G(~Dq%uptJUy4-(N4is9_S&L4d&V}` zOXbAL9Ami#s$HUYHIx3rxM@@V&OKW)<->Nc67=sJ=>&i5m+_T~;h&b@{m$yvH*D#0 z@wsaAg2r&U@2<&ZzAp;-$t-&)khI)O$x-d_>KD_b?m%#Dnm(kT2s$kfsa~VVdD+-p zhH3~<65rgGbW=+H{zx)RFlMt(9HCiX4cO-4;3a z@p~F~r~Fptv`3{GzU5!&m7EpBbo_U5W0Xv2r*XPZk#* z8O1#7dmeGZ#@^9XG>JxO`REM(6G+VEQvI@6$oceVpIIc@C#?8KsOpW`#3;BpDiS>s zP0s|A#E*v2M3H~%Olp#t^zt}m`|JQ^r{S=1;*$@DP1Wjft;`MmX`DmP>~Vk-?)ZHu z;M6ckcT&%=&LbM;9T$pMtdkH(W%4rgSlKXC9R2Ou(8fAt?TeX>FLj&G`?yw=_Ihq2 z-Ohcw>7aWlBXzIsvBfl1q`%<%AI^xb>YkQamp>hL53PnPy}cB*TvnRzJ?!ze&x=Cv zc#}t$8RCpP^NLM0L!=6mI?*|8y>73Yb*Q3N;-Iu5F9nj?KI$fD4$pFvQbVeaXo+9E zEhVnJw@4y!WI`p&Q)Q8Ck8>(tJGbs=!x=|Q8y%(W!RygF?B@+z`oaWy_Qi>tvmuB# zEi=D(uX*|jd(i7H5wZ-`TQiU1bfl{rn=h7G+zCNs`5Gw!pql+NNTFq?ag2QlTg$n$>vJHCc)G(9Jh*{dx2{%ic^>ke7uE|SF}b&tkU zQzD+>JuzN5MHzY8y_?%2KxFag@B95!6U8fD%xZ0&a%ab-yg2P_MQ-x7l1aY74hOVy zcj*Xr#%V@d*Jf)Pxvd-_%a*8G1N7!%^yy~Q#~X|puOAslVqchTuTKca+>aH!?FT^< ze{}lco3;53lL36%2a-T=_tdrO^J_ZTXBVw@El;wd4Zo1}p!XM!ZPvb~Wp2~aTr3{N zU|Uc2z3sBnhJP4}*Jp0EwnJ<(>69G=`_SL2z5T35&Ad0gX$|MJIw2Z$?M`z0x>F(^ zNY1h8W-nqS=B51#YAmE<<>|(oRkXhcg}Bg!MohZl0)zkC^;S*S~jm`ko-!UO`WyUw#A{Ad%PT zImI=b((T*p5wdEWOWRO^4goI#7P9F)=}sq3yF%t0nCr+7Nn>AOsCvS6|- zrD~O#)w-l)^SAV9E@p&;#EAdyMDAuTQ{0Y|{6^Dy27DeZG1{g&9zE%ra}A{1n^l^V zAq0gKj-6^Qi5q!_drnS4OsP-A$5s56@LbD&QrCT3YzXu_bKoR0N#nh>Ijme?wL!v6a`$!a5_q)3Y}s5ZEFiiwj((W13Ka&E#nMPdDZuypI5BB9fD>r@z}Nf zdb!5g{RHxkBqMkC$$^t^Qu>P`;$|$q%Gbvxn|yV#cwq}_JxWugGB0|n z^joI;I+BIqb9{_LhQaJhh^GB$j;5NelksWw7iE#+f*xNSrT2u6(E7H&b3pMy4I1 z&(ut&(W##0aGC4_?%!S#)tV^aOWhR!iZf|-b`mzFkaUnc>J;#g>>`o3a zY0T5tKq+s=ZZDz+9cPzRjl6!+8TTS*mCI?@dg@b+$&up*s^O75eSeyW06N<*M~FR( zyG{1$7P5HUsbuL)-Dg!aYx-<|H(8Za6mbA8gglIK4Mp{t-R?F^pIqorMI3S62mPkA zbz>S9CnC#X=nFz72p5b)aU5g!HqJI_|^7|Em@f3F{OPJDcS^dJ%sCiShk2W8e7 zNA4h*t2bv~(;}BBI2bQVYs8J{FRvt@bf5J8cpVh0D&TiZ$1}A{aD%-?hn^p@{(v>I za3INb$7xwG-Hfd9*Vy1nUo@h&TYQzyd#_nAnxce`&0WjS7~|dfGKTPZo>tVgeq}EC z)pI0u4}(IPR_yd09qs#BJoaR4KA{}#uN`vTM5FJWW4SsNByT2XMRII9(`HFAVg5Yj za?2W6v)l2uXVH1wPR~69#tqHQ#GBGlw zip}aiKSfRWrZ!gwb0)a*b2{RT!8fMc+ZNqvV2k6Ef*$Riut@FO#HKC509o@0S z=2ej`LuMmmf@Nb62tlJD+*6H@9Zn^1^a~84&4wji7npT5UO$t>~0Cq{!@z0WR@C8R}!v zC0G+m|8%BUUhlf2ygi|7p+`}pLNZYTl96$M9={)KDu~WC`!;!wa_WBCnp@x1*Yj;* zrpc2mnJ@1&b*jw1h+pZ?@DrWM2~6e_0ir184j^uS-z!F|b<29kFJR5DoN6sjWNoNb%#SmCMp$yBh)mQtPxt8cDZ)?5 zpcL`4`eWHP-VG2v|LHH>vecs*st?0|JS1EOH7A&AHzTGN?Jo`j0*HV&1cP3&Y>udF zHzJcyAzh+47uJ;?nLgcTt%KXM#>V~SXQ4%{C-smDY^NCxKKcX_wGc48XB?1q1N11A zSG0ZdMnYOo?&g~})^lmEJ(+Xzv$h!5dH+MexZF~`1WPMl(C z*_BXKkq+|3nMv>Ic1wsQy7*osjeJApZ75c=pH)chXRkdzxxy|L`(6 zmkYKwXp_d}=#$>!<%!htVB$I~KZ)9AcO2Vy#=7_qhNWMWBFiqYq!Qx!R8E^7Q!tMm z9ly`}_R>q!Pu3s(g8VpM$V3|GrgT_^IC&k>SlI;^^oPE0kj&=N4%j?2-h+84spjkO zju&R-#~^798CMCG`R5vp1~-LwR@BpCy31?VPM3RYn>Oi==xSmz55CW_^pN=%I{OeJ zaD43BIpLuq_R39m()`maI%mXNOq`Lg({mTmEXCZ0s?mv=hZh49Jk)dPY3ucFw4zof zFL=rXIK`cE{KT3Ut5%!a`k6qW-|nNg>pPu7GnUSN4Szfmp;+njO8gi`$*wySIRecX zr8YX6SXaC^H)*J&O5C=s7usEWd%9=zex~gwfy0zM9e? zMS1p}+V6B3SG}i#=~_^g4XM3taUVU5P2H~jiLm4R?Xh0xJG~$DX38|{iwfg@l99NH z)mP;)?}hVMu$|mLS2{}|+();R2d>pZxUk3ASL@dz*R2iOY9+ZQtmtiC%uDZCd-g_2 z?dfeR$#SkKW4^xV?fR8Fkvl7;kIoY_dw=!b^n{GX&`c4cDh6k#=jD@ zlc-rbim!P4(uNFLH_uUh`Ep^bjp?6rG?=n1w@GErwJ*+VXlRO-KRen)GBo3<+uuL$ zk@1M=%K&coYvwB!cBuL_KIXi2&hMag9_24UtM0oOU_@C!d-sg05%>)E&m9inhSR?Z zFoK|DhAlNZZ4(PDHWiC~t8saWL(9Yni*?a7d2IrmIM`sZ=GBwVAA0CRh`xsmU}Dn7 z8C4^tFA8{lCTvf23{|4*5bDGw-KhBrE}Z2jlz*Bk1Zg&Ifbf&u_G;<+Q=}71Hlz14 zo^XBmV$@x9&2D=*0q(~s3S30-?HrKebpYvJtV&DlFH2xW=#G!1x4JGkLl%%tQ13nD z`OfLs?hG=DyRCV44iYi7c0gx5mH>Pb4bqv9dHPd)vi6%(GbO|5LvyD>VeqMG&`|*f*NypnJ)V9#c1Fi&aC4seX2F8 zldl3CyPrWfL8%N>ua5cXA8=6!HoctP#2$@zaTzwChsw$VMzHbjKNG|Q)WkMy^^iWH z5#7R(i?Drdr&R)2v3gwh|w-M`@1}Qkcs`Zj`qeqNc@y{Z3j!tFY$JH=<-!+?W z`f+n1pHaKdcf@P>j!~ulG`MB(3!+RDTTjg)Vx{(tsmh803L0LBus679iD_J0P9>y0 zE#;<3YFs#S(6%;v_OYHYS&CS3Xbt*pBJRBN7>O;BKJ$os`i3QqiDnIP^xgJ)MBUr{ z;r(01mO)|e;LBrStpbyA+k>im)Ws+D49-VHWB~!a7Y8pm9vqqe z@d)OT@@~I0I$J{<<%dK*UNR$~{K*1k;6m+Xk}UuG9~4M;&H=c>+9y3Y<}Z@?bbp_1 z;*U@7kB`^SCCnhWepUsgHD@Rdha{6MZ&X~MjU^fUd`-`GV^tbO2ckth8c%dn+pQ$_ z756`T&8auUZC-capb!s1s_et@A$4N<>uUPUn>R?B9O5wiy z^ja#B?0)rOZRHwmmCzO~JhK!`a|`lW(&OR9R+S5ihC{W5&nKrL4VH7*KhsFOcgSAZ zVkRJ$w%Vb^4vXf;)LDDsJ=KjAo2?`gynZS+<=>nbT36x-Cu0 z`kV`R%!!i&&a@eF5?Ui8{sgxA?l{g(8}@71lcb*Xd_JlO~(PfNb=@Sk-68~8K|Ij11j_S8-gn*8YaC; z7FcZx@9om5(jc>sQe_?Y5IOcfhbQ_*uO4e>jgfy5=E#^n;Q*%c3ovxOD^ z-h{wKAKJ{+ZWt!Nne8tgZ)FQ=6am((IgckM5C=-PI~tzs{nNA-cjuH}&S zJ~K>RJM-UVQlVozW4HTO;gNwbMv!+xaVX7Zn-#0>%PDY z!M#l)uNl*R``Tsptd~RL_Yj|H(o~Ec{M4XQ-u!8dX{u-lR<|e44N4-p9Qnh+@EUOS z+>{+dAlA17PG@TNJ(08spCMjR<9DB2utQ`DvjIpGI$scxyZ5A&S$koyTeN+*tAWknA-OVfY1g zF~!VFv)I+5Ojo1zp zz77^x^mNP6~wleQkI9xk@ zF$(dSUH#!Vfv609!&;}f>QuYs*l!eX%+%w;Vswap@yrI-r@oE6oT*F>jD-_ z^9&(GvtHBzFGN2!dQ9`CqZ~zBbA-3@SZxbgGpD;6>{^nvGm*Y6BE1nN3Dmy6t;4s7 zfAIsx0Wu$&s&$Xuh`k3hU76QZ|H|u?%r;k}iAfrqWliC(slmlVd!Gk~rXdYFX?F55 zdvV7fr?rQY;12rp%1k^oKVp^d*%ika+zWLjF2N0>Fm2{A+ zX;BIE1l8=2y&avfx{^W#E?mLK$3h|Jy0m}1%=S)Y8CPNhLfa~Kq^H@1j4QB%BSwLS z#nY_!-?P#c+8Q2s{5%gNervN{L;ZZGIVJ8u)O8nTx_izUU~&G3k8LblO~-1*-AX<| zN%H$bMF0x+YrMOsgnG2WW<~SE128*BCWGIyvbT3+eCW{pnd)QXZa?En)9qaxfoXAk z(uj}UZq458C~>;M(%p4!?f%K$FzTVU0`IsNhf>MDtc{Xs@%zBfu|N*$D0Lu`y-bAX zNP)|M9Z2?*ZhSKLK{yb>y@Hb1N6`T(zKs+aTm6fWjMbX(LWkWOvqz84)=ZLuKEqd9 zk68i3ldI1}bhLGAeB&@WO~Iy7;7oo|KCADP5}fE0k@8p-z&VOX{_ENI)7I7&#J=Ay zY<_J!V>PR*Ma*&%5zvBxorDhdoOcl!(@1z{PBU|Cx?k+UK%m>I*%G{zV(hb?$ITm+ zZXq?>wWE@wRZ2+oD3a>7Os}FaRaKcp;1gicZlelMe_2oF*y&wZ9gQQ})_dpGV9n)q zG5-Fi)eQ;hYl6O>!>pTYn!u!;-5#xiNZ489Bn1vdw7L4T<4qP-07Rxu=2BP4TW9Pa2Vf}}bVlSZ%*V>Zqt8KGh zGS=H{n!fyI%60agDsjVpF28^rl^+`4miOIEW+-3govze=e`%DpV&PW^#qOGcsSvBC z^D8ke4Hs!RLoi`a%$GU@oho!~DOrWLY-+rZi{GgZEmk&XZew_gO-Myp_^;@!{-DWM zyI6c_cz0VzoP+bDPRaU*dTbL>+lOtE)sW3@qhzN04uMSMkvgz)j=ys*qDr%`g zanZo)>`b+O+0$Js1#cEZ?wH>m;kF@)=ud$4^(l72a$?&f7WEaLgpl_p|DY2u-!`o4 zrKQd~2b?YU<_W^%NP@2t?tpsYWrJND^W8j{<#lYat@3SwJsAE`vh=NR@C|{7{*x%z z#Ci(}%+#rp(eTCV7Y-dsWn;!D>uE2Wjb(Jvwm}6%Y*wT}_-6_o2=tV#hd9#%;xblH zn0Yd%m8Eb~xL(QMhBVlbI;}%L+AGV+XJ)KXN1ho4rL!QI&~Zk=tkT!khDFXGGWtv zC+sq~@;1e-MKufa%u!*wXG$7Nk=GS1m?8RGJlkTYnCzb0^&UT$c!`zK{Vi4D+Dtxi zA=PnkVjc1Py&|F$u=$>a*$2BACL753tiZ>;@Y>!lRr+fN&@)<;;@Bjat|<8#0kj6y zYCPD}e_e9dTE-76hT_>5bwSg7hCm}|7jciRKeet*59cM--Y)-Rr1IP~GPoIOjF-AD z$9#`uGVMv(m-?)58hv*`R(3UF)Czqnx=l;cg+oIeTF*Ez!1wou_#o|sDz6lL-UlGb zy|+Iiw|!3v{yd4WdNO`ju^(Et)ptfC-h`AnJmnyb?&ZrXt}BC0no`qZCXnbQ|;mOOScyNFR0?_4NKJJj(GYxO?qHD2HEJDa`W9A|Hb71!DN_>J12 z#vO|K5g4Mj>Iup7h6LlR{tAZ>x8G&T9o}|M9xJ=iq%kn4i%R!d%vMdeRxS3xrgg`G z^~|y8ho4Sfd|FnF6XouDOkEa(1S-i)9Bn7o-PG zOLlt3)v_*OcB)%L(WX1Uu%Wsi-ZEo?eXWr^gv!}1s5%cuF)Inm`t%G{SRT1fTMo7t zV3w`#t|@(R^8XN&OQj$4gWf$H?s;~Yf-LE`-%=`^>;(nFVzeDR!{R+pn8`oB%gDGO z@!%a6Q#D*3@3hrD7&16F3VmuKwHM&v@LltLr!OfEj=#eROJ9T?n|7)LFLYZgiX&Ix zzN+M8cKAMZSRv=MfqZ?n{TetC+GT;?ND=!+bVmtCCG|t(Mp;+YNT~%?stT6t;7QtC zoJ|`!(WY9k@7nTvG43U*!(b=F5T5J&Eb`!2u9RMX}!A9 zn7Y*yxUH`9EKIB`NW?|Rhwr&eTQ{XRYwWuTg!c04v7ZrX*&(I8`pWG39O9viYw|~u z#l2RgVy$1zuR=njT{mNHAML>&32a)CFjKz#Hsez=y+d0Z>?p`-vd^-Xlw=Fh6czWq(lMZn#hSGQPG#)w7gF;X81A1*EI9rkj>lSCy;m@-e*tNxaV}6AEc@t z>XdGOl4!la>c0a{FBin)(z=SY7YirzrRY>@$fC7bL z`^EMPPPwK0gui;}N6`p~eY49;efb<**G;0L(^JbWKJ0MjL?uoRY)Wi2g6PKeuqb7$ z8`N0d(0{|6;{syi#F z!4@zSd9l@u8~F=lWoEow=-WIkKUBo9U^Uxsf)ciZpiZL0BhrHO&Yo53 z&JGkeddPW1{q_{SBq};@+gcS$?T5CLQ%d>UYbVX=^bj zM*R*khK{uBize(}IoG$a^G?2hm_T2l8+$tpWD1Qf{Djt=)^(q)t+(UUx?G9WOxTje zdr>HLm)tarM6Fs!r`x&+Jh?O~%KAkFE=zHl2Ut9aVp4 z_vmvz_iv=D7?V-kb`t5X*EjArGW7Y&4+|GwczgMa#Q76PtL}H(M_p~}I6aZhcVz9O z{WNV)Ok+wsZN~AcAG^;SY`d|4PP>ogdh#@V^5H>+;~nv~k#YP^I9B(EG+T+oqj~Y+ zpHi@uSV5iqes`RIu>t^q{poefxLwfo_y0O7*7BpgpI;}4Z&&}}l+N(~t86Ku`=X0; zo_=r}d?)xLN&X-3 z&!YJra5MD@~aH-i8G08Hfw5F$yDvGt7C z*YD>vM0S(MS;*UN%vVRJU8j?c`Du7qHE|{K=E1S6t^$CMj*_4MAY8v0QdjwAA~#m! zYib?a*t`7kryHP-&zv#E2=h**d`N#-8gh_ovFjP1gZ-$6^Qo05s_&C5JTV;Wfhh>;Lbqv475S zS*Pyx?76zvHp`1&X2!4QQz1szT(}un2e3{Dx8t{-k@|UCq`gS|9&F_DS71tdAs57X zP)Fx|5N++2_ZR>G)Z_#pA0XY2hZ#0tUcK7knb;@gNy6*@y+DmU76Vb zem7#CclGs{0|5D-llJgReE0*|>xi-0iUr>i_R#~A#fAQA##CZD@<&LBE47Pg0002= z+zK(sMw6LMf5**v*+bOzW8>z{56|PB?;hxuU%xNBKfZgBR=?R_xW%QO=li>9I=l`5 z4Nkd41^HVz8{We)fXJq^B~ufq>yK| z+uszr>Tv3Vy?n3yoss`rZ=OcBRCwYv-tK-paG>6AOmD7lxw*J+yV(N(AjG^YQ%QBx z&^}Tf{q|VvZ|Ls7WG~z9nO-_`JiRfN9#2!hJ+m}EJ!tD5Z(L>Z znd0=_^Ny^2{JiRCzu}2JY4>=0US%DaFyKXXWOYL4^d{tWrZqEQdN_3-=4;TS6e(C=BuM&H5CxIFbzG|R45I&}#E0QjaIe!9%@SZ(8@Lh{Zh z#j96)w(9KHCWdGz%wJcm<#mO6UI%MFcGqn%(us2zKiJPRT_r&?uhTb>T5(YtUt3A~ z{%=)xS-;_X4}bOLR2l3)cKMoy{*+j(@i|~=kzBI`wM12i({DPec_jX(uij*b}4mR>QoI6wf?mhZ(C}LZ%i#3TvI-m znK2ac>K`A|*z6Bji9?RZthSKCnfb{|N0pzsZG`-x+51}0bmBLA!#{)o00aO4004e- zD=Ym%fTEbGjT}5OP5aPHUnQRe&HnV{wSC2 zo5|BOc{07VXY76Bj*PQ2u6#IBC;ONC-+aheIF2lyOPvN|8rd3mw15Bpv&_6KvNaaN zcT=b7zV%Hi!*Cp_H05y^uGNP-d*Vn1J2BQ|5Po>;Mi^5-ZQIuDe3fkHgKN_y|T{s=J7&pm9%m|1N~m_Rm^1@(O$BL z6v0NTGT*7|eRr@n&sL{Yjz?h{*O;i&bWOp&=mPg|ydXA0s$zNgw{(eV=Kb+!w=QpT zy2X|QMu4#WyuJ?ebKP{p^TfH&3%+xE?wuDNz=7Hj00m=TG z-vfR=-{<@M-uHT*f8M#yo@?gZGxt4n_slt~U}mNSTm$|`d1y~rghhtsV&`aR0l9=> z`853P@*?m0Rize7;d12vR^N1^wv{jd{LZB^q(1W5*;>3j56O zA8`$Fh$|_}ser{+5 zkV(xOzs&HJiumgi@7L>o0fpB9<4cxM+>WMVh|ZGAF|{nVNU1h2sJ7`XXYMV(chv>J z0=rz6OpD~4|JP-z5pVK;zeLQt837THmt77dT@EzjiZor0%-B~P?gl`aiYPL7IC4rt zIJ+PM;3etwrYBYwekhCguMjT94gezTBpnVUJs>v}SwypowmkTTL1q?|%m zmzS7wB|+={r^}!$8Ga^pWF`$JL;9ueCBy#K+#aT27v&9u&z>SuaXX(Hfc-3nldIlGEP;3faRh{x*eE+CLo^EP?8}A}GB4|3rs_wQ9SVJ18Zo_Y1KKq~Q zBLd3JV3Mda?GuGp_$@;M${flVGN%aKm`wI=hHSF1a0%%=-*<{n>0nNuu2xO~0Dkya zTKwFRWi^){A ziB^r5M)f}i^Ve(^CY=AvaxP7TiZ^`uZS;-*WjUGj;Y&Q>)Kbwj8qv?);?07R^ODln z^S<8sAC_YtoSPV&`#Bi#Ih;Ny-XbVDzwWE`&*F{x|LgT1%aL@X0WZ*U#2sn=%W_)T zNyI>FDrc5E_`62IA&{X?;!plt007V$c~9obkGxl88B^pMQ)E$57W_Y33bXL43ezV$7UV5$*U3OD~AM+lt#Mj}DyGe%9y!2JM{p_&MQQBHe zQB*$+aQRf^8NR(nj7#CLV1sV&2Jjvi3!b7NzgtYaCkt z*q1nzagmBYh`?qKg)bOWmf;CXklO^Nm!bhr!-STQb0il%!c)@D=aC zK!6296@ivCOJ^`UP7*}%B_i8TQ4<8j^U}e<5!hd1qZO@S+2bIs##Q2MZ}N8;D0%*%6QFS zb{L@%J?x4&3?yDveM!7hS<&Khgk@1DNIVZ*pcQ-dxMdi7Cy5c97e-)Y$`#%ofI%4Uwnp+Ld z{2~=Yc@ZRjii*MbioxuNRNr^f(s7Ei?5mg0Eb|nl**mYE<(Y(DKEnqwSAn5F)fZos zfuU*~9P0#9gTW^Gz_B1nkl&ghKCmAQHg33a)sGf7su@D*rzkB&3yU`lVFznqzgW!> z_IPDQ={&GsNLi<%H0bxn!DpSxAYD*kp=F(#O466?0-tGGf%y+ME|{`N3`$AFiBFn; z_s7n>Qdt6!Q}+z-u?M6=@L%FYLGFoSQ#yi*kZr6eYC#E;m3~W`O~?!Cnc_=^FR*ut z&uO!jHNo^}6J+mZt0+CEF)a{@4MwkQ0x+owhy~fuNg^f=oPMt`HpZ2(}j2ZL|vdt=C_s7%m2uK{^rlwg;> z;w!N~5!f3C#`%_g6`Ztm-rr`d;@>6%?In~Fl+Gno6g0cbCdf4Dw9Dp~*jP~U{zRP^IMl7HewB^^gD2*;NBR}v4 z&XeeJo-e-KBOoq+2)qTevU}kAu|ey)(k*EzhD)uu)RaqAyA=LEO)GFNmrWx6E2tHF zz~83Py~~MPv5#wBL9P0#{%KlCgBE91#D$0jO?zAu(ti`6;N$^(NGD7AzDo_M>wlqS z!txOSfVT`+i6v-VmrTEu#=m(cd(MAq|LfURZS@~O-=%Ouc~?m;$EHH$LG}N59T4#e zqe^)cdgJls8gW2ThZ=lFKREc4!z7H=o8gx*!Fi`VZs{42u7~;UCu(&(~ zo1l^wmVutjDzA#rD2x>JX2C3-#E>nJHQ;(c{RExhB-mvO zD>z2b;;&TVvT1y2zfOMvqTT-m@Eg1|>?^=KQ3e<|0{cqnlz#7|{{=jhriaD;iwbsW zm;ZEmc&S*5e1FyCZ%*EFz)n5Qe=-=8U762H$lIMdsLc`prYGfa&?>v3}*S;3P z@b_Wxn!MPCgzIc2%3zh|-Vq5J9o}~NQvV)pD*ml|FbuE$A0PhKjA1>c1**%~; z%pMTYei0qX*IPRL`I$m1{zuTi+yOp=0WB1CKz@H^Vi^3_)c?zv!A-(*9xwq{Z!7K_ z&JSD4k>CG{cP(S^K}r;5f+Bm&qt_9m??U4A16A#PpZHt_G;o)L{~6>6Bpg3>+;FQ- zS(?|f3=vEDDYY_Hrsv*kc}*)8<8FF7_G*Hcegu`%n(LrDH!LV~3T2nd>xh>|fcZP{ z2>`A?c=-s2K;+}cdjOBf+sJFcoxAr)+r>phSShnwGwo%0=+a&R!0XR__(7jLDA>Oc z(=+B=_vyG9;0bgOPQGoZ^nGO+W$mU<7mW3W&Fr=Sy5_4#aWy2`^RAS5FCM&hls zto%Dg<^LQd`1tr-^%Vi{K0f~(7J$0-Z@KLFc4|;s=BJafq|i+p|OFHk%5}JrmE*|&UUNF3m}gN$T0{ph3ncOg{D!Pi^pAP z1TKFyyZzIMwO?6ZyG^k?PoHm4EZU_W_lj`Amy(WDPrhtT?>vvPI?hPbuxzSn{0eti zLfsrGZ3j;!KC5u=K(`MS##C2|>t0vLA0-Kje}gce#HXLTND={n=PA{abMI+T3{=J8e#sxW7w>9_WnkUDccYw_9AKr_!1)Zi(GKwM<=DVz$>SrDyU;X?>XX3D- zwU1BO??v^p)85gO_MYFjW_jYA({M%-97-XTBPWtypqr1k;@J z$)Awx^3Rz}Y!^3nHaAb@kL=s_kJp@;y)~fcwdj+mCkxQynwbOFkwdLsSbfS)ze@iT zwd+7_AgilUdy#*IWBoexmsNpBRAhXc`pa3DtvsfC=Df3*M?P(Exm#F;?Mon%JVt1LD3-pk#)kQ*AwQln}oQxWEPM1N5ekNy}E@*Pw^?IC*MI;*}xp5Vua zm{pXRcVoiHGdN=FC6 zI$p-37PG_c={ni4?R+e=?tyR@+Fp@>y4u^a3By6|hL6ZRu(Z;z+3R^F=)AM_9*U7rz z9pA~%jP@!uxaP--SOA}0q*u|@AAiSY?~6s9r%b|k)a0wp7k;TTk<=8__M}O8%Nm%c z;YVYEmIV?h4Lo~`(>4C+uq6Fl?91V@+L-JFFxv^osev-wD-&qNgVG<9Y}mJU?E zdt~7y4P7CO9Ptgk4S}-6PIf~J#oEW1I7dxVc!B|)CZ}9s9c?r$a9UV*Zu092=KJfpi$}&nb`>XV zgRaiu=^+vU=PDk4B%bC&(mX^Q%`E3(}Cg+a7XgdG3ksvvD)Hb%`>J@}i z%E;JR)DrM2EjnFsUQ|rQyQpRWfSXIQH&OTU&z;m^3b?SY5!NA}-E3Yqw9n z7*xOjoDpIanISOw_>r6~@hbByQegJeLbFU?vI}2UqS9-H3x$Wz3=90QFBj0!=uYAD z#`q87Ailtme zsiZpjtwg&PPtwk1RA8^?P2|0iH9h6=WK8Z1;4pKa%YEu-gZpxhXaGcFkYuJ1K= zf&;>gz^}an;hpHL^0nr@wr0eq1J7~N^V-M@sLGoF>4qY`^llv^?;UHRV@yu7Irlv< zxUCq0Da@ol1+}@9#wN$C6krYT}GC*3kg{|^V~@ac@$yB3$%WI@XEK~ zF2|Qj3cLPzOTG_>&+dHjo|#NLCiR~6UM1g2$u+mQJm@c+@>5LfBNAh(JAq>03*-oI zj=0g6Pqu2CH7U3D;cc94yQ4hiDKq=-G;&O__~h+i%3GQgo|XISSVo7Vg1Uvhb3-Au zGr*RgPjmKzmtC_Yj~WiB+=V@FBJgOm@XOci=AHQ#zRV0Pe0I~dbV(hl3^THTQ}7Do z(xC(o3wx5Vcqx-1ruUEO7O$qlR_#qAD;n8Ulh z8EP1}9m_J$U*|`^u1Tzxd|Oa(K%GAO>6OvHd@yUmZp->mi|c3zbU(fB$vvg%-*#}S zZS`t>Q^+ww-m%oR5dyRA9MFsTXIiC|2xa~l3g%Jp4O%Sv2bI1^pb2!LYimlm8i_bJ zh+Ba+7orr975z_yY}_CedgN~}oX|Qh7-RysusSZ#+WwgXNp$n>w*MS*>j&P1S6Qfw z*Q3Sir<_h6AGls5GO9-T1?4b%K7M>D&(I^Mj?B-$zw6u9p)oE~ZO2ki1al%@q>gzx z2*+)<-9@;#FJz|-9F*87RBJSz7wpeq0g1Qh9%-AHp4mBE1l>~aAbmiynNoG1u;AS3 z=-X;XlK(-0H-jYm4C~EEkxL3#9fqAn)7lRwj!(P~p%uriJN^ijCtGyf{2u5J8Mp#1 z^9wL^bXDMZGcsXmE8?K;a3&YpKwJcxAh#eQhbl zAKX%Ub{x7>1#i4x`}1{0;UsWA!yTP(+S5=`t9O`dL9ZfE+c;65@nrw(P-$vM2wHL2 zKdiuo1?~S(sB!sbJZ`s>;28iI< zXl!ElA2Z;c@Nd;9%zHOgp*ik$-?q9nEJxvQA! ztf#CRY|+(RvZrU}H9qNhYi3aVB@qLi<@%+lk0;GR$ zT*lz&C}lnkZ8h(@)*Sd}8qJ{xeQMy=ZkMrxM=q!rj|GqnAeN6X9#ORpN88vI27=5d zT|#cQrPR6JgYOCxAl#M;T`1d%hYp%~?b=|%B#S<$ZGB61W9W1kvlEs(Fk+BmJ$9sm zYU!vJCL&{W-IFsY2~vdYy*$EgnrlR!L1u3NsTF-Z2?d-arCAY$+F_Lp^rXZsK|%@5 zqS3U|ldSjs?TZgD1{z#q<=_(zsMYk4c z^nepuV1+^aUckFwyJr~=$Snc6xp}x;aKFl?#u?wl`3@!<=Uk|XQE)3be(oOVaJrsIM=^9e#0O<$>T*MRmlQhyocR;2_x|28jzin4i>@p701@z&k?R& zK3K_dOPbs%Tv2%!@R&s0r~dNTC@2a^wC^tc3XVI`V*CJA|QoqWFsx0Z-82Wp7RRnR%4HZ zlpnR$GG|=Sx7QWVtuGEp6cd*7)!4W&3Lb`mJCknhq63)08)2n_!jMFEN@1P$^&)(w zko=4T%8oStCz+FcAoKhl-wp0zi2O|}|JWLXUd70{?bT^zofB=?HgGf_T1jU#C_#$k zJ5$2Oo{MjsZoOc=2l#CM&RAKrXL)H6)6Oy_qkYotL##tq5JB;tW=^~^G55ku5meef zv{T2KsQOd_UkkbL&!S;u<*NjDBe)?HW*9up;;r$_ciE_7>jKu7mA9q(M-}iHnC0T6 ze29L~)we!XtYrBZ&5s}s_*xvpW%;RlB;ADmtFZf}*gfY2XlJpRXbleX$+wlOHA|=04hyKq_I!S3f|9c-;#P zMB-wNBW-$@Vq9ZRuTSq5P@3oBjpbJBPVlTQ<_W;h~ zGnzs>%KHTr-~GJ(HIm4dOjm!cs0=y*tv=I6VIv)R9C;-&ir}IZ(gQC4_c6W@t7P7 zX6+N>tqsnmu*Q)-WIpL!V#uodTlj^qMIFlTITm1gi;pLIy}B?2zUk2S?LtjBZVfM_ z3OVKq2@+JQmJ=5HOguty}?{&swM)E0fZ zk2mwm@R2-Us`XsKzuJKAY z__j)RJ@}`{lEnSOvzgu<*Vpo2&^v2ujS{vCy4={%$g1L0wNZ!$s?JptGfM#w&ld!C@7tByCz=1 zvG%FYPo(5(1}295+dwOP3i9wXWt_I98pFy#pYC0@QCU(N1T zDBQ|*=OOF=s%|h+t&?}&K4dQ{VG3^bVzD|LL!XEFw46}e+4dLDQ6G>iki)uyAy9__ z6}eoLp!D+D(d~qjf!=0x*VK=Qw=KMY{>qE+6@J?nzfLsM!(?g2y+^(7o_hr3(jll0 ziJA7(#%GD3*jYYAsL-QJUP>TUT1Gi zBiV0fE3mY#GQPc(U%@2AHwiyr7u?$`L9a8qD2+BY538Ur7VL_wb1Nn+a(q3~Hg0^a z-<;a&Urf+^sephTOxa;aVa;?FC%S- zWO|8z1fZIV(nUPgBc6`Pe+8dnp|3}kg{9O2Rr2v|MFSdl?>;LI&I^&wuvp(d#|B~MV$X^nB3B5b+lri@{Tnb}+3O6nCzjl_5h z!OX#CotM{%W8DetqW}p3=#2p&y;{iu=M;N**(CcsLtMY-Y`s#@eAQr6R{^6xv|%BG zqHrGHrJ%GB8m#1!k;5IgU07r1YRs=M(b*i|dR@!)gQRe*(EV7gxn`rndBahgDL0+n zuYQ{_=2O3pL7!2$jsvr_1ujN2qZYlQH`0`|_*{UfFosRxqZ%w{j;Y>^p{lCM>b|1Z zMi9$LLr;hp9Gko%<-^7GwkWw_s}}XA&0ba0`%-rTEo~17jq^GvD77PIZbJryk~N8$ zNz-Au<(Y>H1A8nSxJ4<;VJnfg@(NbHiDYWK@mvnX^;|89*x!dK35czgWon|i=^CSo zh_r0v7QHOvH}yGFI#qc)*op~NbryPO<7$&?_`FgoPu#J9vke6YGdOH`+%d&=TPen* z&7Jjh1u-veh z<%AA*ADn9=94~lXdET3MKR9Dfbk(kLIYjr4%Ht57P*wK)v~`cSNv%Cu3OOTQY4T3+ z-pcTBsr}Myj;HUYJNTaCtX|NJT88c!bFlbELP7(r6(G{TpD7=cyPu|y+BqTAGDR2-Kg?mlh%D3L{h z1kzxbETCh_3dv56ShZEEnb~}PSFOuEBb=>@O;E}#$Ve5A>KTXFz-C7hzqFmryEJn< z2uU@eH9vfCxUf%wvli|+dv1Sl!hhP}l!<iF*od~?yO{qxAu-qX z(E@Rbcl6>Gl8sQkB+r9>kEAa?Y+2NpSmqwov?bT|7-q#(if!GVPwe1$7jNUFfB1)l zh2VFV00H~X^?X@@8*f$^zC-G*C^!YIG0yYpXY%_)>$b{smLX^UUE_z=azfqT&xcVT zws&|Zw?ra@hJHIp{!*&X+FUF$YS!ob^`}eg+e_;0Q~2I`5A)|11C#THPUDhxy$DF- zFS7S2_Os6|c-}fDVJhi^9y;PryWB&>E8Z7|<_{9IYh|GQ-h_P0DV5}HBc1qZFmU^F z7j{{iou9pX9DRZvw&B~2Bu#2yLPNgu%(xkljoZ;MmlSGRUeoiNFYiMTBJBE^l`4u@ z<)uRi|RYFN12|>2elb9MRG73Avg(y>T`PS2J)`Yj7D{KMo4_RlVJ2J+h#(= z>NdGwl-#oecJBCUQ5iNZ?`4BZ7*&dRp3zO9G}Ee4+Rd`$q<^f*%>GUe%( zC6%uA*bjoASX&!MN$PTF>ya8-x1ML`^r(Udnz|;=7IxbHaxCaWoMSd`M@1gx@S*wf z1D0El3~n!)d&?AR|Db%%TJ)qYUuSTw#IV>4-Wjhg-8DH+Ev*zDD z-oB}pY*x3Y_YsZvTDssQJg_kRJzD37nAKL(AG-_-SH6Dfn3j`FxE%?KE}7AMA!D`c zU7Ds&7U!!9T|tkHwG24KR!9L679-NkkeXn(G<4pqDir#az2|oWl)G}CbH>;}-swHw z<&G09LM}?R_iz^24|@$o8uD*V)IU4OEgFAsDMkVBGKsMWwvhiCWb}MTGp@Em2*+-H zFS~J_c_gGv(8jLkdc4Jb(X+A!EAE`cw4bydf+XLcDagu_SaouqMmw3!L1>NYv&x$_ z!WgQuIG`BEhg~-Qo?b7yKfYhtM;B+fruW4)Ntn|_YHEeJshzmAmd0u3*6)qVPFOrp z*jXNtF_5)TGGP*omM`La6qxl`c$O^H0fWqQ%@u#BC{0yfM`q>4Qbg)&8r@Gd8~7bw zHxk7$1=&4;N_~Hl)M_Taj8^abD%nuE zU;dzQd^}3hZ?bOmh5;@UyJ?nz-v{)>Mk`#|78)li z9OSsw`AwIJS#`xzGyB3R-UOmj>DKp`SZjOzhUWqkc zYQpxo4idfpXq*4Y-HEDdL8zca0kUK7@;c2`!Hg@$@T@9Ootbk+7eNl_XWP#!32Gls zn;oh0=s*)Du$NCNmDcLK`C694*;-t`xbUxRb9NouN!L;XJ~z&6>22MmZX4tupcP3GhLOzcG0Qx zC$!SMenz>ALqSQvy7;VXlFgC9Da&iEWT4-ZJNf+#7jnuzZlU(+lC9kl(Y9?aFFfoG z=fcgCvJ01vftCyNXI0}(dvpD@gy7evVA09#WuD!d3hDmx;jskIlbKkDZ=>VLvY&yj z1}Z|-ONC#;S<<^@ZY^8ZOWrT?eWpj95T1vPdohrdQlNY=;#soJlpBW#T9H{w>pDiV zsrcs*1!cZIkr7~?``MDx>2kdMurD_U9pf-&81hK1Yib+&vGl=!rO$x#IDXOh9gW-5 zzfXM?76f@WM)6F&a~5TqlGY4YSG&mn#L;SVlnp3%BTkMhWX^?i>$IkvwE_gZHDhiy zxKO<7w12J8;y!S;7yBq^YnkWcQLOcc-TmScrCWm|Z3?mz=c+{*XSxF0$r9Iml?2ua z1U9j`KhIFNb?zZy;4M1aspntaJw}WPe`;Y@S{jqrH&fNPvJV7dF@4yDtc|hch|cqp z)`>^7M(w`tA3PtKs{c82zewO+ta^hq(;JX)^y+i23rQb3SFATLOebI$iF7335RrxaA;|%JZ1w+(7 z>snV_EAdpGJkk5gx^!f{>K!xB?OdmrvOL(+$F}?!XdS||EvDA5q=-#~Z8O{!W;$Ij zNTqMI&~n#p)$*@jy#TQSoI}Crhe2(I$TN>P^nrstFl(1=zYb* zDXz8Io{nix^ImXgI=8{O=~i`;R#+a^Uid3?O|f}yTO)}7>D%TK?!bhAn|Glgb3)-a z9$b446TL_z)|Cv;OTU}8;^5KbS-XCc%c`wlhAvnI-?0w3I6#ZZQ)*D?w8A?;tG&pv z=P6_QFB{4L9t4-#?{s_pc~d##?Qc;ivmCvm9asCJ9si>Y%}`+#4&Y{Ak4TxcVK(Il zwDah@Cj(1`jhLx48IOyZ3w3R8cMdY$C6^OYyow!WD7tqmiVKZ*0)E*dRLE?S^+l!9 zQ&r&HusO)^m`=NHedf^~w{w*c^_=O?GW&yVtRbj!ugnfBtM zb@kyz;!izKHvt%W3ZB<5W|L}ahTjl8)tp{Bp(mDkUJf0xT<3dEs@;dj&Dt4jSI}$3 zXQ1VIGiq)QhsjAIX^lima?<1XbpE!}|80VxiAtcoE@V#F(|>m|cgy>L!m*2q65gFQ zi<}2~M<=Ap3yEsuF3Z+}-dPiGk2w5KrfnHRlViFzLY$W}z504lQeC=*Qx$*UQns5f z9u{xdc=hJsiaZ?>`phT;Y|aYC@EMJ}Ni36iIXr7kxd9lrdERV&`1Zzm8TmZfz1(|g zdz}5=?vI2IiuX2_pBT-ocSylXNO_mz^?IhL#(8dpd>&~F%Wdg>{;eSP<9Ni4PxFcE zH74cwwHkE~H%b+R4}7uLFW^`SnKyvYwl^igQBf}zPM~8=nxRI2UK|Uh3FxFwd7kiP zKwMs#TIp4U1#;yiNbS3?Rp1jmOZAZYJ>dNoH9wESx4D07E35Q_bw4d!Zv9+Xk|pqB z;ns(BvdjT?AhajAELk`H*LV*GA*|EXT(>erzKy9KF7Y}W?s9S+Pe44-LfF>x+of-K zTV?R)rXM`7h{bQ4h<$ePYe~|#iI|gZkN&HUsS4t7-BoIPGWXLwr<3d|Pu&mRY`!fj ziM^Jaz>gjQpSxMn5s`Tj2^n=P0*_P1`dh5IcVy6~is^!yo+mDIs0| z^|nOFfV|75L)0gZny=2(n3iX%C$#XW!UKjbr<`JyJ0ELr6BMlEBJsd8&Bn#Ut}c^?_UkrB`+@&-UiG=oywBP zy>!=G0!O-J=-BIqBA6fZzoC^)zs1fNtZdW_8 z_&|SlbU5g}>8x=c)HID=T8?NLAD9&=RbM!#?7dJ_wLS?uu>xB2KW1H^e?hHgKFHK6 z=`Gt~4*kyuTh^u2kgkICML{u8DRn9!-5HTHzwSnXNxYd#9V7@d-_v=`M=kYhDM*j*;NSy9lyF-Nw*ZvNdb-QF!r2Af78>g6q|2M|^`Laa;!h2G$6+ek)w6lwm@h-eW@^%7T9-{# zK5MjVd){otnKL~nMzPU5@nXEo$YN7x#Pd&`D|B=kB2 zhp3@Y5C%DUmUx=)B?)|Xf(XMQn=a=jl6vK=>IOFKeuVsZwww1zT_~RmU&*v^`J|m^ z%ZNj6k7++%>yOj~fWj@0ar(gtUy9R38r{+RHntm*14%Eox6i!l)iWFv{(K%ec#N?( zASKq_?qz@XMpNB`VBm&YxtZF9+wqYhZHe!zadj^Hda`QXz=w~cIedwqc%{@#U_RW*SuH0 zAv)>P)nv4)dn&I^Xy=0J=Yrk}OK4@f&M;O(MODClR|{#_aiE?_*k?DzZ>Hqla(A%S z$QQu?UwTt_IA!#!`{bvX<-)L8)9V)WVAS)`mAlj8hxhzUZdcb%UsTrND{R^0vE6F1 zL4VDBGF|<~;)iKqEowRIR~^&IWQd32QEE-e@=Z^ok=gwsV`t&IgV1ypFcWpCIwz5w3U_DzjuY?Y3-M z=@47(jLly&T|AO!lR}jvi!;M)7Oo33bMtsRbEi>Etn6k32g6Gd33O~^XSOxoQmDCC zmOt6>ikPdNyEaz(36Xmu!k9{Oxk|0z5AOBTXfa3J%~vyO&Z!>=t+gil(3 zhFD7*#<41|whDdwx3g%0!iK5hbnO0TO41>XIYl1h4GhydCzEnqxXs;VPiN&eBR=UU zteP6^joQk1-CNKVav!UAS99}lpK#*Nqp!{7wi9Y*zIkh@kZ&JwOV{@@l!h!1?{{oU zY3~#U8Hr}_3~3g#c5-v?E5(GI;vd?`3fsG(IZo+wrc}xmJ0g>NYajPm@ka~IU%cr` z=&PQV=m|pdMxXU~6Da8Qv1g_&;1TU=zqbpojk*RbHH(wB5yNE&CoBmG5aOL_y(X;6ytTPbvRmxr>tHp zFZ%?Zb`fvCQ6QtZ4jgY*bm0_RSElQ1XG)H6lKSvIBB>3o<07Qqo2J8o7|d3vx)(2A zrn%tz%qAzQdf-}Y24=@{XM?uG^P=p-w)NaBm)f|%nWc%Qu#0f6%P)M>qze=*t~a@ose?~KA%pvei}1`eoFR=#E#HC$@bf8CF@bViART9#rq{= z&+p#=7nK{qtZgRJ?QD} z!c2584Sm+Np2nod7lA7vyq+SC*^RJ^uv-|mSngVL{wpRAH4aDGH_v$L z9d&)|O8;?em9VOQKGa1(&WyK=*&2HjwkOUG_{6TF`G@vWycjWv>9V^R#+3zuWdeK=8AAh~=xyvhBzYw18n$wgBz-M1uSm3_hx;oe~+ zH8*E%Rk21=<4M9+W7Ir5fRcfuL@QD)`?8Tn6uFPuP3x`9-`tKE>&e^VB7QPaG$9)V z`Tiq&@vxu=?W^kkyRt!?+jWKmZbOIcJ6P$76L!Eg{!S2to@+O+@MXWxW7IZJhY~kT zP5(Xgjki=%fNIv{au0O z5|k0+56ycW`L);2?r>QW#0Z+#q4cpK@0}WV&GL34i}mVltbVQbvre3i`fQt)KVFja zmkTp{$=zu?o1B2=3egj%^def}vA#)-kcg!jKht>lMyxsg?vC%Y&hm0;($vKsW$Pcu z#z9p?S0mGQ+%dU@S8m;Ji?*D6a;Ak+^mEY~smONQq_8oLU`+d#*^6T)>G>EnM_Tm-JV=fl3>yTs5B~~RDxE17m zi^!fnZLYyCBjrBwf6~7b5pfVA~N~0%h=uq5_3yTpcPOHdg1G zoSAO6XDu4I)ngm+lhVbw>0T9i1ga&LQo zlR|9&7D!rM%fo37QK=?tsD2=vyFEqxv@Kw$S`e|V?@_n+f?Iu5zN?k9b-PYC)6TX>P3mN}NwM&nMKet;U zH1+yUi}d*L&g6R8>qiOYqAgF)@DtvN37ZQY_;Sk}k^esdP6e_0Uc76%)HY7qvehnl zE4_ucH$}J^on^>O+f*cAIvqS^mz7;kq_lOdpB{^ut`pw?ntZppCXRo-f|-vcj$#t+ zVFFNPOH`9IM;hfn=_E=*_IHn4B)M#%DB}543oG^H)@+7ee>;|~!k5%6vJ|ONdQJAV z{ZiyEE>_3j(_*^K_N)6UOXMy~c=RQP0n+xZ-OmpRyhNWE+HCMY5DlWRt9mYf>R*J!ic z_gg&v{Rr+)W$y+13UmDl>f*|J3?=|<&udTx&b)(6i zHe(v8rVkC@b8wo}3QiIh`C|dxvMJ|6Rr1pdlOuIbu*FH!i*VZS0ic2% zR_L|ylIX>shpE}da{Hj&Q7DP~Ga?+cE_TPmw`IP6bkT6_x6Nw~08nRBAcN~~3wHKu6SKy4;j@X3 z=p1g_`^z|I?Z8vr9p{Gu003mvHfAfCwI(=?7kwfBUEX({hTbea`KA7iw58j7hk5vc z+FkW=a;{0S6e-!}`1bvFPm=%uuBo?wGWF}5TdudlUCaa4?@A^oE0sQnYMzbP#Lr>8 z+15=21^@tLAk|qu zslaZh$%Kyw04{99Ww<7GCx^Rsy)64Fb3xO&D`DQ0(y*cT+W)-EM&tkh5CD2}i`)8^ zLP@^j4&o-~7q5-Q!Qsm^gm^|M&m<5m(2zZbWVO z_q%oX_~Qq=rfE99_59E~vfX}bnjD|rn2hg!=p9$n@vR$^adjhVdXAs}p&xqdt+(Fl zhjG=PrmL%~tE(`sKL3sz{o~cub2Y{B^MB)qZbaL*yZ!y{c=|&(`Y|TE?s$459QvEL zjl~#;Bbsy0lapESon2$$7$Ya&Jb%*pWdHtjo~APnOefPGHRp^TefarQhUxj|pMU=1 z&rH)EV@>x@_PY{+yqHXTjN~j)?>?7yjt_T*m96)UoA>WePcxNsmf?uzleF*J6^?nm z`gzQi?+-Ns6ae7MsIJPn>8#m%$lB-pytZVrMRpsJ($qGd_-S<2vDjh}ZzOIo7LU8p zq8aMH^q4eZ+;TKb)XHsW%$Jq-G&0yWV^d-G_Pn$$C@j7V0`;z~@hxtI*BYpNnnfbCAM!cw9zKaVlHTQK?X_>XtI_QrFWj6rV>PBXxA6>S6V`OY z{fLvt`wW(lNY-~U53 x=e-~J!Q&10C;(v5H5G7dIW`CYyf?9(8!iC8b9?Tc7aqWY+7J`~0001h1OVJ>V37a- literal 0 HcmV?d00001 diff --git a/Resources/Locale/ru-RU/ADT/Job/job-description.ftl b/Resources/Locale/ru-RU/ADT/Job/job-description.ftl index 0aff11fdb0b..5a55e815166 100644 --- a/Resources/Locale/ru-RU/ADT/Job/job-description.ftl +++ b/Resources/Locale/ru-RU/ADT/Job/job-description.ftl @@ -13,3 +13,5 @@ job-description-senior-researcher = Обучайте новых учёных о job-description-senior-engineer = Обучайте новых инженеров основам работы силовых установок, ремонту, атмосферике и энергоснабжению станции. job-description-senior-officer = Обучать новых офицеров основам обыска и задержания, срокам заключения и правильному обращению с огнестрельным оружием. + +job-description-ADTsecborg = Держать на станции порядок, помогать СБ выполнять свою работую \ No newline at end of file diff --git a/Resources/Locale/ru-RU/ADT/Job/job-names.ftl b/Resources/Locale/ru-RU/ADT/Job/job-names.ftl index 0dc40b11604..eea590626e8 100644 --- a/Resources/Locale/ru-RU/ADT/Job/job-names.ftl +++ b/Resources/Locale/ru-RU/ADT/Job/job-names.ftl @@ -26,3 +26,6 @@ job-name-ADTSpaceSecOfficer = офицер SPACE SEC job-name-ADTSpaceSecPilot = пилот SPACE SEC job-name-ADTSpaceSecCommander = командир SPACE SEC job-name-ADTSpaceSecService = сотрудник SPACE SEC + +job-name-ADTSecBorg = Киборг службы безопасности +JobADTSecBorg = Киборг службы безопасности diff --git a/Resources/Locale/ru-RU/ADT/Objects/Specific/Robotics/borg_modules.ftl b/Resources/Locale/ru-RU/ADT/Objects/Specific/Robotics/borg_modules.ftl new file mode 100644 index 00000000000..8be2a022302 --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/Objects/Specific/Robotics/borg_modules.ftl @@ -0,0 +1,6 @@ +ent-ADTBorgModuleDetention = модуль задержания + .desc = сожержит вспышку, кабельные стяжки и телескопическую дубинку. +ent-ADTBorgModuleHarm = модуль вреда + .desc = сожержит самозарядную лазерную винтовку и дубину для нанесения тяжких телесных повреждений. +ent-ADTBorgModuleDisabler = модуль дизаблера + .desc = сожержит дизаблер и кабельные стяжки. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/ADT/Objects/Specific/Robotics/borg_parts.ftl b/Resources/Locale/ru-RU/ADT/Objects/Specific/Robotics/borg_parts.ftl new file mode 100644 index 00000000000..7a467d6060d --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/Objects/Specific/Robotics/borg_parts.ftl @@ -0,0 +1,6 @@ +ent-ADTLeftArmBorgSecurity = левая рука киборга-офицера +ent-ADTRightArmBorgSecurity = правая рука киборга-офицера +ent-ADTLeftLegBorgSecurity = левая нога киборга-офицера +ent-ADTRightLegBorgSecurity = правая нога киборга-офицера +ent-ADTHeadBorgSecurity = голова киборга-офицера +ent-ADTTorsoBorgSecurity = туловище киборга-офицера diff --git a/Resources/Locale/ru-RU/ADT/prototypes/Entities/Clothing/Neck/specific.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Clothing/Neck/specific.ftl index 127372e87d1..c14a1520e66 100644 --- a/Resources/Locale/ru-RU/ADT/prototypes/Entities/Clothing/Neck/specific.ftl +++ b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Clothing/Neck/specific.ftl @@ -1,2 +1,5 @@ ent-ADTClothingNeckSecBadge = жетон Службы Безопасности - .desc = Позолоченный жетон с символикой Службы Безопасности и индивидуальным номером сотрудника. Предмет особой гордости среди офицеров. \ No newline at end of file + .desc = Позолоченный жетон с символикой Службы Безопасности и индивидуальным номером сотрудника. Предмет особой гордости среди офицеров. + +ent-ADTClothingNeckBodyCamera = бодикамера + .desc = Носимая камера для обеспечения подотчетности и ответственности. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Cyborgs/borg.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Cyborgs/borg.ftl new file mode 100644 index 00000000000..d1c87079791 --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Cyborgs/borg.ftl @@ -0,0 +1,2 @@ +ent-ADTBorgChassisSec = киборг-офицер + .desc = Прочный, сильный, быстрый, сме... справедливоносный. diff --git a/Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Weapons/Guns/Guns.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Weapons/Guns/Guns.ftl index db2b5a513d1..972be0364b7 100644 --- a/Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Weapons/Guns/Guns.ftl +++ b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Weapons/Guns/Guns.ftl @@ -10,4 +10,11 @@ ent-ADTEctoplasmicPistol = эктоплазменный револьвер .desc = Разнаботано специально для GhostBusters™. ent-ADTEctoplasmicRifle = эктоплазменная винтовка - .desc = Разнаботано специально для GhostBusters™. \ No newline at end of file + .desc = Разнаботано специально для GhostBusters™. + + +ent-ADTWeaponLaserCarbineBorg = лазерная винтовка борга + .desc = от боргов, для боргов. + +ent-ADTWeaponDisablerBorg = дизаблер борга + .desc = дизаблер, не требующий зарядки. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Weapons/security.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Weapons/security.ftl new file mode 100644 index 00000000000..e1f508b1367 --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Weapons/security.ftl @@ -0,0 +1,2 @@ +ent-ADTBorgflash = вспышка + .desc = Вспышка, оборудованная модулем починки. \ No newline at end of file diff --git a/Resources/Maps/cog.yml b/Resources/Maps/cog.yml index af873bf2431..99ef3fd542f 100644 --- a/Resources/Maps/cog.yml +++ b/Resources/Maps/cog.yml @@ -154219,36 +154219,20 @@ entities: - type: Transform pos: 31.551949,51.708954 parent: 12 -- proto: RiotBulletShield +- proto: Ash entities: - uid: 20873 components: - type: Transform pos: -37.44216,65.286 parent: 12 - - type: Blocking - blockingToggleActionEntity: 20777 - - type: ActionsContainer - - type: ContainerContainer - containers: - actions: !type:Container - ents: - - 20777 -- proto: RiotLaserShield +- proto: Ash entities: - uid: 20850 components: - type: Transform pos: -37.846073,65.249306 parent: 12 - - type: Blocking - blockingToggleActionEntity: 19882 - - type: ActionsContainer - - type: ContainerContainer - containers: - actions: !type:Container - ents: - - 19882 - proto: RollerBedSpawnFolded entities: - uid: 3815 diff --git a/Resources/Prototypes/ADT/Entities/Clothing/Neck/bodycamera.yml b/Resources/Prototypes/ADT/Entities/Clothing/Neck/bodycamera.yml new file mode 100644 index 00000000000..10185387322 --- /dev/null +++ b/Resources/Prototypes/ADT/Entities/Clothing/Neck/bodycamera.yml @@ -0,0 +1,28 @@ +- type: entity + parent: Clothing + id: ADTClothingNeckBodyCamera + name: bodycamera + description: Wearable camera to ensure accountability and responsibility. + components: + - type: Item + size: Small + - type: Sprite + state: icon + sprite: ADT/Clothing/Neck/bodycam.rsi + - type: Clothing + sprite: ADT/Clothing/Neck/bodycam.rsi + quickEquip: true + slots: + - neck + - type: DeviceNetwork + deviceNetId: Wireless + receiveFrequencyId: SurveillanceCameraSecurity + transmitFrequencyId: SurveillanceCamera + - type: SurveillanceCamera + networkSet: true + nameSet: true + - type: ActiveListener + range: 3 + - type: Eye + - type: WirelessNetworkConnection + range: 100 diff --git a/Resources/Prototypes/ADT/Entities/Markers/Spawners/jobs.yml b/Resources/Prototypes/ADT/Entities/Markers/Spawners/jobs.yml index 5217c6fbe42..51f3beffd25 100644 --- a/Resources/Prototypes/ADT/Entities/Markers/Spawners/jobs.yml +++ b/Resources/Prototypes/ADT/Entities/Markers/Spawners/jobs.yml @@ -27,7 +27,7 @@ name: magistrat components: - type: SpawnPoint - job_id: Magistrat + job_id: Magistrat - type: Sprite layers: - state: green @@ -39,7 +39,7 @@ name: IAA components: - type: SpawnPoint - job_id: IAA + job_id: IAA - type: Sprite layers: - state: green @@ -105,7 +105,7 @@ layers: - state: green - state: seniorresearcher - + - type: entity id: SpawnPointSeniorOfficer parent: SpawnPointJobBase @@ -116,4 +116,16 @@ - type: Sprite layers: - state: green - - state: seniorofficer \ No newline at end of file + - state: seniorofficer + +- type: entity + id: SpawnADTSecborg + parent: ADTSpawnPointJobBase + name: secborg + components: + - type: SpawnPoint + job_id: ADTSecBorg + - type: Sprite + layers: + - state: green + - state: secborg diff --git a/Resources/Prototypes/ADT/Entities/Mobs/Cyborgs/borg_chassis.yml b/Resources/Prototypes/ADT/Entities/Mobs/Cyborgs/borg_chassis.yml new file mode 100644 index 00000000000..02bde298aa5 --- /dev/null +++ b/Resources/Prototypes/ADT/Entities/Mobs/Cyborgs/borg_chassis.yml @@ -0,0 +1,74 @@ +- type: entity + id: ADTBorgChassisSec + parent: BaseBorgChassisNT + name: sec borg + components: + - type: Sprite + sprite: ADT/Mobs/Cyborg/chassis.rsi + layers: + - state: sec + map: ["movement"] + - state: sec_e_r + map: ["enum.BorgVisualLayers.Light"] + shader: unshaded + visible: false + - state: sec_l + shader: unshaded + map: ["light"] + visible: false + - type: BorgChassis + maxModules: 4 + moduleWhitelist: + tags: + - BorgModuleGeneric + - ADTBorgModuleSecurity + hasMindState: sec_e + noMindState: sec_e_r + - type: BorgTransponder + sprite: + sprite: ADT/Mobs/Cyborg/chassis.rsi + state: sec + name: secborg + - type: Construction + node: security + - type: AccessReader + access: [["Security"], ["Command"], ["Research"]] + - type: Inventory + templateId: borgTall + - type: InteractionPopup + interactSuccessString: petting-success-generic-cyborg + interactFailureString: petting-failure-generic-cyborg + interactSuccessSound: + path: /Audio/Ambience/Objects/periodic_beep.ogg + - type: IntrinsicRadioTransmitter + channels: + - Security + - Binary + - Common + - Science + - type: ActiveRadio + channels: + - Security + - Binary + - Common + - Science + - type: TTS + voice: sentrybot +- type: entity + id: ADTPlayerSecBorgGeneric + parent: ADTBorgChassisSec + suffix: Battery, Tools + components: + - type: ContainerFill + containers: + borg_brain: + - PositronicBrain + borg_module: + - ADTBorgModuleDetention + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellMedium + - type: RandomMetadata + nameSegments: [names_borg] diff --git a/Resources/Prototypes/ADT/Entities/Mobs/Cyborgs/fill.txt b/Resources/Prototypes/ADT/Entities/Mobs/Cyborgs/fill.txt deleted file mode 100644 index b4954caf47d..00000000000 --- a/Resources/Prototypes/ADT/Entities/Mobs/Cyborgs/fill.txt +++ /dev/null @@ -1 +0,0 @@ -# Данный файл существует по причине того что Githab плохо дружит с пустыми папками, при работе с этой папкой этот файл можно спокойно удалить \ No newline at end of file diff --git a/Resources/Prototypes/ADT/Entities/Objects/Misc/handcuffs.yml b/Resources/Prototypes/ADT/Entities/Objects/Misc/handcuffs.yml new file mode 100644 index 00000000000..7bdea345865 --- /dev/null +++ b/Resources/Prototypes/ADT/Entities/Objects/Misc/handcuffs.yml @@ -0,0 +1,33 @@ +- type: entity + id: ADTInfCablecuffs + parent: Zipties + suffix: lingering, 1 + components: + - type: Handcuff + breakoutTime: 3 + cuffedRSI: Objects/Misc/cablecuffs.rsi # cablecuffs will look fine + bodyIconState: body-overlay + breakOnRemove: true + brokenPrototype: ZiptiesBroken + startCuffSound: + path: /Audio/Items/Handcuffs/ziptie_start.ogg + endCuffSound: + path: /Audio/Items/Handcuffs/ziptie_end.ogg + startUncuffSound: + path: /Audio/Items/Handcuffs/rope_start.ogg + endUncuffSound: + path: /Audio/Items/Handcuffs/rope_breakout.ogg + startBreakoutSound: + path: /Audio/Items/Handcuffs/rope_takeoff.ogg + borgUse: true + - type: Stack + lingering: true + stackType: Zipties + count: 1 + +- type: stack + id: Zipties + name: zipties + icon: { sprite: "/Textures/Objects/Misc/zipties.rsi", state: cuff } + spawn: Zipties + maxCount: 5 diff --git a/Resources/Prototypes/ADT/Entities/Objects/Specific/Robotics/borg_modules.yml b/Resources/Prototypes/ADT/Entities/Objects/Specific/Robotics/borg_modules.yml new file mode 100644 index 00000000000..1fa0c4c7cd3 --- /dev/null +++ b/Resources/Prototypes/ADT/Entities/Objects/Specific/Robotics/borg_modules.yml @@ -0,0 +1,51 @@ +- type: entity + id: ADTBaseBorgModuleSecurity + parent: BaseBorgModule + abstract: true + components: + - type: Tag + tags: + - ADTBorgModuleSecurity + +- type: entity + id: ADTBorgModuleDetention + parent: [ ADTBaseBorgModuleSecurity, BaseProviderBorgModule ] + name: detentions module + components: + - type: Sprite + layers: + - state: security + - state: icons-detentions + - type: ItemBorgModule + items: + - ADTInfCablecuffs + - ADTtelescopicBaton + - ADTBorgflash + +- type: entity + id: ADTBorgModuleHarm + parent: [ ADTBaseBorgModuleSecurity, BaseProviderBorgModule ] + name: harm module + components: + - type: Sprite + layers: + - state: security + - state: icons-harm + - type: ItemBorgModule + items: + - Truncheon + - ADTWeaponLaserCarbineBorg + +- type: entity + id: ADTBorgModuleDisabler + parent: [ ADTBaseBorgModuleSecurity, BaseProviderBorgModule ] + name: disabler module + components: + - type: Sprite + layers: + - state: security + - state: icons-disabler + - type: ItemBorgModule + items: + - ADTInfCablecuffs + - ADTWeaponDisablerBorg diff --git a/Resources/Prototypes/ADT/Entities/Objects/Specific/Robotics/borg_parts.yml b/Resources/Prototypes/ADT/Entities/Objects/Specific/Robotics/borg_parts.yml new file mode 100644 index 00000000000..c129d76790b --- /dev/null +++ b/Resources/Prototypes/ADT/Entities/Objects/Specific/Robotics/borg_parts.yml @@ -0,0 +1,94 @@ +- type: entity + id: ADTLeftArmBorgSecurity + parent: BaseBorgArmLeft + name: security cyborg left arm + components: + - type: Sprite + sprite: Objects/Specific/Robotics/cyborg_parts.rsi + state: security_l_arm + - type: Icon + state: security_l_arm + - type: Tag + tags: + - Trash + - BorgArm + - ADTBorgSecurityLArm + +- type: entity + id: ADTRightArmBorgSecurity + parent: BaseBorgArmRight + name: security cyborg right arm + components: + - type: Sprite + sprite: Objects/Specific/Robotics/cyborg_parts.rsi + state: security_r_arm + - type: Icon + state: security_r_arm + - type: Tag + tags: + - Trash + - BorgArm + - ADTBorgSecurityRArm + +- type: entity + id: ADTLeftLegBorgSecurity + parent: BaseBorgLegLeft + name: security cyborg left leg + components: + - type: Sprite + sprite: Objects/Specific/Robotics/cyborg_parts.rsi + state: security_l_leg + - type: Icon + state: security_l_leg + - type: Tag + tags: + - Trash + - BorgLeg + - ADTBorgSecurityLLeg + +- type: entity + id: ADTRightLegBorgSecurity + parent: BaseBorgLegRight + name: security cyborg right leg + components: + - type: Sprite + sprite: Objects/Specific/Robotics/cyborg_parts.rsi + state: security_r_leg + - type: Icon + state: security_r_leg + - type: Tag + tags: + - Trash + - BorgLeg + - ADTBorgSecurityRLeg + +- type: entity + id: ADTHeadBorgSecurity + parent: BaseBorgHead + name: security cyborg head + components: + - type: Sprite + sprite: Objects/Specific/Robotics/cyborg_parts.rsi + state: security_head + - type: Icon + state: security_head + - type: Tag + tags: + - Trash + - BorgHead + - ADTBorgSecurityHead + +- type: entity + id: ADTTorsoBorgSecurity + parent: BaseBorgTorso + name: security cyborg torso + components: + - type: Icon + state: security_chest + - type: Sprite + sprite: Objects/Specific/Robotics/cyborg_parts.rsi + state: security_chest + - type: Tag + tags: + - Trash + - ADTBorgSecurityTorso diff --git a/Resources/Prototypes/ADT/Entities/Objects/Weapons/Guns/Battery/battery_gun.yml b/Resources/Prototypes/ADT/Entities/Objects/Weapons/Guns/Battery/battery_gun.yml index d9932dbde76..5488314ae11 100644 --- a/Resources/Prototypes/ADT/Entities/Objects/Weapons/Guns/Battery/battery_gun.yml +++ b/Resources/Prototypes/ADT/Entities/Objects/Weapons/Guns/Battery/battery_gun.yml @@ -28,3 +28,43 @@ - type: Battery maxCharge: 5000 startingCharge: 5000 + + +- type: entity + name: laser rifle + parent: BaseWeaponBattery + id: ADTWeaponLaserCarbineBorg + description: This modified laser rifle fires nearly harmless beams in the 40-watt range, for target practice. + components: + - type: Sprite + sprite: Objects/Weapons/Guns/Battery/laser_gun.rsi + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + - state: mag-unshaded-4 + map: ["enum.GunVisualLayers.MagUnshaded"] + shader: unshaded + - type: Clothing + sprite: Objects/Weapons/Guns/Battery/laser_gun.rsi + - type: Gun + selectedMode: SemiAuto + availableModes: + - SemiAuto + - type: HitscanBatteryAmmoProvider + proto: RedLaser + fireCost: 62.5 + - type: StaticPrice + price: 300 + - type: BatterySelfRecharger + autoRecharge: true + autoRechargeRate: 10 + +- type: entity + name: disabler + parent: WeaponDisabler + id: ADTWeaponDisablerBorg + description: A self-defense weapon that exhausts organic targets, weakening them until they collapse. + components: + - type: BatterySelfRecharger + autoRecharge: true + autoRechargeRate: 20 diff --git a/Resources/Prototypes/ADT/Entities/Objects/Weapons/security.yml b/Resources/Prototypes/ADT/Entities/Objects/Weapons/security.yml new file mode 100644 index 00000000000..550ee15b86d --- /dev/null +++ b/Resources/Prototypes/ADT/Entities/Objects/Weapons/security.yml @@ -0,0 +1,9 @@ +- type: entity + name: flash + parent: Flash + id: ADTBorgflash + description: An ultrabright flashbulb with a trigger, which causes the victim to be dazed and lose their eyesight for a moment. Useless when burnt out. + components: + - type: LimitedCharges + - type: AutoRecharge + rechargeDuration: 10 diff --git a/Resources/Prototypes/ADT/Recipes/Lathes/robotics.yml b/Resources/Prototypes/ADT/Recipes/Lathes/robotics.yml new file mode 100644 index 00000000000..97aee0c25c5 --- /dev/null +++ b/Resources/Prototypes/ADT/Recipes/Lathes/robotics.yml @@ -0,0 +1,86 @@ +- type: latheRecipe + id: ADTLeftArmBorgSecurity + result: ADTLeftArmBorgSecurity + category: Robotics + completetime: 2 + materials: + Steel: 250 + Glass: 100 + +- type: latheRecipe + id: ADTRightArmBorgSecurity + result: ADTRightArmBorgSecurity + category: Robotics + completetime: 2 + materials: + Steel: 250 + Glass: 100 + +- type: latheRecipe + id: ADTLeftLegBorgSecurity + result: ADTLeftLegBorgSecurity + category: Robotics + completetime: 2 + materials: + Steel: 250 + Glass: 100 + +- type: latheRecipe + id: ADTRightLegBorgSecurity + result: ADTRightLegBorgSecurity + category: Robotics + completetime: 2 + materials: + Steel: 250 + Glass: 100 + +- type: latheRecipe + id: ADTHeadBorgSecurity + result: ADTHeadBorgSecurity + category: Robotics + completetime: 2 + materials: + Steel: 250 + Glass: 100 + +- type: latheRecipe + id: ADTTorsoBorgSecurity + result: ADTTorsoBorgSecurity + category: Robotics + completetime: 2 + materials: + Steel: 250 + +- type: latheRecipe + id: ADTBorgModuleHarm + result: ADTBorgModuleHarm + category: Robotics + completetime: 3 + materials: + Steel: 500 + Glass: 500 + Plastic: 250 + Gold: 50 + Plasma: 500 + +- type: latheRecipe + id: ADTBorgModuleDisabler + result: ADTBorgModuleDisabler + category: Robotics + completetime: 3 + materials: + Steel: 500 + Glass: 500 + Plastic: 250 + Gold: 50 + Plasma: 50 + +- type: latheRecipe + id: ADTBorgModuleDetention + result: ADTBorgModuleDetention + category: Robotics + completetime: 3 + materials: + Steel: 500 + Glass: 500 + Plastic: 250 diff --git a/Resources/Prototypes/ADT/Roles/Jobs/Borgs/fill.txt b/Resources/Prototypes/ADT/Roles/Jobs/Borgs/fill.txt deleted file mode 100644 index b4954caf47d..00000000000 --- a/Resources/Prototypes/ADT/Roles/Jobs/Borgs/fill.txt +++ /dev/null @@ -1 +0,0 @@ -# Данный файл существует по причине того что Githab плохо дружит с пустыми папками, при работе с этой папкой этот файл можно спокойно удалить \ No newline at end of file diff --git a/Resources/Prototypes/ADT/Roles/Jobs/Borgs/secborg.yml b/Resources/Prototypes/ADT/Roles/Jobs/Borgs/secborg.yml new file mode 100644 index 00000000000..29d6703104e --- /dev/null +++ b/Resources/Prototypes/ADT/Roles/Jobs/Borgs/secborg.yml @@ -0,0 +1,12 @@ +- type: job + id: ADTSecBorg + name: job-name-ADTSecBorg + description: job-description-borg + playTimeTracker: ADTJobSecBorg + requirements: + - !type:OverallPlaytimeRequirement + time: 216000 # 60 hrs + canBeAntag: false + icon: JobIconBorg + supervisors: job-supervisors-rd + jobEntity: ADTPlayerSecBorgGeneric diff --git a/Resources/Prototypes/ADT/Roles/play_time_trackers.yml b/Resources/Prototypes/ADT/Roles/play_time_trackers.yml index c386445889d..b4f7869cc8a 100644 --- a/Resources/Prototypes/ADT/Roles/play_time_trackers.yml +++ b/Resources/Prototypes/ADT/Roles/play_time_trackers.yml @@ -25,3 +25,5 @@ - type: playTimeTracker id: JobBrigmedic +- type: playTimeTracker + id: ADTJobSecBorg diff --git a/Resources/Prototypes/ADT/tags.yml b/Resources/Prototypes/ADT/tags.yml index 0617885f97f..a562fad0332 100644 --- a/Resources/Prototypes/ADT/tags.yml +++ b/Resources/Prototypes/ADT/tags.yml @@ -40,3 +40,26 @@ - type: Tag id: ADTMagazineRifleBibis +- type: Tag + id: ADTBorgUse + +- type: Tag + id: ADTBorgModuleSecurity + +- type: Tag + id: ADTBorgSecurityHead + +- type: Tag + id: ADTBorgSecurityLArm + +- type: Tag + id: ADTBorgSecurityLLeg + +- type: Tag + id: ADTBorgSecurityRArm + +- type: Tag + id: ADTBorgSecurityRLeg + +- type: Tag + id: ADTBorgSecurityTorso diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/security.yml b/Resources/Prototypes/Catalog/Fills/Lockers/security.yml index 8a48c0a1133..25038e36011 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/security.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/security.yml @@ -20,6 +20,7 @@ - id: ClothingOuterHardsuitWarden - id: HoloprojectorSecurity - id: BookSpaceLaw + - id: ADTClothingNeckBodyCamera #ADT bodycam # ADT-WikiBooks-Start - id: ADTBookSRPsec - id: ADTBookPCDsec @@ -52,6 +53,7 @@ - id: DoorRemoteArmory - id: HoloprojectorSecurity - id: BookSpaceLaw + - id: ADTClothingNeckBodyCamera #ADT bodycam # ADT-WikiBooks-Start - id: ADTBookSRPsec - id: ADTBookPCDsec @@ -90,6 +92,8 @@ prob: 0.6 - id: BookSpaceLaw prob: 0.5 + - id: ADTClothingNeckBodyCamera # ADT bodycam + prob: 0.3 # ADT-WikiBooks-Start - id: ADTBookSRPsec - id: ADTBookPCDsec @@ -154,6 +158,7 @@ - id: HoloprojectorSecurity - id: BoxEvidenceMarkers - id: HandLabeler + - id: ADTClothingNeckBodyCamera # ADT-WikiBooks-Start - id: ADTBookSRPsec - id: ADTBookPCDsec diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml index 47d6ab683d6..9c1bb5296a5 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml @@ -18,7 +18,7 @@ Zipties: 12 RiotShield: 2 RiotLaserShield: 2 - RiotBulletShield: 2 + # RiotBulletShield: 2 ADT no nullet shield RadioHandheldSecurity: 5 Bola: 5 #ADT tweak # security officers need to follow a diet regimen! diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/security.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/security.yml index f5585a5e32f..c3889707b85 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/security.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/security.yml @@ -1,4 +1,4 @@ -# Security +# Security - type: entity name: security loot spawner suffix: Gear, Simple @@ -52,7 +52,7 @@ - SecurityWhistle - Tourniquet chance: 0.85 - + # Armory loot spawner # Automatics are a complete mess right now, so the AK-MS And WT-550 have been commented out for consistency's sake. I have no idea what role these guns are supposed to fufill. - type: entity @@ -76,7 +76,7 @@ rareChance: 0.05 prototypes: - RiotShield - - RiotBulletShield + # - RiotBulletShield ADT no nullet shield - RiotLaserShield - ClothingHeadHelmetBasic - ClothingHeadHelmetRiot @@ -137,7 +137,7 @@ rareChance: 0.05 prototypes: - RiotShield - - RiotBulletShield + # - RiotBulletShield ADT no nullet shield - RiotLaserShield - ClothingHeadHelmetBasic - ClothingHeadHelmetRiot @@ -145,4 +145,4 @@ - ClothingOuterArmorRiot - ClothingOuterArmorBulletproof chance: 0.95 - offset: 0.0 \ No newline at end of file + offset: 0.0 diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml index b3dd4b31e5a..d9c073b133c 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml @@ -147,13 +147,18 @@ - type: Speech speechVerb: Robotic speechSounds: Borg +# ADT borgs start + - type: FootstepModifier + footstepSoundCollection: + collection: FootstepBorg + params: + variation: 0.07 + volume: -5 +#ADT borgs end - type: Vocal sounds: Unsexed: UnisexSilicon - type: UnblockableSpeech - - type: FootstepModifier - footstepSoundCollection: - collection: FootstepBorg - type: Construction graph: Cyborg containers: diff --git a/Resources/Prototypes/Entities/Objects/Misc/handcuffs.yml b/Resources/Prototypes/Entities/Objects/Misc/handcuffs.yml index 21905fa45a6..9703c5450d4 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/handcuffs.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/handcuffs.yml @@ -97,6 +97,11 @@ - type: Sprite sprite: Objects/Misc/zipties.rsi state: cuff +# ADT secborg start + - type: Stack + stackType: Zipties + count: 1 +# ADT secborg end - type: entity id: BaseHandcuffsBroken diff --git a/Resources/Prototypes/Entities/Objects/Shields/shields.yml b/Resources/Prototypes/Entities/Objects/Shields/shields.yml index 67d39cbc618..e8d47c5f14d 100644 --- a/Resources/Prototypes/Entities/Objects/Shields/shields.yml +++ b/Resources/Prototypes/Entities/Objects/Shields/shields.yml @@ -75,10 +75,14 @@ coefficients: Blunt: 0.7 Slash: 0.7 + Piercing: 2 # ADT shieldnerf + Heat: 2 # ADT shieldnerf activeBlockModifier: coefficients: Blunt: 0.5 Slash: 0.5 + Piercing: 2 # ADT shieldnerf + Heat: 2 # ADT shieldnerf flatReductions: Blunt: 1 Slash: 1 @@ -96,9 +100,15 @@ - type: Blocking passiveBlockModifier: coefficients: + Blunt: 2 # ADT shieldnerf + Slash: 2 # ADT shieldnerf + Piercing: 2 # ADT shieldnerf Heat: 0.7 activeBlockModifier: coefficients: + Blunt: 2 # ADT shieldnerf + Slash: 2 # ADT shieldnerf + Piercing: 2 # ADT shieldnerf Heat: 0.5 flatReductions: Heat: 1 @@ -116,9 +126,13 @@ - type: Blocking passiveBlockModifier: coefficients: + Blunt: 1.3 # ADT shieldnerf + Slash: 1.3 # ADT shieldnerf Piercing: 0.7 activeBlockModifier: coefficients: + Blunt: 1.3 # ADT shieldnerf + Slash: 1.3 # ADT shieldnerf Piercing: 0.5 flatReductions: Piercing: 1 @@ -484,7 +498,7 @@ jobRequired: - SalvageSpecialist # Corvax-HiddenDesc-End - + - type: entity name: broken energy shield parent: BaseItem diff --git a/Resources/Prototypes/Entities/Objects/Specific/Robotics/endoskeleton.yml b/Resources/Prototypes/Entities/Objects/Specific/Robotics/endoskeleton.yml index 9261e06ea2a..fb57a08b25b 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Robotics/endoskeleton.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Robotics/endoskeleton.yml @@ -166,6 +166,32 @@ whitelist: tags: - BorgJanitorTorso + #ADT secborg start + security_chest+o: + whitelist: + tags: + - ADTBorgSecurityTorso + security_l_arm+o: + whitelist: + tags: + - ADTBorgSecurityLArm + security_r_arm+o: + whitelist: + tags: + - ADTBorgSecurityRArm + security_l_leg+o: + whitelist: + tags: + - ADTBorgSecurityLLeg + security_r_leg+o: + whitelist: + tags: + - ADTBorgSecurityRLeg + security_head+o: + whitelist: + tags: + - ADTBorgSecurityHead + #ADT secborg end - type: ContainerContainer containers: part-container: !type:Container @@ -212,6 +238,14 @@ - BorgMiningRLeg - BorgMiningHead - BorgMiningTorso + security: #ADT secborg start + - ADTBorgSecurityHead + - ADTBorgSecurityLArm + - ADTBorgSecurityLLeg + - ADTBorgSecurityRArm + - ADTBorgSecurityRLeg + - ADTBorgSecurityTorso + #ADT secborg end - type: Construction graph: Cyborg node: start diff --git a/Resources/Prototypes/Entities/Objects/Tools/emag.yml b/Resources/Prototypes/Entities/Objects/Tools/emag.yml index e10ecd05d99..b011a70793c 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/emag.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/emag.yml @@ -39,5 +39,5 @@ id: Emag suffix: Limited components: - - type: LimitedCharges - - type: AutoRecharge + - type: LimitedCharges + - type: AutoRecharge diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 90f9999f67b..d2934f996a5 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -672,6 +672,14 @@ - RightLegBorgService - HeadBorgService - TorsoBorgService + #ADT secborg start + - ADTLeftArmBorgSecurity + - ADTRightArmBorgSecurity + - ADTLeftLegBorgSecurity + - ADTRightLegBorgSecurity + - ADTHeadBorgSecurity + - ADTTorsoBorgSecurity + #ADT secborg end dynamicRecipes: - ProximitySensor - BorgModuleLightReplacer @@ -709,6 +717,9 @@ - HamtrLLeg - HamtrRLeg - VimHarness + - ADTBorgModuleDisabler #ADT secborg + - ADTBorgModuleDetention #ADT secborg + - ADTBorgModuleHarm # ADT secborg - type: MaterialStorage whitelist: tags: diff --git a/Resources/Prototypes/Loadouts/Jobs/Security/security_officer.yml b/Resources/Prototypes/Loadouts/Jobs/Security/security_officer.yml index a488849350b..d629f7fbd85 100644 --- a/Resources/Prototypes/Loadouts/Jobs/Security/security_officer.yml +++ b/Resources/Prototypes/Loadouts/Jobs/Security/security_officer.yml @@ -167,3 +167,4 @@ storage: back: - Dinkystar + diff --git a/Resources/Prototypes/Loadouts/loadout_groups.yml b/Resources/Prototypes/Loadouts/loadout_groups.yml index 464a73bdfbc..8d8b315c024 100644 --- a/Resources/Prototypes/Loadouts/loadout_groups.yml +++ b/Resources/Prototypes/Loadouts/loadout_groups.yml @@ -513,7 +513,7 @@ loadouts: - MimeSuspendersRed - MimeSuspendersBlack - + - type: loadoutGroup id: SurvivalMime name: loadout-group-survival-mime diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml b/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml index 0f012cefc98..04b9c368380 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml @@ -43,7 +43,7 @@ - tool: Screwing doAfter: 0.5 - + - to: engineer steps: - assemblyId: engineer @@ -179,6 +179,38 @@ - tool: Screwing doAfter: 0.5 +#ADT secborg start + - to: security + steps: + - assemblyId: security + guideString: borg-construction-guide-string + + - material: Cable + amount: 1 + doAfter: 1 + store: part-container + + - component: Flash + name: flash + store: part-container + icon: + sprite: Objects/Weapons/Melee/flash.rsi + state: flash + + - component: Flash + name: second flash + store: part-container + icon: + sprite: Objects/Weapons/Melee/flash.rsi + state: flash + + - tool: Screwing + doAfter: 0.5 + + - node: security + entity: ADTBorgChassisSec +#ADT secborg end + - node: cyborg entity: BorgChassisGeneric diff --git a/Resources/Prototypes/Research/arsenal.yml b/Resources/Prototypes/Research/arsenal.yml index 553258fdb3f..6d76348baa5 100644 --- a/Resources/Prototypes/Research/arsenal.yml +++ b/Resources/Prototypes/Research/arsenal.yml @@ -46,6 +46,7 @@ cost: 7500 recipeUnlocks: - WeaponLaserCarbine + - ADTBorgModuleHarm #ADT secborg - type: technology id: NonlethalAmmunition @@ -55,12 +56,14 @@ state: beanbag discipline: Arsenal tier: 1 - cost: 5000 + cost: 8000 #ADT secborg recipeUnlocks: - MagazineShotgunBeanbag - BoxShellTranquilizer - BoxBeanbag - WeaponDisabler + - ADTBorgModuleDisabler #ADT secborg + - ADTBorgModuleDetention #ADT secborg - type: technology id: UraniumMunitions diff --git a/Resources/Prototypes/Roles/Jobs/Science/borg.yml b/Resources/Prototypes/Roles/Jobs/Science/borg.yml index c07b145900b..ccc5e119ae5 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/borg.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/borg.yml @@ -8,6 +8,11 @@ - !type:RoleTimeRequirement role: JobBorg time: 18000 # 5 hrs + # ADT secborg start + - !type:RoleTimeRequirement + role: ADTJobSecBorg + time: 18000 # 5 hrs + # ADT secborg end canBeAntag: false icon: JobIconStationAi supervisors: job-supervisors-rd diff --git a/Resources/Prototypes/SoundCollections/footsteps.yml b/Resources/Prototypes/SoundCollections/footsteps.yml index e179584f6fb..2e671b1bbce 100644 --- a/Resources/Prototypes/SoundCollections/footsteps.yml +++ b/Resources/Prototypes/SoundCollections/footsteps.yml @@ -65,7 +65,7 @@ files: - /Audio/Effects/Footsteps/clownstep1.ogg - /Audio/Effects/Footsteps/clownstep2.ogg - + - type: soundCollection id: FootstepJester files: @@ -189,7 +189,7 @@ id: FootstepBlood files: - /Audio/Effects/Footsteps/gib_step.ogg - + - type: soundCollection id: FootstepSticky files: @@ -205,7 +205,9 @@ - type: soundCollection id: FootstepBorg files: - - /Audio/Effects/Footsteps/borgwalk1.ogg + - /Audio/ADT/Effects/Footsteps/borgwalk1.ogg #ADT borgs + - /Audio/ADT/Effects/Footsteps/borgwalk2.ogg #ADT borgs + - /Audio/ADT/Effects/Footsteps/borgwalk3.ogg #ADT borgs - type: soundCollection id: FootstepHoverBorg diff --git a/Resources/Textures/ADT/Clothing/Neck/bodycam.rsi/equipped-NECK.png b/Resources/Textures/ADT/Clothing/Neck/bodycam.rsi/equipped-NECK.png new file mode 100644 index 0000000000000000000000000000000000000000..24e707423db5d3447d8750fc208c521e3689076e GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|ay(reLn`LH zy|9tD#X!L2;#F3U*@+V^_a1l}D<7^N;?Vb!QQ5L`eZ$4;EmdKI;Vst02G%#QUCw| literal 0 HcmV?d00001 diff --git a/Resources/Textures/ADT/Clothing/Neck/bodycam.rsi/icon.png b/Resources/Textures/ADT/Clothing/Neck/bodycam.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e1c1dcc420708598c742ea5296b171bc9ef9a1f6 GIT binary patch literal 5694 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 GN%mi(F7EFD literal 0 HcmV?d00001 diff --git a/Resources/Textures/ADT/Clothing/Neck/bodycam.rsi/meta.json b/Resources/Textures/ADT/Clothing/Neck/bodycam.rsi/meta.json new file mode 100644 index 00000000000..e5592bd9dbc --- /dev/null +++ b/Resources/Textures/ADT/Clothing/Neck/bodycam.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "created by Skarletto", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-NECK", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/ADT/Markers/jobs.rsi/meta.json b/Resources/Textures/ADT/Markers/jobs.rsi/meta.json index 113f5fcf2fb..8d6e8046405 100644 --- a/Resources/Textures/ADT/Markers/jobs.rsi/meta.json +++ b/Resources/Textures/ADT/Markers/jobs.rsi/meta.json @@ -27,6 +27,9 @@ }, { "name": "blueshield" + }, + { + "name": "secborg" } ] } diff --git a/Resources/Textures/ADT/Markers/jobs.rsi/secborg.png b/Resources/Textures/ADT/Markers/jobs.rsi/secborg.png new file mode 100644 index 0000000000000000000000000000000000000000..bfb0ee079243004fa237cd27d917db862f107f32 GIT binary patch literal 1059 zcmV+;1l;?HP)Px&-AP12R9J<@mQP3=cNE7zQ~ZY;lT~QlA`Kzn!9@wkUR(q<2ZJ&>g$jbqUOZ%) zD1!IRB=Rozc~uX%hNQ zzd!Hy-uL%?@BMxc{%29VleM+Azz6S6+;Y70r!QVA=joo7(a}+N+!Wa3DaTWtT>$)c z^p|fv3=n|N!aASo>>|_i6=UrYcYVC04I>sK8Ht`@rjdkZz$;_z5w=^8Kg2|E2ITDl ze)_X|W`DJE2oRcuP$7^q)*kVJSgjl~-qH47Oob0YcDGb_eYJ9kRV|Z@L_^sN#lW*G zQ3fVevb!b5+9Mb{Z^-=dj`5B*tZJEoNtIWhcYQhl{qZ;eskDLq`>*WuTxF-{Dn_x$ zz@+Na`RD+izIdtRg>dJowBe4WbAY@Mq27W}41B#;#tTBzG~bQ$LNN5UevW(;0MD*O zeGW|1^Z^=rTl#c4pzC_z+76=|xC|xL72xN`-_pCd;G@4|eS^x#F#SOd{v&}IxHmVa zWS>6=pm%Wr(=@r0v$>PA$qPa6;sQ|1gL`vxfs-&01M+E2r40rX339fLrfEDhO`w*H zIooD1kzg>92=y~I><8{n+;WUq3;?58bjwdVJU#y5k%1A5A>JR6-7VDx5xO4`?~mMZ z&bED-4>j8JLby5M)o&yXbD+DqhB4mSLU(f$gNcOeNIHgEk`5*kbT>BNq>IZ4fE(G9x17uzAMZ3t^ zHt=st4z=>!i`H&0Ll6W+pr?4Xa_BmrpPwf$1Ot;QR<%rax5U7tN?r(NW@cOvvPo?u z=K|1m-MM{#9-~;qs+L{n^7eTlNTm%@X~V66twO;CVO7f*#Ui)w&tLdE)-6L_*Bw<= z*(wxJu3bmdG?tc@$k{d$IP zfi&75kCPXIa=8q^a5Bj^uV14qFDn4f?5uO%`1>0-*sv@BqS2^pOM-1!1)8Rj7sAc# z;bf8x%R*URR-D;c$LkO{v%Xpr`i do13n!zX60l?JL%u`quye002ovPDHLkV1iL0{aXM4 literal 0 HcmV?d00001 diff --git a/Resources/Textures/ADT/Mobs/Cyborg/chassis.rsi/meta.json b/Resources/Textures/ADT/Mobs/Cyborg/chassis.rsi/meta.json new file mode 100644 index 00000000000..592baad2b63 --- /dev/null +++ b/Resources/Textures/ADT/Mobs/Cyborg/chassis.rsi/meta.json @@ -0,0 +1,28 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/faf6db214927874c19b8fa8585d26b5d40de1acc", + "states": [ + { + "name": "sec", + "directions": 4 + }, + { + "name": "sec_e", + "directions": 4 + }, + { + "name": "sec_e_r", + "directions": 4 + }, + { + "name": "sec_l", + "directions": 4 + } + + ] +} diff --git a/Resources/Textures/ADT/Mobs/Cyborg/chassis.rsi/sec.png b/Resources/Textures/ADT/Mobs/Cyborg/chassis.rsi/sec.png new file mode 100644 index 0000000000000000000000000000000000000000..b9fd69d0991b11f905a233391145dc796d5a375e GIT binary patch literal 2875 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/ADT/Mobs/Cyborg/chassis.rsi/sec_e_r.png b/Resources/Textures/ADT/Mobs/Cyborg/chassis.rsi/sec_e_r.png new file mode 100644 index 0000000000000000000000000000000000000000..70a8a9983294f5aa895060de167e61bf59b73f68 GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|u6epRhE&XX zd&`mQkbyw!!DceL2^4%e=UKEGH0+`m;)uAgVhEe_8~OB{V|+i&Ye zxg4oluV3t?X}h?*_=RQ7&a|TsWUBe*pDT@e9~meSYo0LEJNntBO@{?U(jjbbJ&b7@VZKQ%ED{EF23I!zn#CH8ClJihuj|Z0#&~@Z+U&Y zdGE7j_Z!OPy=y+d@eNDpUJxz%nk$8``^R3<2`ZkGR6H+b$Q8?JUV47M7ZeT*p00i_ I>zopr0PVMPM*si- literal 0 HcmV?d00001 diff --git a/Resources/Textures/ADT/Mobs/Cyborg/chassis.rsi/sec_l.png b/Resources/Textures/ADT/Mobs/Cyborg/chassis.rsi/sec_l.png new file mode 100644 index 0000000000000000000000000000000000000000..f4614f6303e79a176d226007e866b91190362baa GIT binary patch literal 449 zcmV;y0Y3hTP)Px$dr3q=RCt{2+OckfFc1ddpQu7Aop^%0LKecB&dklqp0~~C-T@$qqZXLiQvm0>*k3LI7fmUE zlaIY2(*ig*)rp9Rh=_=YsHfc-D$7#q`psr@*Lb=n^#%R|7Ql7_wy^-V6R?d1xJA%7 zYS)r&GU<4iCUu6!bZs+rDAg?8sn|;ZqFre58K4@bDIn7Q_Cua!TZZKTmsSo rfuBSLm%vT_JP{EQ5fKp)(JXxf&H`{q)L&^&00000NkvXXu0mjfwv@)l literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icons-detentions.png b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icons-detentions.png new file mode 100644 index 0000000000000000000000000000000000000000..fe4bde0dc1e0c9ba11689a83d0b023b5953f34fe GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}ZJsWUArY-_ zFDVK+8S=1PXgwI_^4NIAt9c#Hg^WJ@my93GJkcTdpuY9Tf=e7{>}Jk9`5DWOM^Y)O?Jq1Xc%~m*w?<{^UWcbGSD3p**JRyncwldNa{fO) z2N#zw$+NFDeE+v_Rrk&gg=07NvBJrUW4Z}}{8-&@>gd-M3|Zq_-) z4!e{XEtoXsR`23!5ttC_97R+In$ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icons-harm.png b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icons-harm.png new file mode 100644 index 0000000000000000000000000000000000000000..5e1ea7876cbe57e659cd0f62bc59d0e8b32a3082 GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}6`n4RArY-_ zFK^^+P!MQ+7;nBHRVb`TRJ=enEP?TswuFOr&K5=!llR^k9(~p9j4m!NYSB^LP8`c; z+J2i`d_-dQ`RHiwGd;GdUYg%;1wYcgqR+@+_TI9H?ZJteXMeAIc9(JA71;&%4xRYo m%$W80m&o2_|Cs~@Cvs;l&|lTRFZUbJ4Gf;HelF{r5}E**X+)L) literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icons-peace.png b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icons-peace.png new file mode 100644 index 0000000000000000000000000000000000000000..98c4ecdb0239aafa4a126ea5077ce209dec082d3 GIT binary patch literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}6FprVLn2z= zUfRg%Y{!4Y3sI=D5~x^8)y26P;Q Mr>mdKI;Vst0EjA4`~Uy| literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/meta.json b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/meta.json index 74c9893cae3..463da1b5717 100644 --- a/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC0-1.0", - "copyright": "Created by EmoGarbage404 (github) for Space Station 14. icon-construction.png created by deltanedas (github). syndicateborgbomb.png created by Mangohydra (github).", + "copyright": "Created by EmoGarbage404 (github) for Space Station 14. icon-construction.png created by deltanedas (github). syndicateborgbomb.png created by Mangohydra (github). icons-detentions, icons-peace, icons-harm, icons-disabler made by ratyyy.", "size": { "x": 32, "y": 32 @@ -126,6 +126,18 @@ }, { "name": "syndicate" + }, + { + "name": "icons-detentions" + }, + { + "name": "icons-peace" + }, + { + "name": "icons-harm" + }, + { + "name": "icons-disabler" } ] } diff --git a/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/meta.json b/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/meta.json index 8cab41943fe..16f24bd30c2 100644 --- a/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/cf45322c7ee16f9d7e43d5260daf24ceb77c1b25", + "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/cf45322c7ee16f9d7e43d5260daf24ceb77c1b25. Secborg parts made by ratyyy", "size": { "x": 32, "y": 32 @@ -213,6 +213,42 @@ }, { "name": "service_r_leg+o" + }, + { + "name": "security_l_arm" + }, + { + "name": "security_r_arm" + }, + { + "name": "security_l_leg" + }, + { + "name": "security_r_leg" + }, + { + "name": "security_chest" + }, + { + "name": "security_head" + }, + { + "name": "security_head+o" + }, + { + "name": "security_chest+o" + }, + { + "name": "security_l_arm+o" + }, + { + "name": "security_r_arm+o" + }, + { + "name": "security_l_leg+o" + }, + { + "name": "security_r_leg+o" } ] } diff --git a/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/security_chest+o.png b/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/security_chest+o.png new file mode 100644 index 0000000000000000000000000000000000000000..4a10d50c76955a16228c90ec97585e114fd97956 GIT binary patch literal 571 zcmV-B0>u4^P)Px$^+`lQR9J=WmAi`*Q51(iC69Gk7Iq2~JF${sw+YiY%?2CUWvAWp+M0jDBsMAX z2WV@`tpj2s*(NrZsfN2&A%fsWkdTm& z@IT?YZs@vhxT${?sdYtoo(Hh9iR-$w+wHaL#R_P(TE;GwO88RZc^-{MgYvH*093cO z5klZgNx$EZ25ofG;IN2&#<+fN5TE914zO;$OXadn>MXY{0`i z*|3t&15mlVjEE>W&XWE5MTJT}j~b0R>uWyz99`MtS`$#Cv9WzA36zTX1EmO*V&Arx z;^Vj-7m!QOG}_q=xpazx+a8D0**a(BfF0Q2n2a6mbmLA`HtJ{-gfh@C)h zG6iOP?M({Ou zJAp;C)>xK>5Q4DV;dIa9bk8E}c1&~2veqfNo&d|T&|2e53BafEZ{zc&H2!}kV1B|t zDGrWLXn+64SzmK-d_thqMiW@;XS8_2Kq+%8HvV48n@k`f;ScXt+i_mB9c2Ij002ov JPDHLkV1g9F3Y-7{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/security_chest.png b/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/security_chest.png new file mode 100644 index 0000000000000000000000000000000000000000..6b74174991dd3e9b85b16f893950aab497ae9517 GIT binary patch literal 619 zcmV-x0+juUP)Px%B}qgcrZiU)0C$%grU+<417-N~Mz0WHOom#t-{-x{yo)&<1kV zPwu}aa&rl{oqoZB-++I(=U2E{D1;m#0GQw2Lf3UyuIak&&Tnr4;0VEHq2PJ45??3q zdiA9X@al~PK+U!>O_RO7Jr}?DB}2tYNy4DM|{r{sQ3E7psw{^f20J%$P(0h zebobU?<9QPgmSDlX5*Bb4MIPx$o=HSOR9J=Wl|4_wP!xt=j0v?(!$&ld5ZO$;M1BBFuwW#tGD6}cn~6KtUjdT? zBm4jYi!O7 z6n$K%R1I3uXw;PMs#ycGg;O3c0O0=Z(~zGvvWOMh;wg_8dH)t-ET`q;JOjb!Lxgkx z=*%LhJD?}Va_BnWeqV>t-DN93Odi1Q2@6A7V2 z64x8v#X?pM>;{7XfJ{z6_Tdgae*isy079pOP$FqKvvdQ6O4ZR4MJ>+c1npTZ4gf7t zq}l~k9XNQFpf{0Drww1+5=Dgj^Jio!2FfnCp+K=%G#Co^hkrK%*=*MIhNC%4wYOCc z*Ef~zlVjX8n_7;)yu$gQORZ@P)Px$ph-kQR9J=Wl|4_wP!xt=j0xDL;UgMJh-@ZaB0oSTSTGV+86k19n~6KtUjdT? zBm4jYi8?9IOX*L0PbEt4Ebpz^H`!Sp7Q#T3v3|9uv$LOxghxc zh_Ie-otX!92lT`k79Ho?PbAFGz}AXWQQNK-2Y}A|mx1a?*51{}5^kPfOlebHfxh_p zWUR&2k&HO!vLZ!)1;ycDX1+R-Q6Ec)upTNsst%Og9)uG~6o&)E7#2eJ0lCLM;+zZh zv4n6UiK{i=d?Bj_wnHHRKqf1IzrRH{5JWc+gwSpyoJbnZEZji8TyZo-QHwKKL3>t< z13*(0sdfQX2lk&N=uM>4X~P#cMG-r_*)y^b10}b|P@qsK7!2+72ER80JkOina5QJB z_O{Bw>bkOde1z*pL(6d&mpJQpsP!xv002UWaw1Ov0H-bntyasjmSqSb3L%8*=VN1I cWApF$1eHOAP42#I$N&HU07*qoM6N<$f@QkRmjD0& literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/security_l_arm+o.png b/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/security_l_arm+o.png new file mode 100644 index 0000000000000000000000000000000000000000..0b781a546d0dc232f1c054d856c461eb196e48de GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}(>+}rLn2y} z6C_v{Cy4Yk1sZU<9n_F`^WZ=uGmq4qH~&p7ZvN-*U^W3#>jS3z-|rMSPpvOO(e2{a z`TJMo>dP1i1}U85DqJjPEj`CKoc+e<4~8c1s?QbN{jAt*%P)Ub_JGF)#+p0--&X#R z*mC2h#IpUhhYLPj4sWXRU}SNA@btYs4-e0T5{BfG^h^Z#Fe4)(sPL*gq8h-~Rkz@`a@I zPx$ElET{R9J=Wld(#}P!xv0;}dA7jHP4I2WW9|DwVi8h3k@`SHwqbu+kg-!65kXz9gCsZ2$iY zX*3*IfZMYclkEm+cK}!}m$LK0A2`|9Fd7bQ4dACbu3}smYaM|y3zgQqiA^+5@|{f@C`SDbIPTa R%AEiJ002ovPDHLkV1jXFpmP8K literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/security_l_leg.png b/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/security_l_leg.png new file mode 100644 index 0000000000000000000000000000000000000000..25ba48f300b8e29f0264ca4a256f61d91229cfe7 GIT binary patch literal 368 zcmV-$0gwKPP)Px$DoI2^R9J=Wld(#}P!xv0>l0|FjHP4I2S{;o5+$xq;ksn-iued6Z;>T?ppW2` zp=2sTA>1q_WbD*NL{OLOAjzbVs0G3MEf)@#^Zgvo0gJ_AvHW*L*NpkLpZZ8tpb4|rHCdiD9y z1OV=zURt^D`{Y`4bnfjofKtj_+};tc*JRIiE3e9r(dSz4E`U!C#%(Nu0Tpjt~FB1 zRzA-%L>vnf1jYn`X@dM}0Hu^^qyVn#iX=${K=XLp%1Fzq=|Jou?|6lj?{CE99 z%71?kTVY+9!ne=$7hMgy%lK%G4o}pZoC34EvI*x8AHQ(o;L(D+m%0wlYwurB<+jSY zq5pUNvJD)Ex6a=$!B_Y5NWq88;d{ygY+2&|{bTlL*02A+aNEZtjf`j8zz$JlXUKe_ W6~5!fhZR6)GI+ZBxvXw} z&y)9h+{MS=-C} z`vx+9zD!N|tijbdegA(00|SRkj6J^L1`lo)KPx$CrLy>R9J=WlRrxXF&u`U_z6y@8%4TYQ9567=qAd!I+eKGU_tx{a-YIDWH0yy zL>HHmsW_F4;l@t>K?HS)gBTPobqKiRS&|ID@Z=3IBoc{4B9TZW5{Z9C#JHp=3J>60 z$HD3v7x#AnoL^r3djDWB2>X>70={)fDZ{zRbDBKoXm`gin~fp>a66syn0>t7zP<&K zWfD;Yw)QG!)-oIpgT(dI%b#YW2+XVnpmi=tnCAzY`JDaZ6Go%a!W5ziD5Zo_N=%HQ zbq;{T(+07=LF*hNs!82pB>W00000 LNkvXXu0mjf2$-21 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/security_r_leg.png b/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/security_r_leg.png new file mode 100644 index 0000000000000000000000000000000000000000..c86bfed1183745d4f8782144c0474292677e92f9 GIT binary patch literal 367 zcmV-#0g(QQP)Px$DM>^@R9J=WlRrxXF&u`U_z6y@8%4UbD4kmzx`}eGP9-ikcu@QZa-YIDWH0yy zL>HHmsW_F4;l@t>K?HS)gBTD5%^^6LX9Io$1bJ%Dc<2ditG z-`xUmc5(UToY83X?aY-J0pB>Jlwn`zIdz_Mw7cVD=Cl?7xS7v+$lhOXUtWVqTZt%v zt-XSUwT#E(AaV8h+~(eP0t;&aXq*cY=INe#xnzHGOjT9UDMSei~d%cj7QcC=K3xw9fm!4nx} zW(?cIAplZJ7S?`h$xn!GfzVofq%fUM!#WrYLYh*_R{tT9NF)+}!W$>7Z^~9gdf5N~ N002ovPDHLkV1gsVpUwaP literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Melee/shields.rsi/meta.json b/Resources/Textures/Objects/Weapons/Melee/shields.rsi/meta.json index 2d2663c1580..a98cee17040 100644 --- a/Resources/Textures/Objects/Weapons/Melee/shields.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Melee/shields.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from https://github.com/Citadel-Station-13/Citadel-Station-13/commit/84223c65f5caf667a84f3c0f49bc2a41cdc6c4e3", + "copyright": "Taken from https://github.com/Citadel-Station-13/Citadel-Station-13/commit/84223c65f5caf667a84f3c0f49bc2a41cdc6c4e3, riot taken from https://github.com/tgstation/tgstation/commit/6323ee68d9c893bd096b17a86470695038826143", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Objects/Weapons/Melee/shields.rsi/riot-icon.png b/Resources/Textures/Objects/Weapons/Melee/shields.rsi/riot-icon.png index 29b2087910cbbb5b62baa261772c246cea7a161f..553a225f865d1f5a6ef68f10a5ad741834e49996 100644 GIT binary patch delta 450 zcmV;z0X_cz0^9?TB!2;OQb$4nuFf3k0004&Nklp(z2z<(zsDIQ-~^8rTFo$tQeD4h5J>+=)e?tfb=5df%D657+C-fk6u zqhq~tcjsMbl71qA;=vvR!wKq?ga*(Yk9Gi*?Yq)m1<&;F`zUPwqZK6vCGF zqz^DOG6_JR+6us-eh$FS)+zwznNhtECe<#A+nXqn2=`Yp09@O`a~zUt7lvLE^%Ds+ zG%AFnk3+-J7=JBl&x`wTG=}Fmm>A#gDaydjwTEk46^YlwUEAX3+LN@DhtSYVxVH7? z+_f$7_lpJMsVuqaWzBOOT-(CbiwDH0HE!hAl@)a;U<8cYLkH#_0}Zh@7>nNTK^sh$A9)a;TE sP#5j#0APlcbZlm2{{R3007*qoM6N<$f?Cnp%K!iX delta 356 zcmV-q0h|8Z1OEb$B!3BTNLh0L01m_e01m_fl`9S#0003oNkli%mE9N#S5yJfOINLB22%e?aRkXBfNnXu z-2F?(NHT9|r2*FO?-<@ZyxxE=ew+O}n11u{0ay*q9Psq%Q-6l_P?|UZWbnz8CmC2- zSux~3efk8JBgJx(9RLaeb8~a7A;8DS2Mz&{LueKPzd3~%Hf`F3kp@5jWbw6Y*BDrY zq)9Q7^la#u-d)~+E(R-z4qm)}=kV$&81htg0JXuW14wqj^&ppXKbC~mjLZMJ76n_eZ;{T*g!bmbTVgiib zyHV3#qw#ukPM?Sa@OdfgYQ9tUOBp&CXxC~vZH;Y~zG_ZwB~v5j!9cqP&=C!H0o)nt zzar&pB_aVxFMOouTszfHuN5~}DxYye<>oCe_MY-(^8ow>bcHf%0?nAQ%86zoa!Y z)@nqK!1wtXzJJfpaQ5O&4Pg1eF93}E7XaQ(K5=bx_UV0X;o}GKq*sl|0-eWWW-Okd zr0WDiA%fuu07kJ;zL(2p$gk!auGe`yW&*_G3EoV{;HUl#Bfq2tJ5Ok}#*O@v_EZ1n%BEF4Ruxry z^9U@?O|=1LH)yc45}bcOYdzBtE12`|X8~BvEtl{6f#|#SWbdE}a42*X*mBzG<|}Qu znWIoB6bgkxp-?Ck3WZ{KNv1|jt1bR7t}F6IsDG9=;LcFL=m(7l6K_puUUOiF=K$Dg z1ElGQhR2~f%|Si>`>(|CRc?}s~u=Ho vju!{MKhX% zT6oR@cG>`Zt_0m^4(cH)kbo^ggETK*y#|`o94HhDg~EnEZE>dhF1lxH00000NkvXX Hu0mjfgUp+U delta 824 zcmV-81IPS`2hRqOB!3BTNLh0L01m_e01m_fl`9S#00094Nkl3u_O#B{}4>2a%Y!bzpazD!cn$*f8@!nPw*acjw>N-G7<9mjoz|HUJby8vu%< z4FJW_27uy_7;t3%)bL;9Uu%^el$v4mwj;6uc%tT^V=wmRj;?w8=MS4%Y@fY)vvbr8 zgPinsn)fcBz6HdPM1Xvv@|gXt9$AxP^2k)&1GpxSL^dGl^r5@aF3J7tGmhJKH-5VB z39I>h@haK>`+qnh8_?-=z^Oa|!!UgPR&BF&90&USU-omg=`>`sS*TX4?xccf?$71m{@oj_S05pXfJUPM$uU=JFc`RFK_)LWcT0bB zX5rHC{nH2JhLA)+KA#^O0jX5VjQ}(vXawNTB#3OlFMnee%H{HwdjNtHZ?#&Gm<=`= z)cmpLf3k91eT3vOc>Lm>lH4a2LbX-f`to{t%lQ8|aPnN~)4LVmW-8VJoW$CIE6X2l zibat3cS>Sy0D=?e)F&~ZUH@3xmD%U(^R5J`G)KfQ0&tgyySHw~_Vu@${`XL5azGLR zl>2i|&3|#k{vN=MHUJby8vu%<4FJW_27uyd13+=K0iZbA08kuq1H5^Cu01{FF-Q#% zdHwTei@))8ajpU!T)(~KeqJ7?_CSU_0{-UpvoHa|)*g7#_W(*Uk=GZW2#;6*2G+l~ zE?^s`_CSWz08uMo)ePX|?ZZX44O4p{Lu!Di6@S2#IMxOj(F_fcr8qIucG#eP1vciVurWV{tKAO?04$yQ4FHg(H2}b; ziRYzJ$AIWS`(W_mWu>(*LTK&ORlN3`U-1X(k;`V`bi3j5R09CyOgjHrDw)7qYPl?b z1$yp=lvgiC^V-^O+*DG@1OPx4;rZ?Mf?)eLFvix8ut8O{LpMgVBNaJCKr zW)@bLi+^2TE)ETgy zU56~iiL17O(As4wPPVh_whFU?EX9d_^JX*_`oqxdq@$^&LkR)|*uN8;|1yKv>||MP zf`DCpE2$*_yTt^6AV4h|br6c8005d=Iurmn?SDR_>8zXwZ-hFQ#ksc{?L`eZis)a6 z9Q#F37{FTqZ-fE71@J}~z*_)sgaNz-@J1NGTL5o_0lWq9Mi^lB#?a7+q8^{~#HtQU zFGXn?g2%V7+4{2N>G%f)V3$=eZGcgRz;0^1o-u%3Rza)*R&FkboPbpgroRG483O21 z8Go!AZdP%J}GDp+I{EG>emWCC&~ZKVrKu*fQyHoz!DU^lF@3YL$@^%(-Y>A4>s z1K4F1#72m>0N$83K+O;^)M5&&Sq1YCLpuf;f>Q4Ut!5Q0ACK!Z1fM5{ZG9ZR()~aI k%x4w!$KwKlKya-23u?r)loJEK>i_@%07*qoM6N<$f`O93&Hw-a delta 840 zcmV-O1GoIx2j2#eB!3BTNLh0L01m_e01m_fl`9S#0009KNkl*jE2k1|GS4>BLR12*YBX$Tc7+LL8w2B%C%h z8`WH}esjig%YSC$t9uR4pa^HKEV=7KT&$r2*tQK$;UOrB;;XkxTczVT&~EcB0Mc%l z@Uz=>=MzP!0II4&CX)fnvY^#!`Px#c6zIAR#bPnGV;(51uTEXOcB|L1HzH$=%z#Rz z0*ORopsmyCxNW>n{^a6?-pfb#{;v2K=YM5DI-L&9fPZ8%>1F^5VRN1V2+rku|20wu zbd_1i=ko(=0D==YO%tYPRp1ftw~uVpYVLfZi2NBma{f*(SVuNOrH^&%-LsW}b{^S# z>~tL zaHIerI8p!*94P<@4z&Q@b9q+(A+Q{SN&w;`ID0Dl3qNP)3&4Wwx0lzjWZ_Go&VWBY z0v)yi7QO_z2GHD0d<5j*;y#POfX&b5IV@TD5`U-!AU*=CqyS4^++T7_7QO^30f>(P zkIT_FU>F9lK+`n$lp4nxw=aP@190*Po*J`)^v%MTK%D{TBf!AWH^2()8#4gM8n-Wj zN&v5qfMo{M>su#OIM%p*3DiG>=p!J$f$aP~V8PYpRd*xA!j~ZT0U$V10NM`FN3d(= zC_(wibSGFXza4wuR00qm!PB(|z!Go&Ts;mW+u