diff --git a/.gitignore b/.gitignore
index c824a920cd..2d38dbb824 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,3 +9,6 @@ Thumbs.db
data/
cfg/
+code/game/gamemodes/technomancer/spells/projectile/overload.dm
+code/game/gamemodes/technomancer/spells/projectile/overload.dm
+code/modules/client/preference_setup/loadout/loadout_xeno.dm
diff --git a/code/ATMOSPHERICS/components/unary/unary_base.dm b/code/ATMOSPHERICS/components/unary/unary_base.dm
index eea2dba1ab..20d37b309c 100644
--- a/code/ATMOSPHERICS/components/unary/unary_base.dm
+++ b/code/ATMOSPHERICS/components/unary/unary_base.dm
@@ -9,6 +9,8 @@
var/datum/pipe_network/network
+ var/welded = 0 //defining this here for ventcrawl stuff
+
New()
..()
initialize_directions = dir
diff --git a/code/ATMOSPHERICS/components/unary/vent_pump.dm b/code/ATMOSPHERICS/components/unary/vent_pump.dm
index 5d5a3496f9..00bc7e5772 100644
--- a/code/ATMOSPHERICS/components/unary/vent_pump.dm
+++ b/code/ATMOSPHERICS/components/unary/vent_pump.dm
@@ -40,8 +40,6 @@
var/internal_pressure_bound_default = INTERNAL_PRESSURE_BOUND
var/pressure_checks_default = PRESSURE_CHECKS
- var/welded = 0 // Added for aliens -- TLE
-
var/frequency = 1439
var/datum/radio_frequency/radio_connection
diff --git a/code/ATMOSPHERICS/components/valve.dm b/code/ATMOSPHERICS/components/valve.dm
index 8969523db4..3cd77597b3 100644
--- a/code/ATMOSPHERICS/components/valve.dm
+++ b/code/ATMOSPHERICS/components/valve.dm
@@ -291,8 +291,8 @@
/obj/machinery/atmospherics/valve/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
if (!istype(W, /obj/item/weapon/wrench))
return ..()
- if (istype(src, /obj/machinery/atmospherics/valve/digital))
- user << "You cannot unwrench \the [src], it's too complicated."
+ if (istype(src, /obj/machinery/atmospherics/valve/digital) && !src.allowed(user))
+ user << "Access denied."
return 1
var/datum/gas_mixture/int_air = return_air()
var/datum/gas_mixture/env_air = loc.return_air()
diff --git a/code/__defines/items_clothing.dm b/code/__defines/items_clothing.dm
index f356855338..4295ceaed1 100644
--- a/code/__defines/items_clothing.dm
+++ b/code/__defines/items_clothing.dm
@@ -52,6 +52,8 @@
#define HIDEJUMPSUIT 0x4
#define HIDESHOES 0x8
#define HIDETAIL 0x10
+#define HIDETIE 0x20
+#define HIDEHOLSTER 0x40 //Some clothing hides holsters, but not all accessories
// WARNING: The following flags apply only to the helmets and masks!
#define HIDEMASK 0x1
diff --git a/code/datums/supplypacks/munitions.dm b/code/datums/supplypacks/munitions.dm
index 13618b03fb..2a341c5c80 100644
--- a/code/datums/supplypacks/munitions.dm
+++ b/code/datums/supplypacks/munitions.dm
@@ -47,7 +47,7 @@
access = access_armory
/datum/supply_packs/munitions/energyweapons
- name = "Energy weapons crate"
+ name = "Laser carbine crate"
contains = list(/obj/item/weapon/gun/energy/laser = 3)
cost = 50
containertype = /obj/structure/closet/crate/secure
@@ -98,11 +98,11 @@
access = access_armory
/datum/supply_packs/munitions/energy_guns
- name = "energy guns crate"
+ name = "Energy gun crate"
contains = list(/obj/item/weapon/gun/energy/gun = 2)
cost = 50
containertype = /obj/structure/closet/crate/secure
- containername = "energy guns crate"
+ containername = "Energy gun crate"
access = access_armory
/datum/supply_packs/munitions/bolt_rifles_competitive
diff --git a/code/datums/supplypacks/robotics.dm b/code/datums/supplypacks/robotics.dm
index 80d315af10..11dc34c404 100644
--- a/code/datums/supplypacks/robotics.dm
+++ b/code/datums/supplypacks/robotics.dm
@@ -24,7 +24,7 @@
containername = "Robotics assembly"
access = access_robotics
-/datum/supply_packs/robotics/robolimbs_basic
+/*/datum/supply_packs/robotics/robolimbs_basic
name = "Basic robolimb blueprints"
contains = list(
/obj/item/weapon/disk/limb/morpheus,
@@ -50,6 +50,55 @@
containertype = /obj/structure/closet/crate/secure/gear
containername = "Robolimb blueprints (adv)"
access = access_robotics
+*/
+
+/datum/supply_packs/robotics/robolimbs/morpheus
+ name = "Morpheus robolimb blueprints"
+ contains = list(/obj/item/weapon/disk/limb/morpheus)
+ cost = 20
+ containertype = /obj/structure/closet/crate/secure/gear
+ containername = "Robolimb blueprints (Morpheus)"
+ access = access_robotics
+
+/datum/supply_packs/robotics/robolimbs/xion
+ name = "Xion robolimb blueprints"
+ contains = list(/obj/item/weapon/disk/limb/xion)
+ cost = 20
+ containertype = /obj/structure/closet/crate/secure/gear
+ containername = "Robolimb blueprints (Xion)"
+ access = access_robotics
+
+/datum/supply_packs/robotics/robolimbs/wardtakahashi
+ name = "Ward-Takahashi robolimb blueprints"
+ contains = list(/obj/item/weapon/disk/limb/wardtakahashi)
+ cost = 35
+ containertype = /obj/structure/closet/crate/secure/gear
+ containername = "Robolimb blueprints (Ward-Takahashi)"
+ access = access_robotics
+
+/datum/supply_packs/robotics/robolimbs/zenghu
+ name = "Zeng Hu robolimb blueprints"
+ contains = list(/obj/item/weapon/disk/limb/zenghu)
+ cost = 35
+ containertype = /obj/structure/closet/crate/secure/gear
+ containername = "Robolimb blueprints (Zeng Hu)"
+ access = access_robotics
+
+/datum/supply_packs/robotics/robolimbs/bishop
+ name = "Bishop robolimb blueprints"
+ contains = list(/obj/item/weapon/disk/limb/bishop)
+ cost = 70
+ containertype = /obj/structure/closet/crate/secure/gear
+ containername = "Robolimb blueprints (Bishop)"
+ access = access_robotics
+
+/datum/supply_packs/robotics/robolimbs/veymed
+ name = "Vey-Med robolimb blueprints"
+ contains = list(/obj/item/weapon/disk/limb/veymed)
+ cost = 70
+ containertype = /obj/structure/closet/crate/secure/gear
+ containername = "Robolimb blueprints (Vey-Med)"
+ access = access_robotics
/datum/supply_packs/robotics/mecha_ripley
name = "Circuit Crate (\"Ripley\" APLU)"
diff --git a/code/datums/supplypacks/voidsuits.dm b/code/datums/supplypacks/voidsuits.dm
index 6bf5c0f5b3..658ed5562f 100644
--- a/code/datums/supplypacks/voidsuits.dm
+++ b/code/datums/supplypacks/voidsuits.dm
@@ -21,6 +21,20 @@
containername = "Atmospheric voidsuit crate"
access = access_atmospherics
+/datum/supply_packs/voidsuits/atmos/alt
+ name = "Heavy Duty Atmospheric voidsuits"
+ contains = list(
+ /obj/item/clothing/suit/space/void/atmos/alt = 2,
+ /obj/item/clothing/head/helmet/space/void/atmos/alt = 2,
+ /obj/item/clothing/mask/breath = 2,
+ /obj/item/clothing/shoes/magboots = 2,
+ /obj/item/weapon/tank/oxygen = 2,
+ )
+ cost = 50
+ containertype = "/obj/structure/closet/crate/secure"
+ containername = "Heavy Duty Atmospheric voidsuit crate"
+ access = access_atmospherics
+
/datum/supply_packs/voidsuits/engineering
name = "Engineering voidsuits"
contains = list(
@@ -35,6 +49,48 @@
containername = "Engineering voidsuit crate"
access = access_engine_equip
+/datum/supply_packs/voidsuits/engineering/construction
+ name = "Engineering Construction voidsuits"
+ contains = list(
+ /obj/item/clothing/suit/space/void/engineering/construction = 2,
+ /obj/item/clothing/head/helmet/space/void/engineering/construction = 2,
+ /obj/item/clothing/mask/breath = 2,
+ /obj/item/clothing/shoes/magboots = 2,
+ /obj/item/weapon/tank/oxygen = 2
+ )
+ cost = 40
+ containertype = "/obj/structure/closet/crate/secure"
+ containername = "Engineering Construction voidsuit crate"
+ access = access_engine_equip
+
+/datum/supply_packs/voidsuits/engineering/hazmat
+ name = "Engineering Hazmat voidsuits"
+ contains = list(
+ /obj/item/clothing/suit/space/void/engineering/hazmat = 2,
+ /obj/item/clothing/head/helmet/space/void/engineering/hazmat = 2,
+ /obj/item/clothing/mask/breath = 2,
+ /obj/item/clothing/shoes/magboots = 2,
+ /obj/item/weapon/tank/oxygen = 2
+ )
+ cost = 45
+ containertype = "/obj/structure/closet/crate/secure"
+ containername = "Engineering Hazmat voidsuit crate"
+ access = access_engine_equip
+
+/datum/supply_packs/voidsuits/engineering/alt
+ name = "Reinforced Engineering voidsuits"
+ contains = list(
+ /obj/item/clothing/suit/space/void/engineering/alt = 2,
+ /obj/item/clothing/head/helmet/space/void/engineering/alt = 2,
+ /obj/item/clothing/mask/breath = 2,
+ /obj/item/clothing/shoes/magboots = 2,
+ /obj/item/weapon/tank/oxygen = 2
+ )
+ cost = 50
+ containertype = "/obj/structure/closet/crate/secure"
+ containername = "Reinforced Engineering voidsuit crate"
+ access = access_engine_equip
+
/datum/supply_packs/voidsuits/medical
name = "Medical voidsuits"
contains = list(
@@ -49,6 +105,48 @@
containername = "Medical voidsuit crate"
access = access_medical_equip
+/datum/supply_packs/voidsuits/medical/emt
+ name = "Medical EMT voidsuits"
+ contains = list(
+ /obj/item/clothing/suit/space/void/medical/emt = 2,
+ /obj/item/clothing/head/helmet/space/void/medical/emt = 2,
+ /obj/item/clothing/mask/breath = 2,
+ /obj/item/clothing/shoes/magboots = 2,
+ /obj/item/weapon/tank/oxygen = 2
+ )
+ cost = 40
+ containertype = "/obj/structure/closet/crate/secure"
+ containername = "Medical EMT voidsuit crate"
+ access = access_medical_equip
+
+/datum/supply_packs/voidsuits/medical/bio
+ name = "Medical Biohazard voidsuits"
+ contains = list(
+ /obj/item/clothing/suit/space/void/medical/bio = 2,
+ /obj/item/clothing/head/helmet/space/void/medical/bio = 2,
+ /obj/item/clothing/mask/breath = 2,
+ /obj/item/clothing/shoes/magboots = 2,
+ /obj/item/weapon/tank/oxygen = 2
+ )
+ cost = 45
+ containertype = "/obj/structure/closet/crate/secure"
+ containername = "Medical Biohazard voidsuit crate"
+ access = access_medical_equip
+
+/datum/supply_packs/voidsuits/medical/alt
+ name = "Vey-Med Medical voidsuits"
+ contains = list(
+ /obj/item/clothing/suit/space/void/medical/alt = 2,
+ /obj/item/clothing/head/helmet/space/void/medical/alt = 2,
+ /obj/item/clothing/mask/breath = 2,
+ /obj/item/clothing/shoes/magboots = 2,
+ /obj/item/weapon/tank/oxygen = 2
+ )
+ cost = 50
+ containertype = "/obj/structure/closet/crate/secure"
+ containername = "Vey-Med Medical voidsuit crate"
+ access = access_medical_equip
+
/datum/supply_packs/voidsuits/security
name = "Security voidsuits"
contains = list(
@@ -62,6 +160,32 @@
containertype = "/obj/structure/closet/crate/secure"
containername = "Security voidsuit crate"
+/datum/supply_packs/voidsuits/security/crowd
+ name = "Security Crowd Control voidsuits"
+ contains = list(
+ /obj/item/clothing/suit/space/void/security/riot = 2,
+ /obj/item/clothing/head/helmet/space/void/security/riot = 2,
+ /obj/item/clothing/mask/breath = 2,
+ /obj/item/clothing/shoes/magboots = 2,
+ /obj/item/weapon/tank/oxygen = 2
+ )
+ cost = 40
+ containertype = "/obj/structure/closet/crate/secure"
+ containername = "Security Crowd Control voidsuit crate"
+
+/datum/supply_packs/voidsuits/security/alt
+ name = "Security EVA Riot voidsuits"
+ contains = list(
+ /obj/item/clothing/suit/space/void/security/alt = 2,
+ /obj/item/clothing/head/helmet/space/void/security/alt = 2,
+ /obj/item/clothing/mask/breath = 2,
+ /obj/item/clothing/shoes/magboots = 2,
+ /obj/item/weapon/tank/oxygen = 2
+ )
+ cost = 50
+ containertype = "/obj/structure/closet/crate/secure"
+ containername = "Security EVA Riot voidsuit crate"
+
/datum/supply_packs/voidsuits/supply
name = "Mining voidsuits"
contains = list(
@@ -73,4 +197,17 @@
cost = 40
containertype = "/obj/structure/closet/crate/secure"
containername = "Mining voidsuit crate"
+ access = access_mining
+
+/datum/supply_packs/voidsuits/supply/alt
+ name = "Frontier Mining voidsuits"
+ contains = list(
+ /obj/item/clothing/suit/space/void/mining/alt = 2,
+ /obj/item/clothing/head/helmet/space/void/mining/alt = 2,
+ /obj/item/clothing/mask/breath = 2,
+ /obj/item/weapon/tank/oxygen = 2
+ )
+ cost = 50
+ containertype = "/obj/structure/closet/crate/secure"
+ containername = "Frontier Mining voidsuit crate"
access = access_mining
\ No newline at end of file
diff --git a/code/datums/underwear/undershirts.dm b/code/datums/underwear/undershirts.dm
index 4eba1c9378..273c5cba9e 100644
--- a/code/datums/underwear/undershirts.dm
+++ b/code/datums/underwear/undershirts.dm
@@ -8,11 +8,21 @@
icon_state = "undershirt"
has_color = TRUE
+/datum/category_item/underwear/undershirt/shirt_fem
+ name = "Babydoll shirt"
+ icon_state = "undershirt_fem"
+ has_color = TRUE
+
/datum/category_item/underwear/undershirt/shirt_long
name = "Longsleeve Shirt"
icon_state = "undershirt_long"
has_color = TRUE
+/datum/category_item/underwear/undershirt/shirt_long_fem
+ name = "Longsleeve Shirt, feminine"
+ icon_state = "undershirt_long_fem"
+ has_color = TRUE
+
/datum/category_item/underwear/undershirt/tank_top
name = "Tank top"
icon_state = "tanktop"
@@ -23,27 +33,59 @@
icon_state = "tanktop_alt"
has_color = TRUE
+/datum/category_item/underwear/undershirt/tank_top_alt_fem
+ name = "Tank top, alt, feminine"
+ icon_state = "tanktop_alt_fem"
+ has_color = TRUE
+
+/datum/category_item/underwear/undershirt/tank_top_alt_fem_vneck
+ name = "Tank top, feminine, v-neck"
+ icon_state = "tanktop_alt_fem_vneck"
+ has_color = TRUE
+
/datum/category_item/underwear/undershirt/tank_top_fire
name = "Tank top, fire"
icon_state = "tank_fire_s"
+/datum/category_item/underwear/undershirt/tank_top_fire_fem
+ name = "Tank top, fire, feminine"
+ icon_state = "tank_fire_fem_s"
+
/datum/category_item/underwear/undershirt/shirt_heart
name = "Shirt, heart"
icon_state = "lover_s"
+/datum/category_item/underwear/undershirt/shirt_heart_fem
+ name = "Shirt, heart, babydoll"
+ icon_state = "lover_fem_s"
+
/datum/category_item/underwear/undershirt/shirt_nt
name = "Shirt, NT"
icon_state = "shirt_nano_s"
/datum/category_item/underwear/undershirt/shirt_love_nt
name = "Shirt, I<3NT"
- icon_state = "lover_s"
+ icon_state = "ilovent_s"
+
+/datum/category_item/underwear/undershirt/shirt_love_nt_fem
+ name = "Shirt, I<3NT, babydoll"
+ icon_state = "ilovent_fem_s"
/datum/category_item/underwear/undershirt/shortsleeve_shirt
name = "Shortsleeve shirt"
icon_state = "shortsleeve"
has_color = TRUE
+/datum/category_item/underwear/undershirt/shortsleeve_shirt_fem
+ name = "Shortsleeve babydoll shirt"
+ icon_state = "shortsleeve_fem"
+ has_color = TRUE
+
+/datum/category_item/underwear/undershirt/shortsleeve_shirt_fem_vneck
+ name = "Shortsleeve babydoll shirt, v-neck"
+ icon_state = "shortsleeve_fem_vneck"
+ has_color = TRUE
+
/datum/category_item/underwear/undershirt/polo_shirt
name = "Polo shirt"
icon_state = "polo"
diff --git a/code/datums/underwear/underwear.dm b/code/datums/underwear/underwear.dm
index 22f538a9a1..bac96bf55c 100644
--- a/code/datums/underwear/underwear.dm
+++ b/code/datums/underwear/underwear.dm
@@ -67,7 +67,7 @@ datum/category_group/underwear/dd_SortValue()
if(!icon_state)
return
- var/image/I = image(icon = 'icons/mob/human.dmi', icon_state = icon_state)
+ var/image/I = image(icon = icon, icon_state = icon_state)
for(var/datum/gear_tweak/gt in tweaks)
gt.tweak_item(I, metadata && metadata["[gt]"] ? metadata["[gt]"] : gt.get_default())
return I
\ No newline at end of file
diff --git a/code/datums/uplink/ammunition.dm b/code/datums/uplink/ammunition.dm
index 33ecddf7da..2611ad18d3 100644
--- a/code/datums/uplink/ammunition.dm
+++ b/code/datums/uplink/ammunition.dm
@@ -18,14 +18,26 @@
name = "Pistol Magazine (.45)"
path = /obj/item/ammo_magazine/c45m
+/datum/uplink_item/item/ammo/c45map
+ name = "Pistol Magazine (.45 AP)"
+ path = /obj/item/ammo_magazine/c45m/ap
+
/datum/uplink_item/item/ammo/tommymag
name = "Tommygun Magazine (.45)"
path = /obj/item/ammo_magazine/tommymag
+/datum/uplink_item/item/ammo/tommymagap
+ name = "Tommygun Magazine (.45 AP)"
+ path = /obj/item/ammo_magazine/tommymag/ap
+
/datum/uplink_item/item/ammo/tommydrum
name = "Tommygun Drum Magazine (.45)"
path = /obj/item/ammo_magazine/tommydrum
- item_cost = 40 // Buy 40 bullets, get 10 free!
+ item_cost = 40
+
+/datum/uplink_item/item/ammo/tommydrumap
+ name = "Tommygun Drum Magazine (.45 AP)"
+ path = /obj/item/ammo_magazine/tommydrum/ap
/datum/uplink_item/item/ammo/darts
name = "Darts"
diff --git a/code/datums/uplink/badassery.dm b/code/datums/uplink/badassery.dm
index 62c570a972..463c55dcc1 100644
--- a/code/datums/uplink/badassery.dm
+++ b/code/datums/uplink/badassery.dm
@@ -3,6 +3,7 @@
************/
/datum/uplink_item/item/badassery
category = /datum/uplink_category/badassery
+ blacklisted = 1
/datum/uplink_item/item/badassery/balloon
name = "For showing that You Are The BOSS (Useless Balloon)"
@@ -19,7 +20,6 @@
/datum/uplink_item/item/badassery/random_one
name = "Random Item"
desc = "Buys you one random item."
- blacklisted = 1
/datum/uplink_item/item/badassery/random_one/buy(var/obj/item/device/uplink/U, var/mob/user)
var/datum/uplink_item/item = default_uplink_selection.get_random_item(U.uses)
diff --git a/code/game/antagonist/antagonist.dm b/code/game/antagonist/antagonist.dm
index cbfb17adf0..348bf6244d 100644
--- a/code/game/antagonist/antagonist.dm
+++ b/code/game/antagonist/antagonist.dm
@@ -3,6 +3,7 @@
// Text shown when becoming this antagonist.
var/list/restricted_jobs = list() // Jobs that cannot be this antagonist (depending on config)
var/list/protected_jobs = list() // As above.
+ var/list/roundstart_restricted = list() //Jobs that can be this antag, but not at roundstart
// Strings.
var/welcome_text = "Cry havoc and let slip the dogs of war!"
@@ -171,7 +172,7 @@
/datum/antagonist/proc/draft_antagonist(var/datum/mind/player)
//Check if the player can join in this antag role, or if the player has already been given an antag role.
- if(!can_become_antag(player))
+ if(!can_become_antag(player) || player.assigned_role in roundstart_restricted)
log_debug("[player.key] was selected for [role_text] by lottery, but is not allowed to be that role.")
return 0
if(player.special_role)
diff --git a/code/game/antagonist/station/cultist.dm b/code/game/antagonist/station/cultist.dm
index 3db723c556..e40085f90a 100644
--- a/code/game/antagonist/station/cultist.dm
+++ b/code/game/antagonist/station/cultist.dm
@@ -11,8 +11,9 @@ var/datum/antagonist/cultist/cult
role_text = "Cultist"
role_text_plural = "Cultists"
bantype = "cultist"
- restricted_jobs = list("Chaplain","AI", "Cyborg", "Internal Affairs Agent", "Head of Security", "Colony Director")
- protected_jobs = list("Security Officer", "Warden", "Detective")
+ restricted_jobs = list("Chaplain","AI", "Cyborg")
+ protected_jobs = list("Security Officer", "Warden", "Detective", "Internal Affairs Agent", "Head of Security", "Colony Director")
+ roundstart_restricted = list("Internal Affairs Agent", "Head of Security", "Colony Director")
role_type = BE_CULTIST
feedback_tag = "cult_objective"
antag_indicator = "cult"
diff --git a/code/game/antagonist/station/revolutionary.dm b/code/game/antagonist/station/revolutionary.dm
index 5af856e45e..9e6100c8af 100644
--- a/code/game/antagonist/station/revolutionary.dm
+++ b/code/game/antagonist/station/revolutionary.dm
@@ -29,8 +29,9 @@ var/datum/antagonist/revolutionary/revs
faction_indicator = "rev"
faction_invisible = 1
- restricted_jobs = list("Internal Affairs Agent", "AI", "Cyborg", "Colony Director", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer")
- protected_jobs = list("Security Officer", "Warden", "Detective")
+ restricted_jobs = list("AI", "Cyborg")
+ protected_jobs = list("Security Officer", "Warden", "Detective", "Internal Affairs Agent", "Colony Director", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer")
+ roundstart_restricted = list("Internal Affairs Agent", "Colony Director", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer")
/datum/antagonist/revolutionary/New()
..()
diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm
index bec6faf43a..088eac4f7b 100755
--- a/code/game/area/Space Station 13 areas.dm
+++ b/code/game/area/Space Station 13 areas.dm
@@ -2545,7 +2545,7 @@ area/space/atmosalert()
/area/tcomfoyer
name = "\improper Telecomms Foyer"
- icon_state = "tcomsatentrance"
+ icon_state = "tcomsatfoyer"
ambience = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg')
/area/tcomwest
diff --git a/code/game/gamemodes/changeling/powers/absorb.dm b/code/game/gamemodes/changeling/powers/absorb.dm
index a9219e8746..417fb339e0 100644
--- a/code/game/gamemodes/changeling/powers/absorb.dm
+++ b/code/game/gamemodes/changeling/powers/absorb.dm
@@ -53,6 +53,9 @@
src << "We stab [T] with the proboscis."
src.visible_message("[src] stabs [T] with the proboscis!")
T << "You feel a sharp stabbing pain!"
+ T.attack_log += text("\[[time_stamp()]\] Was absorbed by [key_name(src)]")
+ src.attack_log += text("\[[time_stamp()]\] Absorbed [key_name(T)]")
+ msg_admin_attack("[key_name(T)] was absorbed by [key_name(src)]")
var/obj/item/organ/external/affecting = T.get_organ(src.zone_sel.selecting)
if(affecting.take_damage(39,0,1,0,"large organic needle"))
T:UpdateDamageIcon()
diff --git a/code/game/gamemodes/changeling/powers/bioelectrogenesis.dm b/code/game/gamemodes/changeling/powers/bioelectrogenesis.dm
index 8a595f8d9e..3068f1eee5 100644
--- a/code/game/gamemodes/changeling/powers/bioelectrogenesis.dm
+++ b/code/game/gamemodes/changeling/powers/bioelectrogenesis.dm
@@ -43,7 +43,7 @@
if(istype(held_item,/obj/item/weapon/grab))
var/obj/item/weapon/grab/G = held_item
if(G.affecting)
- G.affecting.electrocute_act(10 * siemens,src,1.0,BP_TORSO)
+ G.affecting.electrocute_act(10 * siemens, src, 1.0, BP_TORSO, 0)
var/agony = 80 * siemens //Does more than if hit with an electric hand, since grabbing is slower.
G.affecting.stun_effect_act(0, agony, BP_TORSO, src)
@@ -166,7 +166,7 @@
src << "We require more chemicals to electrocute [S]!"
return 0
- S.electrocute_act(60 * siemens,src,1.0) //If only they had surge protectors.
+ S.electrocute_act(60,src,0.75) //If only they had surge protectors.
if(siemens)
visible_message("Arcs of electricity strike [S]!",
"Our hand channels raw electricity into [S]",
diff --git a/code/game/gamemodes/changeling/powers/blind_sting.dm b/code/game/gamemodes/changeling/powers/blind_sting.dm
index a9f9d2346e..e098c98f03 100644
--- a/code/game/gamemodes/changeling/powers/blind_sting.dm
+++ b/code/game/gamemodes/changeling/powers/blind_sting.dm
@@ -2,7 +2,7 @@
name = "Blind Sting"
desc = "We silently sting a human, completely blinding them for a short time."
enhancedtext = "Duration is extended."
- ability_icon_state = " ling_sting_blind"
+ ability_icon_state = "ling_sting_blind"
genomecost = 2
allowduringlesserform = 1
verbpath = /mob/proc/changeling_blind_sting
@@ -15,6 +15,9 @@
var/mob/living/carbon/T = changeling_sting(20,/mob/proc/changeling_blind_sting)
if(!T)
return 0
+ T.attack_log += text("\[[time_stamp()]\] Was blind stung by [key_name(src)]")
+ src.attack_log += text("\[[time_stamp()]\] Used blind sting on [key_name(T)]")
+ msg_admin_attack("[key_name(T)] was blind stung by [key_name(src)]")
T << "Your eyes burn horrificly!"
T.disabilities |= NEARSIGHTED
var/duration = 300
diff --git a/code/game/gamemodes/changeling/powers/cryo_sting.dm b/code/game/gamemodes/changeling/powers/cryo_sting.dm
index 681e46e737..e3e401e2ff 100644
--- a/code/game/gamemodes/changeling/powers/cryo_sting.dm
+++ b/code/game/gamemodes/changeling/powers/cryo_sting.dm
@@ -16,6 +16,9 @@
var/mob/living/carbon/T = changeling_sting(20,/mob/proc/changeling_cryo_sting)
if(!T)
return 0
+ T.attack_log += text("\[[time_stamp()]\] Was cryo stung by [key_name(src)]")
+ src.attack_log += text("\[[time_stamp()]\] Used cryo sting on [key_name(T)]")
+ msg_admin_attack("[key_name(T)] was cryo stung by [key_name(src)]")
var/inject_amount = 10
if(src.mind.changeling.recursive_enhancement)
inject_amount = inject_amount * 1.5
diff --git a/code/game/gamemodes/changeling/powers/deaf_sting.dm b/code/game/gamemodes/changeling/powers/deaf_sting.dm
index fcf5bfab7d..24c1e5d260 100644
--- a/code/game/gamemodes/changeling/powers/deaf_sting.dm
+++ b/code/game/gamemodes/changeling/powers/deaf_sting.dm
@@ -15,6 +15,9 @@
var/mob/living/carbon/T = changeling_sting(5,/mob/proc/changeling_deaf_sting)
if(!T) return 0
+ T.attack_log += text("\[[time_stamp()]\] Was deaf stung by [key_name(src)]")
+ src.attack_log += text("\[[time_stamp()]\] Used deaf sting on [key_name(T)]")
+ msg_admin_attack("[key_name(T)] was deaf stung by [key_name(src)]")
var/duration = 300
if(src.mind.changeling.recursive_enhancement)
duration = duration + 100
diff --git a/code/game/gamemodes/changeling/powers/death_sting.dm b/code/game/gamemodes/changeling/powers/death_sting.dm
index 705c1269a3..52412a4282 100644
--- a/code/game/gamemodes/changeling/powers/death_sting.dm
+++ b/code/game/gamemodes/changeling/powers/death_sting.dm
@@ -13,6 +13,9 @@
var/mob/living/carbon/T = changeling_sting(40,/mob/proc/changeling_DEATHsting)
if(!T)
return 0
+ T.attack_log += text("\[[time_stamp()]\] Was death stung by [key_name(src)]")
+ src.attack_log += text("\[[time_stamp()]\] Used death sting on [key_name(T)]")
+ msg_admin_attack("[key_name(T)] was death stung by [key_name(src)]")
T << "You feel a small prick and your chest becomes tight."
T.silent = 10
T.Paralyse(10)
diff --git a/code/game/gamemodes/changeling/powers/delayed_toxin_sting.dm b/code/game/gamemodes/changeling/powers/delayed_toxin_sting.dm
index 4a50140003..fd72524e5a 100644
--- a/code/game/gamemodes/changeling/powers/delayed_toxin_sting.dm
+++ b/code/game/gamemodes/changeling/powers/delayed_toxin_sting.dm
@@ -16,6 +16,9 @@
var/mob/living/carbon/T = changeling_sting(20,/mob/proc/changeling_delayed_toxic_sting)
if(!T)
return 0
+ T.attack_log += text("\[[time_stamp()]\] Was delayed toxic stung by [key_name(src)]")
+ src.attack_log += text("\[[time_stamp()]\] Used delayed toxic sting on [key_name(T)]")
+ msg_admin_attack("[key_name(T)] was delayed toxic stung by [key_name(src)]")
var/i = rand(20,30)
if(src.mind.changeling.recursive_enhancement)
i = i * 2
diff --git a/code/game/gamemodes/changeling/powers/enfeebling_string.dm b/code/game/gamemodes/changeling/powers/enfeebling_string.dm
index 9584da1e55..5370a68200 100644
--- a/code/game/gamemodes/changeling/powers/enfeebling_string.dm
+++ b/code/game/gamemodes/changeling/powers/enfeebling_string.dm
@@ -19,6 +19,11 @@
if(ishuman(T))
var/mob/living/carbon/human/H = T
+ T.attack_log += text("\[[time_stamp()]\] Was enfeebling stung by [key_name(src)]")
+ src.attack_log += text("\[[time_stamp()]\] Used enfeebling sting on [key_name(T)]")
+ msg_admin_attack("[key_name(T)] was enfeebling stung by [key_name(src)]")
+
+
var/effect = 30 //percent
if(src.mind.changeling.recursive_enhancement)
effect = effect + 20
diff --git a/code/game/gamemodes/changeling/powers/extract_dna_sting.dm b/code/game/gamemodes/changeling/powers/extract_dna_sting.dm
index c4f5aca088..6198e409a6 100644
--- a/code/game/gamemodes/changeling/powers/extract_dna_sting.dm
+++ b/code/game/gamemodes/changeling/powers/extract_dna_sting.dm
@@ -35,6 +35,10 @@
src << "This creature's DNA is ruined beyond useability!"
return 0
+ T.attack_log += text("\[[time_stamp()]\] Had DNA extracted via sting by [key_name(src)]")
+ src.attack_log += text("\[[time_stamp()]\] Used DNA extraction sting on [key_name(T)]")
+ msg_admin_attack("[key_name(T)] was DNA extraction stung by [key_name(src)]")
+
var/datum/absorbed_dna/newDNA = new(T.real_name, T.dna, T.species.name, T.languages)
absorbDNA(newDNA)
diff --git a/code/game/gamemodes/changeling/powers/lsd_sting.dm b/code/game/gamemodes/changeling/powers/lsd_sting.dm
index 275ebf5bad..9adb4acd09 100644
--- a/code/game/gamemodes/changeling/powers/lsd_sting.dm
+++ b/code/game/gamemodes/changeling/powers/lsd_sting.dm
@@ -13,6 +13,9 @@
var/mob/living/carbon/T = changeling_sting(15,/mob/proc/changeling_lsdsting)
if(!T) return 0
+ T.attack_log += text("\[[time_stamp()]\] Was hallucination stung by [key_name(src)]")
+ src.attack_log += text("\[[time_stamp()]\] Used hallucination sting on [key_name(T)]")
+ msg_admin_attack("[key_name(T)] was hallucination stung by [key_name(src)]")
spawn(rand(300,600))
if(T) T.hallucination += 400
feedback_add_details("changeling_powers","HS")
diff --git a/code/game/gamemodes/changeling/powers/para_sting.dm b/code/game/gamemodes/changeling/powers/para_sting.dm
index 37c31f5d00..efe6fe8f79 100644
--- a/code/game/gamemodes/changeling/powers/para_sting.dm
+++ b/code/game/gamemodes/changeling/powers/para_sting.dm
@@ -12,6 +12,9 @@
var/mob/living/carbon/T = changeling_sting(30,/mob/proc/changeling_paralysis_sting)
if(!T)
return 0
+ T.attack_log += text("\[[time_stamp()]\] Was paralysis stung by [key_name(src)]")
+ src.attack_log += text("\[[time_stamp()]\] Used paralysis sting on [key_name(T)]")
+ msg_admin_attack("[key_name(T)] was paralysis stung by [key_name(src)]")
T << "Your muscles begin to painfully tighten."
T.Weaken(20)
feedback_add_details("changeling_powers","PS")
diff --git a/code/game/gamemodes/changeling/powers/shriek.dm b/code/game/gamemodes/changeling/powers/shriek.dm
index b9303a3a81..2bfd0bf7d6 100644
--- a/code/game/gamemodes/changeling/powers/shriek.dm
+++ b/code/game/gamemodes/changeling/powers/shriek.dm
@@ -41,6 +41,10 @@
range = range * 2
src << "We are extra loud."
+ src.attack_log += text("\[[time_stamp()]\] Used Resonant Shriek.")
+ message_admins("[key_name(src)] used Resonant Shriek ([src.x],[src.y],[src.z]) (JMP).")
+ log_game("[key_name(src)] used Resonant Shriek.")
+
for(var/mob/living/M in range(range, src))
if(iscarbon(M))
if(!M.mind || !M.mind.changeling)
@@ -51,6 +55,7 @@
M.adjustEarDamage(0,30)
M.confused += 20
M << sound('sound/effects/screech.ogg')
+ M.attack_log += text("\[[time_stamp()]\] Was affected by [key_name(src)]'s Resonant Shriek.")
else
if(M != src)
M << "You hear a familiar screech from nearby. It has no effect on you."
@@ -60,6 +65,7 @@
M << sound('sound/weapons/flash.ogg')
M << "Auditory input overloaded. Reinitializing..."
M.Weaken(rand(5,10))
+ M.attack_log += text("\[[time_stamp()]\] Was affected by [key_name(src)]'s Resonant Shriek.")
for(var/obj/machinery/light/L in range(range, src))
L.on = 1
@@ -97,6 +103,10 @@
src << "We are extra loud."
src.mind.changeling.recursive_enhancement = 0
+ src.attack_log += text("\[[time_stamp()]\] Used Dissonant Shriek.")
+ message_admins("[key_name(src)] used Dissonant Shriek ([src.x],[src.y],[src.z]) (JMP).")
+ log_game("[key_name(src)] used Dissonant Shriek.")
+
for(var/obj/machinery/light/L in range(5, src))
L.on = 1
L.broken()
diff --git a/code/game/gamemodes/changeling/powers/silence_sting.dm b/code/game/gamemodes/changeling/powers/silence_sting.dm
index 9ebe8adf7c..1ab25278a4 100644
--- a/code/game/gamemodes/changeling/powers/silence_sting.dm
+++ b/code/game/gamemodes/changeling/powers/silence_sting.dm
@@ -15,6 +15,9 @@
var/mob/living/carbon/T = changeling_sting(10,/mob/proc/changeling_silence_sting)
if(!T) return 0
+ T.attack_log += text("\[[time_stamp()]\] Was silence stung by [key_name(src)]")
+ src.attack_log += text("\[[time_stamp()]\] Used silence sting on [key_name(T)]")
+ msg_admin_attack("[key_name(T)] was silence stung by [key_name(src)]")
var/duration = 30
if(src.mind.changeling.recursive_enhancement)
duration = duration + 10
diff --git a/code/game/gamemodes/changeling/powers/transform_sting.dm b/code/game/gamemodes/changeling/powers/transform_sting.dm
index b96b87288a..797eec92d2 100644
--- a/code/game/gamemodes/changeling/powers/transform_sting.dm
+++ b/code/game/gamemodes/changeling/powers/transform_sting.dm
@@ -36,6 +36,9 @@
if((HUSK in T.mutations) || (!ishuman(T) && !issmall(T)))
src << "Our sting appears ineffective against its DNA."
return 0
+ T.attack_log += text("\[[time_stamp()]\] Was transform stung by [key_name(src)]")
+ src.attack_log += text("\[[time_stamp()]\] Used transform sting on [key_name(T)]")
+ msg_admin_attack("[key_name(T)] was transform stung by [key_name(src)]")
T.visible_message("[T] transforms!")
T.dna = chosen_dna.Clone()
T.real_name = chosen_dna.real_name
diff --git a/code/game/gamemodes/changeling/powers/unfat_sting.dm b/code/game/gamemodes/changeling/powers/unfat_sting.dm
index d0248cf94e..4b42f55e30 100644
--- a/code/game/gamemodes/changeling/powers/unfat_sting.dm
+++ b/code/game/gamemodes/changeling/powers/unfat_sting.dm
@@ -11,6 +11,9 @@
var/mob/living/carbon/T = changeling_sting(5,/mob/proc/changeling_unfat_sting)
if(!T) return 0
+ T.attack_log += text("\[[time_stamp()]\] Was unfat stung by [key_name(src)]")
+ src.attack_log += text("\[[time_stamp()]\] Used unfat sting on [key_name(T)]")
+ msg_admin_attack("[key_name(T)] was unfat stung by [key_name(src)]")
T << "you feel a small prick as stomach churns violently and you become to feel skinnier."
T.overeatduration = 0
T.nutrition -= 100
diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm
index ac3e5c3d61..f463c9bd0f 100644
--- a/code/game/gamemodes/cult/cult_items.dm
+++ b/code/game/gamemodes/cult/cult_items.dm
@@ -110,6 +110,7 @@
slowdown = 1
armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 30, bio = 30, rad = 30)
siemens_coefficient = 0
+ flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|HANDS
/obj/item/clothing/suit/space/cult/cultify()
diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm
index 8425105020..ccf449a4dc 100644
--- a/code/game/gamemodes/cult/runes.dm
+++ b/code/game/gamemodes/cult/runes.dm
@@ -329,9 +329,8 @@ var/list/sacrificed = list()
is_sacrifice_target = 1
else
corpse_to_raise = M
- if(M.key)
- M.ghostize(1) //kick them out of their body
break
+
if(!corpse_to_raise)
if(is_sacrifice_target)
usr << "The Geometer of blood wants this mortal for himself."
@@ -357,38 +356,41 @@ var/list/sacrificed = list()
usr << "The sacrifical corpse is not dead. You must free it from this world of illusions before it may be used."
return fizzle()
- var/mob/observer/dead/ghost
- for(var/mob/observer/dead/O in loc)
- if(!O.client) continue
- if(O.mind && O.mind.current && O.mind.current.stat != DEAD) continue
- if(!(O.client.prefs.be_special & BE_CULTIST)) continue
- ghost = O
- break
-
- if(!ghost)
- usr << "You require a restless spirit which clings to this world. Beckon their prescence with the sacred chants of Nar-Sie."
+ if(!cult.can_become_antag(corpse_to_raise.mind) || jobban_isbanned(corpse_to_raise, "cultist"))
+ usr << "The Geometer of Blood refuses to touch this one."
return fizzle()
+ else if(!corpse_to_raise.client && corpse_to_raise.mind) //Don't force the dead person to come back if they don't want to.
+ for(var/mob/observer/dead/ghost in player_list)
+ if(ghost.mind == corpse_to_raise.mind)
+ ghost << "The cultist [usr.real_name] is trying to \
+ revive you. Return to your body if you want to be resurrected into the service of Nar'Sie! \
+ (Verbs -> Ghost -> Re-enter corpse)"
+ break
- corpse_to_raise.revive()
+ sleep(10 SECONDS)
- corpse_to_raise.key = ghost.key //the corpse will keep its old mind! but a new player takes ownership of it (they are essentially possessed)
- //This means, should that player leave the body, the original may re-enter
- usr.say("Pasnar val'keriam usinar. Savrae ines amutan. Yam'toth remium il'tarat!")
- corpse_to_raise.visible_message("[corpse_to_raise]'s eyes glow with a faint red as he stands up, slowly starting to breathe again.", \
- "Life... I'm alive again...", \
- "You hear a faint, slightly familiar whisper.")
- body_to_sacrifice.visible_message("[body_to_sacrifice] is torn apart, a black smoke swiftly dissipating from \his remains!", \
- "You feel as your blood boils, tearing you apart.", \
- "You hear a thousand voices, all crying in pain.")
- body_to_sacrifice.gib()
+ if(corpse_to_raise.client)
+
+ cult.add_antagonist(corpse_to_raise.mind)
+ corpse_to_raise.revive()
+
+ usr.say("Pasnar val'keriam usinar. Savrae ines amutan. Yam'toth remium il'tarat!")
+ corpse_to_raise.visible_message("[corpse_to_raise]'s eyes glow with a faint red as he stands up, slowly starting to breathe again.", \
+ "Life... I'm alive again...", \
+ "You hear a faint, slightly familiar whisper.")
+ body_to_sacrifice.visible_message("[body_to_sacrifice] is torn apart, a black smoke swiftly dissipating from \his remains!", \
+ "You feel as your blood boils, tearing you apart.", \
+ "You hear a thousand voices, all crying in pain.")
+ body_to_sacrifice.gib()
// if(ticker.mode.name == "cult")
// ticker.mode:add_cultist(corpse_to_raise.mind)
// else
// ticker.mode.cult |= corpse_to_raise.mind
- corpse_to_raise << "Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible truth. The veil of reality has been ripped away and in the festering wound left behind something sinister takes root."
- corpse_to_raise << "Assist your new compatriots in their dark dealings. Their goal is yours, and yours is theirs. You serve the Dark One above all else. Bring It back."
+ corpse_to_raise << "Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible truth. The veil of reality has been ripped away and in the festering wound left behind something sinister takes root."
+ corpse_to_raise << "Assist your new compatriots in their dark dealings. Their goal is yours, and yours is theirs. You serve the Dark One above all else. Bring It back."
+
return
diff --git a/code/game/gamemodes/technomancer/assistance/assistance.dm b/code/game/gamemodes/technomancer/assistance/assistance.dm
index 8779824896..3cdf7014ad 100644
--- a/code/game/gamemodes/technomancer/assistance/assistance.dm
+++ b/code/game/gamemodes/technomancer/assistance/assistance.dm
@@ -78,7 +78,7 @@
H << "You are the Technomancer's apprentice! Your goal is to assist them in their mission at the [station_name()]."
H << "Your service has not gone unrewarded, however. Studying under them, you have learned how to use a Manipulation Core \
- of your own. You also have a Catelog, to purchase your own functions and equipment as you see fit."
+ of your own. You also have a catalog, to purchase your own functions and equipment as you see fit."
H << "It would be wise to speak to your master, and learn what their plans are for today."
spawn(1)
diff --git a/code/game/gamemodes/technomancer/catalog.dm b/code/game/gamemodes/technomancer/catalog.dm
index 87ece90f8b..25f824d2b3 100644
--- a/code/game/gamemodes/technomancer/catalog.dm
+++ b/code/game/gamemodes/technomancer/catalog.dm
@@ -42,33 +42,33 @@ var/list/all_technomancer_assistance = typesof(/datum/technomancer/assistance) -
var/show_scepter_text = 0
/obj/item/weapon/technomancer_catalog/apprentice
- name = "apprentice's catelog"
+ name = "apprentice's catalog"
budget = 700
max_budget = 700
/obj/item/weapon/technomancer_catalog/master //for badmins, I suppose
- name = "master's catelog"
+ name = "master's catalog"
budget = 2000
max_budget = 2000
// Proc: bind_to_owner()
// Parameters: 1 (new_owner - mob that the book is trying to bind to)
-// Description: Links the catelog to hopefully the technomancer, so that only they can access it.
+// Description: Links the catalog to hopefully the technomancer, so that only they can access it.
/obj/item/weapon/technomancer_catalog/proc/bind_to_owner(var/mob/living/carbon/human/new_owner)
if(!owner && technomancers.is_antagonist(new_owner.mind))
owner = new_owner
// Proc: New()
// Parameters: 0
-// Description: Sets up the catelog, as shown below.
+// Description: Sets up the catalog, as shown below.
/obj/item/weapon/technomancer_catalog/New()
..()
set_up()
// Proc: set_up()
// Parameters: 0
-// Description: Instantiates all the catelog datums for everything that can be bought.
+// Description: Instantiates all the catalog datums for everything that can be bought.
/obj/item/weapon/technomancer_catalog/proc/set_up()
if(!spell_instances.len)
for(var/S in all_technomancer_spells)
@@ -100,7 +100,7 @@ var/list/all_technomancer_assistance = typesof(/datum/technomancer/assistance) -
return "[category]"
// Proc: attack_self()
-// Parameters: 1 (user - the mob clicking on the catelog)
+// Parameters: 1 (user - the mob clicking on the catalog)
// Description: Shows an HTML window, to buy equipment and spells, if the user is the legitimate owner. Otherwise it cannot be used.
/obj/item/weapon/technomancer_catalog/attack_self(mob/user)
if(!user)
@@ -207,12 +207,12 @@ var/list/all_technomancer_assistance = typesof(/datum/technomancer/assistance) -
dat += "You currently have a budget of [budget]/[max_budget].
"
dat += "
"
dat += "
Manipulation Core Owner's Manual
"
- dat += "This brief entry in your catelog will try to explain what everything does. For starters, the thing you're \
+ dat += "This brief entry in your catalog will try to explain what everything does. For starters, the thing you're \
probably wearing on your back is known as a Manipulation Core, or just a 'Core'. It allows you to do amazing \
things with almost no effort, depending on what functions you've purchased for it. Don't lose your core!
"
dat += "
"
dat += "There are a few things you need to keep in mind as you use your Core to manipulate the universe. The core \
- requires a special type of energy, that is referred to as just 'Energy' in the catelog. All cores generate \
+ requires a special type of energy, that is referred to as just 'Energy' in the catalog. All cores generate \
their own energy, some more than others. Most functions require energy be spent in order to work, so make sure not \
to run out in a critical moment. Besides waiting for your Core to recharge, you can buy certain functions which \
do something to generate energy.
"
@@ -242,13 +242,13 @@ var/list/all_technomancer_assistance = typesof(/datum/technomancer/assistance) -
dat += "You can refund functions, equipment items, and assistance items, so long as you are in your base. \
Once you leave, you can't refund anything, however you can still buy things if you still have points remaining. \
To refund functions, just click the 'Refund Functions' button on the top, when in the functions tabs. \
- For equipment items, you need to hit it against the catelog.
"
+ For equipment items, you need to hit it against the catalog.
"
dat += "
"
dat += "Your blue robes and hat are both stylish, and somewhat protective against hostile energies, which includes \
EXTERNAL instability sources (like Glow), and mundane electricity. If you're looking for protection against other \
things, it's suggested you purchase or otherwise obtain armor.
"
dat += "
"
- dat += "There are a few terms you may not understand in the catelog, so this will try to explain them.
"
+ dat += "There are a few terms you may not understand in the catalog, so this will try to explain them.
"
dat += "A function can be thought of as a 'spell', that you use by holding in your hands and trying to use it on \
a target of your choice.
"
dat += "Some functions can have their abilities enhanced by a special rod called the Scepter of Enhancement. \
@@ -265,7 +265,7 @@ var/list/all_technomancer_assistance = typesof(/datum/technomancer/assistance) -
// Proc: Topic()
// Parameters: 2 (href - don't know, href_list - the choice that the person using the interface above clicked on.)
-// Description: Acts upon clicks on links for the catelog, if they are the rightful owner.
+// Description: Acts upon clicks on links for the catalog, if they are the rightful owner.
/obj/item/weapon/technomancer_catalog/Topic(href, href_list)
..()
var/mob/living/carbon/human/H = usr
diff --git a/code/game/gamemodes/technomancer/core_obj.dm b/code/game/gamemodes/technomancer/core_obj.dm
index 491f9c4c3c..079db9a90b 100644
--- a/code/game/gamemodes/technomancer/core_obj.dm
+++ b/code/game/gamemodes/technomancer/core_obj.dm
@@ -23,6 +23,7 @@
var/instability_modifier = 0.8 // Multiplier on how much instability is added.
var/energy_cost_modifier = 1.0 // Multiplier on how much spells will cost.
var/spell_power_modifier = 1.0 // Multiplier on how strong spells are.
+ var/cooldown_modifier = 1.0 // Multiplier on cooldowns for spells.
var/list/spells = list() // This contains the buttons used to make spells in the user's hand.
var/list/appearances = list( // Assoc list containing possible icon_states that the wiz can change the core to.
"default" = "technomancer_core",
@@ -118,7 +119,11 @@
var/mob/living/L = A
if(L.stat == DEAD)
summoned_mobs -= L
- qdel(L)
+ spawn(1)
+ L.visible_message("\The [L] begins to fade away...")
+ animate(L, alpha = 255, alpha = 0, time = 30) // Makes them fade into nothingness.
+ sleep(30)
+ qdel(L)
// Deletes all the summons and wards from the core, so that Destroy() won't have issues.
/obj/item/weapon/technomancer_core/proc/dismiss_all_summons()
@@ -248,6 +253,7 @@
regen_rate = 70 //100 seconds to full
slowdown = -1
instability_modifier = 0.9
+ cooldown_modifier = 0.9
//Big batteries but slow regen, buying energy spells is highly recommended.
/obj/item/weapon/technomancer_core/bulky
diff --git a/code/game/gamemodes/technomancer/devices/shield_armor.dm b/code/game/gamemodes/technomancer/devices/shield_armor.dm
index 3e4ddbce1f..bacb2c60ed 100644
--- a/code/game/gamemodes/technomancer/devices/shield_armor.dm
+++ b/code/game/gamemodes/technomancer/devices/shield_armor.dm
@@ -60,6 +60,10 @@
var/obj/item/projectile/P = damage_source
P.sharp = 0
P.edge = 0
+ P.embed_chance = 0
+ if(P.agony)
+ var/agony_blocked = P.agony * (modified_block_percentage / 100)
+ P.agony -= agony_blocked
P.damage = P.damage - damage_blocked
user.visible_message("\The [user]'s [src] absorbs [attack_text]!")
diff --git a/code/game/gamemodes/technomancer/instability.dm b/code/game/gamemodes/technomancer/instability.dm
index 8f9eebeb17..4b04330b5b 100644
--- a/code/game/gamemodes/technomancer/instability.dm
+++ b/code/game/gamemodes/technomancer/instability.dm
@@ -115,7 +115,7 @@
rng = rand(0,4)
switch(rng)
if(0)
- electrocute_act(instability * 0.3, "unstable energies")
+ electrocute_act(instability * 0.3, "unstable energies", 0.75)
if(1)
adjustFireLoss(instability * 0.15) //7.5 burn @ 50 instability
src << "Your chassis alerts you to overheating from an unknown external force!"
@@ -132,7 +132,7 @@
rng = rand(0,3)
switch(rng)
if(0)
- electrocute_act(instability * 0.5, "extremely unstable energies")
+ electrocute_act(instability * 0.5, "extremely unstable energies", 0.75)
if(1)
emp_act(2)
if(2)
@@ -146,7 +146,7 @@
rng = rand(0,4)
switch(rng)
if(0)
- electrocute_act(instability, "extremely unstable energies")
+ electrocute_act(instability, "extremely unstable energies", 0.75)
if(1)
emp_act(1)
if(2)
diff --git a/code/game/gamemodes/technomancer/spell_objs.dm b/code/game/gamemodes/technomancer/spell_objs.dm
index d4f7b4b7d5..fb22001d30 100644
--- a/code/game/gamemodes/technomancer/spell_objs.dm
+++ b/code/game/gamemodes/technomancer/spell_objs.dm
@@ -230,8 +230,9 @@
else if(cast_methods & CAST_RANGED) //Try to use a ranged method if a melee one doesn't exist.
on_ranged_cast(target, user)
if(cooldown)
- user.setClickCooldown(cooldown)
- flick("cooldown_[cooldown]",src)
+ var/effective_cooldown = round(cooldown * core.cooldown_modifier, 5)
+ user.setClickCooldown(effective_cooldown)
+ flick("cooldown_[effective_cooldown]",src)
// Proc: place_spell_in_hand()
// Parameters: 1 (path - the type path for the spell that is desired.)
diff --git a/code/game/gamemodes/technomancer/spells/aura/aura.dm b/code/game/gamemodes/technomancer/spells/aura/aura.dm
index a265507091..23e45a2669 100644
--- a/code/game/gamemodes/technomancer/spells/aura/aura.dm
+++ b/code/game/gamemodes/technomancer/spells/aura/aura.dm
@@ -8,7 +8,7 @@
/obj/item/weapon/spell/aura/New()
..()
- set_light(7, calculate_spell_power(4), l_color = glow_color)
+ set_light(calculate_spell_power(7), calculate_spell_power(4), l_color = glow_color)
processing_objects |= src
log_and_message_admins("has started casting [src].")
diff --git a/code/game/gamemodes/technomancer/spells/aura/biomed_aura.dm b/code/game/gamemodes/technomancer/spells/aura/biomed_aura.dm
index ec73fb1011..3daddc12d4 100644
--- a/code/game/gamemodes/technomancer/spells/aura/biomed_aura.dm
+++ b/code/game/gamemodes/technomancer/spells/aura/biomed_aura.dm
@@ -11,7 +11,7 @@
name = "restoration aura"
desc = "Allows everyone, or just your allies, to slowly regenerate."
icon_state = "generic"
- cast_methods = null
+ cast_methods = CAST_USE
aspect = ASPECT_BIOMED
glow_color = "#33CC33"
var/regen_tick = 0
@@ -31,8 +31,8 @@
else
mobs_to_heal |= L // Heal everyone!
for(var/mob/living/L in mobs_to_heal)
- L.adjustBruteLoss(calculate_spell_power(-2))
- L.adjustFireLoss(calculate_spell_power(-2))
+ L.adjustBruteLoss(calculate_spell_power(-5))
+ L.adjustFireLoss(calculate_spell_power(-5))
adjust_instability(2)
/obj/item/weapon/spell/aura/biomed/on_use_cast(mob/living/user)
diff --git a/code/game/gamemodes/technomancer/spells/aura/fire_aura.dm b/code/game/gamemodes/technomancer/spells/aura/fire_aura.dm
index 23687e9c88..7abf5d6898 100644
--- a/code/game/gamemodes/technomancer/spells/aura/fire_aura.dm
+++ b/code/game/gamemodes/technomancer/spells/aura/fire_aura.dm
@@ -22,14 +22,14 @@
qdel(src)
var/list/nearby_things = range(calculate_spell_power(4),owner)
- var/temp_change = calculate_spell_power(40)
+ var/temp_change = calculate_spell_power(80)
var/temp_cap = calculate_spell_power(600)
var/fire_power = calculate_spell_power(2)
if(check_for_scepter())
- temp_change = calculate_spell_power(80)
- temp_cap = calculate_spell_power(1000)
- fire_power = calculate_spell_power(4)
+ temp_change *= 2
+ temp_cap *= 2
+ fire_power *= 2
for(var/mob/living/carbon/human/H in nearby_things)
if(is_ally(H))
diff --git a/code/game/gamemodes/technomancer/spells/aura/frost_aura.dm b/code/game/gamemodes/technomancer/spells/aura/frost_aura.dm
index 921705dce2..20ef497cc3 100644
--- a/code/game/gamemodes/technomancer/spells/aura/frost_aura.dm
+++ b/code/game/gamemodes/technomancer/spells/aura/frost_aura.dm
@@ -22,11 +22,11 @@
qdel(src)
var/list/nearby_mobs = range(calculate_spell_power(4),owner)
- var/temp_change = calculate_spell_power(25)
+ var/temp_change = calculate_spell_power(40)
var/temp_cap = 260 // Just above the damage threshold, for humans. Unathi are less fortunate.
if(check_for_scepter())
- temp_change = calculate_spell_power(50)
+ temp_change *= 2
temp_cap = 200
for(var/mob/living/carbon/human/H in nearby_mobs)
if(is_ally(H))
diff --git a/code/game/gamemodes/technomancer/spells/aura/shock_aura.dm b/code/game/gamemodes/technomancer/spells/aura/shock_aura.dm
index 2cc1b5d73f..0af246d69c 100644
--- a/code/game/gamemodes/technomancer/spells/aura/shock_aura.dm
+++ b/code/game/gamemodes/technomancer/spells/aura/shock_aura.dm
@@ -17,7 +17,7 @@
glow_color = "#0000FF" //TODO
/obj/item/weapon/spell/aura/shock/process()
- if(!pay_energy(1000))
+ if(!pay_energy(500))
qdel(src)
var/list/nearby_mobs = range(calculate_spell_power(4),owner)
var/power = calculate_spell_power(7)
@@ -38,7 +38,7 @@
var/obj/item/organ/external/affected = H.get_organ(check_zone(BP_TORSO))
H.electrocute_act(power, src, H.get_siemens_coefficient_organ(affected), affected)
else
- L.electrocute_act(power, src, 1.0, BP_TORSO)
+ L.electrocute_act(power, src, 0.75, BP_TORSO)
adjust_instability(3)
\ No newline at end of file
diff --git a/code/game/gamemodes/technomancer/spells/blink.dm b/code/game/gamemodes/technomancer/spells/blink.dm
index a3ddae6517..74eba8adb9 100644
--- a/code/game/gamemodes/technomancer/spells/blink.dm
+++ b/code/game/gamemodes/technomancer/spells/blink.dm
@@ -1,7 +1,8 @@
/datum/technomancer/spell/blink
name = "Blink"
- desc = "Force the target to teleport a short distance away. This target could be anything from something lying on the ground, to someone trying to \
- fight you, or even yourself. Using this on someone next to you makes their potential distance after teleportation greater."
+ desc = "Force the target to teleport a short distance away. This target could be anything from something lying on the ground, \
+ to someone trying to fight you, or even yourself. Using this on someone next to you makes their potential distance after \
+ teleportation greater. Self casting has the greatest potential for distance, as well as the cheapest cost."
enhancement_desc = "Blink distance is increased greatly."
spell_power_desc = "Blink distance is scaled up with more spell power."
cost = 50
@@ -54,25 +55,37 @@
if(!within_range(AM))
user << "\The [AM] is too far away to blink."
return
- if(check_for_scepter())
- safe_blink(AM, calculate_spell_power(6))
+ if(pay_energy(400))
+ if(check_for_scepter())
+ safe_blink(AM, calculate_spell_power(6))
+ else
+ safe_blink(AM, calculate_spell_power(3))
+ adjust_instability(3)
+ log_and_message_admins("has blinked [AM] away.")
else
- safe_blink(AM, calculate_spell_power(3))
- log_and_message_admins("has blinked [AM] away.")
+ to_chat(user, "You need more energy to blink [AM] away!")
/obj/item/weapon/spell/blink/on_use_cast(mob/user)
- if(check_for_scepter())
- safe_blink(user, calculate_spell_power(10))
+ if(pay_energy(200))
+ if(check_for_scepter())
+ safe_blink(user, calculate_spell_power(10))
+ else
+ safe_blink(user, calculate_spell_power(6))
+ adjust_instability(1)
+ log_and_message_admins("has blinked themselves away.")
else
- safe_blink(user, calculate_spell_power(6))
- log_and_message_admins("has blinked themselves away.")
+ to_chat(user, "You need more energy to blink yourself away!")
/obj/item/weapon/spell/blink/on_melee_cast(atom/hit_atom, mob/living/user, def_zone)
if(istype(hit_atom, /atom/movable))
var/atom/movable/AM = hit_atom
- visible_message("\The [user] reaches out towards \the [AM] with a glowing hand.")
- if(check_for_scepter())
- safe_blink(AM, 10)
+ if(pay_energy(300))
+ visible_message("\The [user] reaches out towards \the [AM] with a glowing hand.")
+ if(check_for_scepter())
+ safe_blink(AM, 10)
+ else
+ safe_blink(AM, 6)
+ adjust_instability(2)
+ log_and_message_admins("has blinked [AM] away.")
else
- safe_blink(AM, 6)
- log_and_message_admins("has blinked [AM] away.")
\ No newline at end of file
+ to_chat(user, "You need more energy to blink [AM] away!")
\ No newline at end of file
diff --git a/code/game/gamemodes/technomancer/spells/condensation.dm b/code/game/gamemodes/technomancer/spells/condensation.dm
index f4c7be60ff..c02e1c1ac5 100644
--- a/code/game/gamemodes/technomancer/spells/condensation.dm
+++ b/code/game/gamemodes/technomancer/spells/condensation.dm
@@ -30,7 +30,7 @@
W.set_color()
W.set_up(desired_turf)
flick(initial(icon_state),W) // Otherwise pooling causes the animation to stay stuck at the end.
- log_and_message_admins("has wetted the floor with [src] at [T.x],[T.y],[T.z].")
+ log_and_message_admins("has wetted the floor with [src] at [T.x],[T.y],[T.z].")
else if(hit_atom.reagents && !ismob(hit_atom))
hit_atom.reagents.add_reagent(id = "water", amount = 60, data = null, safety = 0)
adjust_instability(5)
\ No newline at end of file
diff --git a/code/game/gamemodes/technomancer/spells/control.dm b/code/game/gamemodes/technomancer/spells/control.dm
index 7ff42299b8..8b30eb0f14 100644
--- a/code/game/gamemodes/technomancer/spells/control.dm
+++ b/code/game/gamemodes/technomancer/spells/control.dm
@@ -133,7 +133,7 @@
if(L.client)
user << "\The [L] seems to resist you!"
return 0
- if(pay_energy(1000))
+ if(pay_energy(500))
select(L)
user << "\The [L] is now under your (limited) control."
else //Deselect them
@@ -144,7 +144,7 @@
if(!controlled_mobs.len)
user << "You have no entities under your control to command."
return 0
- if(pay_energy(50 * controlled_mobs.len))
+ if(pay_energy(25 * controlled_mobs.len))
attack_all(L)
log_and_message_admins("has commanded their army of [controlled_mobs.len] to attack [L].")
user << "You command your [controlled_mobs.len > 1 ? "entities" : "[controlled_mobs[1]]"] to \
@@ -158,7 +158,7 @@
if(!controlled_mobs.len)
user << "You have no entities under your control to command."
return 0
- if(pay_energy(50 * controlled_mobs.len))
+ if(pay_energy(10 * controlled_mobs.len))
move_all(T)
adjust_instability(controlled_mobs.len)
user << "You command your [controlled_mobs.len > 1 ? "entities" : "[controlled_mobs[1]]"] to move \
diff --git a/code/game/gamemodes/technomancer/spells/energy_siphon.dm b/code/game/gamemodes/technomancer/spells/energy_siphon.dm
index e5c83c91b6..630bd5408f 100644
--- a/code/game/gamemodes/technomancer/spells/energy_siphon.dm
+++ b/code/game/gamemodes/technomancer/spells/energy_siphon.dm
@@ -193,9 +193,9 @@
if(ishuman(target_mob)) // Otherwise someone else stood in the beam and is going to pay for it.
var/mob/living/carbon/human/H = target_mob
var/obj/item/organ/external/affected = H.get_organ(check_zone(BP_TORSO))
- H.electrocute_act(power, src, H.get_siemens_coefficient_organ(affected), affected)
+ H.electrocute_act(power, src, H.get_siemens_coefficient_organ(affected), affected, 0)
else
- target_mob.electrocute_act(power, src, 1.0, BP_TORSO)
+ target_mob.electrocute_act(power, src, 0.75, BP_TORSO)
return 0 // Since this is a continous beam, it needs to keep flying until it hits the Technomancer.
diff --git a/code/game/gamemodes/technomancer/spells/illusion.dm b/code/game/gamemodes/technomancer/spells/illusion.dm
index 9667df1db4..12f04db48c 100644
--- a/code/game/gamemodes/technomancer/spells/illusion.dm
+++ b/code/game/gamemodes/technomancer/spells/illusion.dm
@@ -19,7 +19,7 @@
/obj/item/weapon/spell/illusion/on_ranged_cast(atom/hit_atom, mob/user)
if(istype(hit_atom, /atom/movable))
var/atom/movable/AM = hit_atom
- if(pay_energy(500))
+ if(pay_energy(100))
copied = AM
update_icon()
user << "You've copied \the [AM]'s appearance."
@@ -30,7 +30,7 @@
if(!illusion)
if(!copied)
copied = user
- if(pay_energy(1000)) // 4
+ if(pay_energy(500))
illusion = new(T)
illusion.copy_appearance(copied)
if(ishuman(copied))
@@ -41,7 +41,7 @@
user << 'sound/effects/pop.ogg'
return 1
else
- if(pay_energy(300))
+ if(pay_energy(100))
spawn(1)
illusion.walk_loop(T)
diff --git a/code/game/gamemodes/technomancer/spells/insert/mend_organs.dm b/code/game/gamemodes/technomancer/spells/insert/mend_organs.dm
index 9eada3e815..550bb208ba 100644
--- a/code/game/gamemodes/technomancer/spells/insert/mend_organs.dm
+++ b/code/game/gamemodes/technomancer/spells/insert/mend_organs.dm
@@ -50,5 +50,7 @@
H.restore_blood() // Fix bloodloss
+ H.adjustBruteLoss(-heal_power)
+
sleep(1 SECOND)
on_expire()
diff --git a/code/game/gamemodes/technomancer/spells/phase_shift.dm b/code/game/gamemodes/technomancer/spells/phase_shift.dm
index e0a2bf3957..a79dfb7c37 100644
--- a/code/game/gamemodes/technomancer/spells/phase_shift.dm
+++ b/code/game/gamemodes/technomancer/spells/phase_shift.dm
@@ -1,14 +1,15 @@
/datum/technomancer/spell/phase_shift
name = "Phase Shift"
- desc = "Hides you in the safest possible place, where no harm can come to you. Unfortunately you can only stay inside for a few moments before \
- draining your powercell."
+ desc = "Hides you in the safest possible place, where no harm can come to you. Unfortunately, a prolonged stay inside the \
+ rift you create will afflict you with instability."
cost = 50
obj_path = /obj/item/weapon/spell/phase_shift
category = DEFENSIVE_SPELLS
/obj/item/weapon/spell/phase_shift
name = "phase shift"
- desc = "Allows you to dodge your untimely fate by shifting your location somewhere else, so long as you can sustain the energy to do so."
+ desc = "Allows you to dodge your untimely fate by shifting your location somewhere else, so long as you can survive inside the \
+ rift."
cast_methods = CAST_USE
aspect = ASPECT_TELE
diff --git a/code/game/gamemodes/technomancer/spells/projectile/chain_lightning.dm b/code/game/gamemodes/technomancer/spells/projectile/chain_lightning.dm
index 5b45105038..acb00a2c7f 100644
--- a/code/game/gamemodes/technomancer/spells/projectile/chain_lightning.dm
+++ b/code/game/gamemodes/technomancer/spells/projectile/chain_lightning.dm
@@ -39,9 +39,9 @@
if(ishuman(target_mob))
var/mob/living/carbon/human/H = target_mob
var/obj/item/organ/external/affected = H.get_organ(check_zone(BP_TORSO))
- H.electrocute_act(power, src, H.get_siemens_coefficient_organ(affected), affected)
+ H.electrocute_act(power, src, H.get_siemens_coefficient_organ(affected), affected, 0)
else
- target_mob.electrocute_act(power, src, 1.0, BP_TORSO)
+ target_mob.electrocute_act(power, src, 0.75, BP_TORSO)
hit_mobs |= target_mob
//Each bounce reduces the damage of the bolt.
diff --git a/code/game/gamemodes/technomancer/spells/projectile/ionic_bolt.dm b/code/game/gamemodes/technomancer/spells/projectile/ionic_bolt.dm
new file mode 100644
index 0000000000..68070d15c1
--- /dev/null
+++ b/code/game/gamemodes/technomancer/spells/projectile/ionic_bolt.dm
@@ -0,0 +1,20 @@
+/datum/technomancer/spell/ionic_bolt
+ name = "Ionic Bolt"
+ desc = "Shoots a bolt of ion energy at the target. If it hits something, it will generally drain energy, corrupt electronics, \
+ or otherwise ruin complex machinery."
+ cost = 100
+ obj_path = /obj/item/weapon/spell/projectile/ionic_bolt
+ category = OFFENSIVE_SPELLS
+
+/obj/item/weapon/spell/projectile/ionic_bolt
+ name = "ionic bolt"
+ icon_state = "ionic bolt"
+ desc = "For those pesky security units."
+ cast_methods = CAST_RANGED
+ aspect = ASPECT_EMP
+ spell_projectile = /obj/item/projectile/ion
+ energy_cost_per_shot = 500
+ instability_per_shot = 6
+ cooldown = 10
+ pre_shot_delay = 0
+ fire_sound = 'sound/effects/supermatter.ogg'
\ No newline at end of file
diff --git a/code/game/gamemodes/technomancer/spells/projectile/lightning.dm b/code/game/gamemodes/technomancer/spells/projectile/lightning.dm
index f6db21da25..e996416216 100644
--- a/code/game/gamemodes/technomancer/spells/projectile/lightning.dm
+++ b/code/game/gamemodes/technomancer/spells/projectile/lightning.dm
@@ -36,7 +36,7 @@
if(ishuman(target_mob))
var/mob/living/carbon/human/H = target_mob
var/obj/item/organ/external/affected = H.get_organ(check_zone(BP_TORSO))
- H.electrocute_act(power, src, H.get_siemens_coefficient_organ(affected), affected)
+ H.electrocute_act(power, src, H.get_siemens_coefficient_organ(affected), affected, 0)
else
- target_mob.electrocute_act(power, src, 1.0, BP_TORSO)
+ target_mob.electrocute_act(power, src, 0.75, BP_TORSO)
return 1
\ No newline at end of file
diff --git a/code/game/gamemodes/technomancer/spells/projectile/overload.dm b/code/game/gamemodes/technomancer/spells/projectile/overload.dm
index 14df919560..902c11c026 100644
--- a/code/game/gamemodes/technomancer/spells/projectile/overload.dm
+++ b/code/game/gamemodes/technomancer/spells/projectile/overload.dm
@@ -3,6 +3,7 @@
desc = "Fires a bolt of highly unstable energy, that does damaged equal to 0.3% of the technomancer's current reserve of energy. \
This energy pierces all known armor. Energy cost is equal to 10% of maximum core charge."
enhancement_desc = "Will do damage equal to 0.4% of current energy."
+ spell_power_desc = "Increases damage dealt, up to a cap of 80 damage per shot."
cost = 100
obj_path = /obj/item/weapon/spell/projectile/overload
category = OFFENSIVE_SPELLS
@@ -26,9 +27,19 @@
damage_type = BURN
armor_penetration = 100
+/obj/item/weapon/spell/projectile/overload/make_projectile(obj/item/projectile/projectile_type, mob/living/user)
+ var/obj/item/projectile/overload/P = new projectile_type(get_turf(user))
+ var/energy_before_firing = core.energy
+ if(check_for_scepter())
+ P.damage = round(energy_before_firing * 0.004) // .4% of their current energy pool.
+ else
+ P.damage = round(energy_before_firing * 0.003) // .3% of their current energy pool.
+ P.damage = min(calculate_spell_power(P.damage), 80)
+ return P
+
/obj/item/weapon/spell/projectile/overload/on_ranged_cast(atom/hit_atom, mob/living/user)
energy_cost_per_shot = round(core.max_energy * 0.10)
- var/energy_before_firing = core.energy
+/* var/energy_before_firing = core.energy
if(set_up(hit_atom, user))
var/obj/item/projectile/overload/P = new spell_projectile(get_turf(user))
P.launch(hit_atom)
@@ -38,3 +49,4 @@
P.damage = round(energy_before_firing * 0.003) // .3% of their current energy pool.
adjust_instability(instability_per_shot)
return 1
+*/
diff --git a/code/game/gamemodes/technomancer/spells/projectile/projectile.dm b/code/game/gamemodes/technomancer/spells/projectile/projectile.dm
index 5ba88cee20..544213f957 100644
--- a/code/game/gamemodes/technomancer/spells/projectile/projectile.dm
+++ b/code/game/gamemodes/technomancer/spells/projectile/projectile.dm
@@ -11,8 +11,7 @@
/obj/item/weapon/spell/projectile/on_ranged_cast(atom/hit_atom, mob/living/user)
if(set_up(hit_atom, user))
- var/obj/item/projectile/new_projectile = new spell_projectile(get_turf(user))
- new_projectile.damage = calculate_spell_power(new_projectile.damage)
+ var/obj/item/projectile/new_projectile = make_projectile(spell_projectile, user)
new_projectile.launch(hit_atom)
log_and_message_admins("has casted [src] at \the [hit_atom].")
if(fire_sound)
@@ -21,6 +20,11 @@
return 1
return 0
+/obj/item/weapon/spell/projectile/proc/make_projectile(obj/item/projectile/projectile_type, mob/living/user)
+ var/obj/item/projectile/P = new projectile_type(get_turf(user))
+ P.damage = calculate_spell_power(P.damage)
+ return P
+
/obj/item/weapon/spell/projectile/proc/set_up(atom/hit_atom, mob/living/user)
if(spell_projectile)
if(pay_energy(energy_cost_per_shot))
diff --git a/code/game/gamemodes/technomancer/spells/resurrect.dm b/code/game/gamemodes/technomancer/spells/resurrect.dm
index a652239721..c56df4f26e 100644
--- a/code/game/gamemodes/technomancer/spells/resurrect.dm
+++ b/code/game/gamemodes/technomancer/spells/resurrect.dm
@@ -37,7 +37,7 @@
dead_mob_list -= SM
living_mob_list += SM
SM.icon_state = SM.icon_living
- adjust_instability(30)
+ adjust_instability(15)
else if(ishuman(L))
var/mob/living/carbon/human/H = L
@@ -49,6 +49,9 @@
(Verbs -> Ghost -> Re-enter corpse)"
break
+ H.adjustBruteLoss(-40)
+ H.adjustFireLoss(-40)
+
sleep(10 SECONDS)
if(H.client)
L.stat = CONSCIOUS //Note that if whatever killed them in the first place wasn't fixed, they're likely to die again.
diff --git a/code/game/gamemodes/technomancer/spells/summon/summon_creature.dm b/code/game/gamemodes/technomancer/spells/summon/summon_creature.dm
index ea7d426c4b..e60d8e8d3a 100644
--- a/code/game/gamemodes/technomancer/spells/summon/summon_creature.dm
+++ b/code/game/gamemodes/technomancer/spells/summon/summon_creature.dm
@@ -50,6 +50,16 @@
summoned.health = calculate_spell_power(summoned.health)
summoned.melee_damage_lower = calculate_spell_power(summoned.melee_damage_lower)
summoned.melee_damage_upper = calculate_spell_power(summoned.melee_damage_upper)
+ // This makes the summon slower, so the crew has a chance to flee from massive monsters.
+ summoned.move_to_delay = calculate_spell_power(round(summoned.move_to_delay))
+
+ var/new_size = calculate_spell_power(1)
+ if(new_size != 1)
+ var/matrix/M = matrix()
+ M.Scale(new_size)
+ M.Translate(0, 16*(new_size-1))
+ summoned.transform = M
+
// Now we hurt their new pal, because being forcefully abducted by teleportation can't be healthy.
summoned.health = round(summoned.maxHealth * 0.7)
\ No newline at end of file
diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm
index 267fb1cca1..b2af2f1f17 100644
--- a/code/game/jobs/job/security.dm
+++ b/code/game/jobs/job/security.dm
@@ -38,7 +38,6 @@
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves)
// H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas(H), slot_wear_mask) //Grab one from the armory you donk
H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud(H), slot_glasses)
- H.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(H), slot_s_store)
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_l_store)
else
diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm
index b05a212915..4ae8e4bffc 100644
--- a/code/game/jobs/job_controller.dm
+++ b/code/game/jobs/job_controller.dm
@@ -364,6 +364,10 @@ var/global/datum/controller/occupations/job_master
H << "Your current species, job or whitelist status does not permit you to spawn with [thing]!"
continue
+ if(G.slot == "implant")
+ H.implant_loadout(G)
+ continue
+
if(G.slot && !(G.slot in custom_equip_slots))
// This is a miserable way to fix the loadout overwrite bug, but the alternative requires
// adding an arg to a bunch of different procs. Will look into it after this merge. ~ Z
diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm
index 7193a7907b..f69f5f6b2a 100644
--- a/code/game/machinery/Sleeper.dm
+++ b/code/game/machinery/Sleeper.dm
@@ -20,9 +20,10 @@
var/obj/machinery/sleeper/sleepernew = null
for(dir in list(NORTH, EAST, SOUTH, WEST)) // Loop through every direction
sleepernew = locate(/obj/machinery/sleeper, get_step(src, dir)) // Try to find a scanner in that direction
- if(sleepernew)
- sleeper = sleepernew
- sleepernew.console = src
+ if(sleepernew)
+ sleeper = sleepernew
+ sleepernew.console = src
+ return
return
/obj/machinery/sleep_console/attack_ai(var/mob/user)
diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm
index ca424f122b..bff06559d0 100644
--- a/code/game/machinery/alarm.dm
+++ b/code/game/machinery/alarm.dm
@@ -655,7 +655,8 @@
"tox_scrub",
"n2o_scrub",
"panic_siphon",
- "scrubbing")
+ "scrubbing",
+ "direction")
send_signal(device_id, list(href_list["command"] = text2num(href_list["val"])))
return 1
diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm
index e4f2df4b0f..ecd20ae76e 100644
--- a/code/game/machinery/cryopod.dm
+++ b/code/game/machinery/cryopod.dm
@@ -410,6 +410,13 @@
preserve = 1
break
+ if(istype(W,/obj/item/weapon/implant/health))
+ for(var/obj/machinery/computer/cloning/com in world)
+ for(var/datum/dna2/record/R in com.records)
+ if(R.implant == W)
+ qdel(R)
+ qdel(W)
+
if(!preserve)
qdel(W)
else
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 645ccc1fd0..383cc1b3a4 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -357,7 +357,7 @@ About the new airlock wires panel:
else /*if(src.justzap)*/
return
else if(user.hallucination > 50 && prob(10) && src.operating == 0)
- user << "You feel a powerful shock course through your body!"
+ to_chat(user,"You feel a powerful shock course through your body!")
user.halloss += 10
user.stunned += 10
return
@@ -461,7 +461,7 @@ About the new airlock wires panel:
src.electrified_until = duration == -1 ? -1 : world.time + SecondsToTicks(duration)
if(feedback && message)
- usr << message
+ to_chat(usr,message)
/obj/machinery/door/airlock/proc/set_idscan(var/activate, var/feedback = 0)
var/message = ""
@@ -475,7 +475,7 @@ About the new airlock wires panel:
message = "IdScan feature has been disabled."
if(feedback && message)
- usr << message
+ to_chat(usr,message)
/obj/machinery/door/airlock/proc/set_safeties(var/activate, var/feedback = 0)
var/message = ""
@@ -488,7 +488,7 @@ About the new airlock wires panel:
safe = 1
if(feedback && message)
- usr << message
+ to_chat(usr,message)
// shock user with probability prb (if all connections & power are working)
// returns 1 if shocked, 0 otherwise
@@ -596,43 +596,43 @@ About the new airlock wires panel:
src.aiHacking=1
spawn(20)
//TODO: Make this take a minute
- user << "Airlock AI control has been blocked. Beginning fault-detection."
+ to_chat(user,"Airlock AI control has been blocked. Beginning fault-detection.")
sleep(50)
if(src.canAIControl())
- user << "Alert cancelled. Airlock control has been restored without our assistance."
+ to_chat(user,"Alert cancelled. Airlock control has been restored without our assistance.")
src.aiHacking=0
return
else if(!src.canAIHack(user))
- user << "We've lost our connection! Unable to hack airlock."
+ to_chat(user,"We've lost our connection! Unable to hack airlock.")
src.aiHacking=0
return
- user << "Fault confirmed: airlock control wire disabled or cut."
+ to_chat(user,"Fault confirmed: airlock control wire disabled or cut.")
sleep(20)
- user << "Attempting to hack into airlock. This may take some time."
+ to_chat(user,"Attempting to hack into airlock. This may take some time.")
sleep(200)
if(src.canAIControl())
- user << "Alert cancelled. Airlock control has been restored without our assistance."
+ to_chat(user,"Alert cancelled. Airlock control has been restored without our assistance.")
src.aiHacking=0
return
else if(!src.canAIHack(user))
- user << "We've lost our connection! Unable to hack airlock."
+ to_chat(user,"We've lost our connection! Unable to hack airlock.")
src.aiHacking=0
return
- user << "Upload access confirmed. Loading control program into airlock software."
+ to_chat(user,"Upload access confirmed. Loading control program into airlock software.")
sleep(170)
if(src.canAIControl())
- user << "Alert cancelled. Airlock control has been restored without our assistance."
+ to_chat(user,"Alert cancelled. Airlock control has been restored without our assistance.")
src.aiHacking=0
return
else if(!src.canAIHack(user))
- user << "We've lost our connection! Unable to hack airlock."
+ to_chat(user,"We've lost our connection! Unable to hack airlock.")
src.aiHacking=0
return
- user << "Transfer complete. Forcing airlock to execute program."
+ to_chat(user,"Transfer complete. Forcing airlock to execute program.")
sleep(50)
//disable blocked control
src.aiControlDisabled = 2
- user << "Receiving control information from airlock."
+ to_chat(user,"Receiving control information from airlock.")
sleep(10)
//bring up airlock dialog
src.aiHacking = 0
@@ -664,16 +664,16 @@ About the new airlock wires panel:
/obj/machinery/door/airlock/CanUseTopic(var/mob/user)
if(operating < 0) //emagged
- user << "Unable to interface: Internal error."
+ to_chat(user,"Unable to interface: Internal error.")
return STATUS_CLOSE
if(issilicon(user) && !src.canAIControl())
if(src.canAIHack(user))
src.hack(user)
else
if (src.isAllPowerLoss()) //don't really like how this gets checked a second time, but not sure how else to do it.
- user << "Unable to interface: Connection timed out."
+ to_chat(user,"Unable to interface: Connection timed out.")
else
- user << "Unable to interface: Connection refused."
+ to_chat(user,"Unable to interface: Connection refused.")
return STATUS_CLOSE
return ..()
@@ -694,20 +694,20 @@ About the new airlock wires panel:
src.loseBackupPower()
if("bolts")
if(src.isWireCut(AIRLOCK_WIRE_DOOR_BOLTS))
- usr << "The door bolt control wire is cut - Door bolts permanently dropped."
+ to_chat(usr,"The door bolt control wire is cut - Door bolts permanently dropped.")
else if(activate && src.lock())
- usr << "The door bolts have been dropped."
+ to_chat(usr,"The door bolts have been dropped.")
else if(!activate && src.unlock())
- usr << "The door bolts have been raised."
+ to_chat(usr,"The door bolts have been raised.")
if("electrify_temporary")
electrify(30 * activate, 1)
if("electrify_permanently")
electrify(-1 * activate, 1)
if("open")
if(src.welded)
- usr << text("The airlock has been welded shut!")
+ to_chat(usr,text("The airlock has been welded shut!"))
else if(src.locked)
- usr << text("The door bolts are down!")
+ to_chat(usr,text("The door bolts are down!"))
else if(activate && density)
open()
else if(!activate && !density)
@@ -717,7 +717,7 @@ About the new airlock wires panel:
if("timing")
// Door speed control
if(src.isWireCut(AIRLOCK_WIRE_SPEED))
- usr << text("The timing wire is cut - Cannot alter timing.")
+ to_chat(usr,text("The timing wire is cut - Cannot alter timing."))
else if (activate && src.normalspeed)
normalspeed = 0
else if (!activate && !src.normalspeed)
@@ -725,13 +725,13 @@ About the new airlock wires panel:
if("lights")
// Bolt lights
if(src.isWireCut(AIRLOCK_WIRE_LIGHT))
- usr << "The bolt lights wire is cut - The door bolt lights are permanently disabled."
+ to_chat(usr,"The bolt lights wire is cut - The door bolt lights are permanently disabled.")
else if (!activate && src.lights)
lights = 0
- usr << "The door bolt lights have been disabled."
+ to_chat(usr,"The door bolt lights have been disabled.")
else if (activate && !src.lights)
lights = 1
- usr << "The door bolt lights have been enabled."
+ to_chat(usr,"The door bolt lights have been enabled.")
update_icon()
return 1
@@ -764,7 +764,7 @@ About the new airlock wires panel:
else if(istype(C, /obj/item/weapon/screwdriver))
if (src.p_open)
if (stat & BROKEN)
- usr << "The panel is broken and cannot be closed."
+ to_chat(usr,"The panel is broken and cannot be closed.")
else
src.p_open = 0
else
@@ -784,7 +784,7 @@ About the new airlock wires panel:
playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1)
user.visible_message("[user] removes the electronics from the airlock assembly.", "You start to remove electronics from the airlock assembly.")
if(do_after(user,40))
- user << "You removed the airlock electronics!"
+ to_chat(user,"You removed the airlock electronics!")
var/obj/structure/door_assembly/da = new assembly_type(src.loc)
if (istype(da, /obj/structure/door_assembly/multi_tile))
@@ -812,9 +812,9 @@ About the new airlock wires panel:
qdel(src)
return
else if(arePowerSystemsOn())
- user << "The airlock's motors resist your efforts to force it."
+ to_chat(user,"The airlock's motors resist your efforts to force it.")
else if(locked)
- user << "The airlock's bolts prevent it from being forced."
+ to_chat(user,"The airlock's bolts prevent it from being forced.")
else
if(density)
spawn(0) open(1)
@@ -826,12 +826,12 @@ About the new airlock wires panel:
var/obj/item/weapon/W = C
if((W.pry == 1) && !arePowerSystemsOn())
if(locked)
- user << "The airlock's bolts prevent it from being forced."
+ to_chat(user,"The airlock's bolts prevent it from being forced.")
else if( !welded && !operating )
if(istype(C, /obj/item/weapon/material/twohanded/fireaxe)) // If this is a fireaxe, make sure it's held in two hands.
var/obj/item/weapon/material/twohanded/fireaxe/F = C
if(!F.wielded)
- user << "You need to be wielding \the [F] to do that."
+ to_chat(user,"You need to be wielding \the [F] to do that.")
return
// At this point, it's an armblade or a fireaxe that passed the wielded test, let's try to open it.
if(density)
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index 2fea971119..185de7f06d 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -95,14 +95,18 @@
return 1
/obj/machinery/door/Bumped(atom/AM)
- if(p_open || operating) return
+ if(p_open || operating)
+ return
if(ismob(AM))
var/mob/M = AM
- if(world.time - M.last_bumped <= 10) return //Can bump-open one airlock per second. This is to prevent shock spam.
+ if(world.time - M.last_bumped <= 10)
+ return //Can bump-open one airlock per second. This is to prevent shock spam.
M.last_bumped = world.time
- if(!M.restrained())
+ if(M.restrained() && !check_access(null))
+ return
+ else
bumpopen(M)
- return
+
if(istype(AM, /mob/living/bot))
var/mob/living/bot/bot = AM
diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm
index 44a9dedae0..e234ac4d23 100644
--- a/code/game/machinery/doors/firedoor.dm
+++ b/code/game/machinery/doors/firedoor.dm
@@ -25,6 +25,7 @@
block_air_zones = 0
var/blocked = 0
+ var/prying = 0
var/lockdown = 0 // When the door has detected a problem, it locks.
var/pdiff_alert = 0
var/pdiff = 0
@@ -189,6 +190,8 @@
if(operating)
return//Already doing something.
if(istype(C, /obj/item/weapon/weldingtool) && !repairing)
+ if(prying)
+ to_chat(user,"Someone's busy prying that [density ? "open" : "closed"]!")
var/obj/item/weapon/weldingtool/W = C
if(W.remove_fuel(0, user))
blocked = !blocked
@@ -250,9 +253,16 @@
if(!F.wielded)
return
+ if(prying)
+ to_chat(user,"Someone's already prying that [density ? "open" : "closed"].")
+ return
+
user.visible_message("\The [user] starts to force \the [src] [density ? "open" : "closed"] with \a [C]!",\
"You start forcing \the [src] [density ? "open" : "closed"] with \the [C]!",\
"You hear metal strain.")
+ prying = 1
+ update_icon()
+ playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1)
if(do_after(user,30))
if(istype(C, /obj/item/weapon/crowbar))
if(stat & (BROKEN|NOPOWER) || !density)
@@ -269,7 +279,9 @@
else
spawn(0)
close()
- return
+ prying = 0
+ update_icon()
+ return
return ..()
@@ -365,6 +377,8 @@
overlays.Cut()
if(density)
icon_state = "door_closed"
+ if(prying)
+ icon_state = "prying_closed"
if(hatch_open)
overlays += "hatch"
if(blocked)
@@ -379,6 +393,8 @@
overlays += new/icon(icon,"alert_[ALERT_STATES[i]]", dir=cdir)
else
icon_state = "door_open"
+ if(prying)
+ icon_state = "prying_open"
if(blocked)
overlays += "welded_open"
return
diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm
index ed01c85149..2ac0c2a48d 100644
--- a/code/game/machinery/doors/windowdoor.dm
+++ b/code/game/machinery/doors/windowdoor.dm
@@ -189,43 +189,40 @@
visible_message("The glass door was sliced open by [user]!")
return 1
- //If it's emagged, crowbar can pry electronics out.
- if (src.operating == -1 && istype(I, /obj/item/weapon/crowbar))
+ //If it's opened/emagged, crowbar can pry it out of its frame.
+ if (!density && istype(I, /obj/item/weapon/crowbar))
playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1)
- user.visible_message("[user] removes the electronics from the windoor.", "You start to remove electronics from the windoor.")
+ user.visible_message("[user] begins prying the windoor out of the frame.", "You start to pry the windoor out of the frame.")
if (do_after(user,40))
- user << "You removed the windoor electronics!"
+ to_chat(user,"You pried the windoor out of the frame!")
var/obj/structure/windoor_assembly/wa = new/obj/structure/windoor_assembly(src.loc)
if (istype(src, /obj/machinery/door/window/brigdoor))
wa.secure = "secure_"
- wa.name = "secure wired windoor assembly"
- else
- wa.name = "wired windoor assembly"
if (src.base_state == "right" || src.base_state == "rightsecure")
wa.facing = "r"
wa.set_dir(src.dir)
wa.anchored = 1
wa.created_name = name
wa.state = "02"
- wa.update_icon()
+ wa.step = 2
+ wa.update_state()
- var/obj/item/weapon/airlock_electronics/ae
- if(!electronics)
- ae = new/obj/item/weapon/airlock_electronics( src.loc )
- if(!src.req_access)
- src.check_access()
- if(src.req_access.len)
- ae.conf_access = src.req_access
- else if (src.req_one_access.len)
- ae.conf_access = src.req_one_access
- ae.one_access = 1
+ if(operating == -1)
+ wa.electronics = new/obj/item/weapon/circuitboard/broken()
else
- ae = electronics
- electronics = null
- ae.loc = src.loc
- ae.icon_state = "door_electronics_smoked"
-
+ if(!electronics)
+ wa.electronics = new/obj/item/weapon/airlock_electronics()
+ if(!src.req_access)
+ src.check_access()
+ if(src.req_access.len)
+ wa.electronics.conf_access = src.req_access
+ else if (src.req_one_access.len)
+ wa.electronics.conf_access = src.req_one_access
+ wa.electronics.one_access = 1
+ else
+ wa.electronics = electronics
+ electronics = null
operating = 0
qdel(src)
return
diff --git a/code/game/machinery/floodlight.dm b/code/game/machinery/floodlight.dm
index 9f594e4178..88b36f6b5c 100644
--- a/code/game/machinery/floodlight.dm
+++ b/code/game/machinery/floodlight.dm
@@ -4,7 +4,7 @@
icon_state = "flood00"
density = 1
var/on = 0
- var/obj/item/weapon/cell/high/cell = null
+ var/obj/item/weapon/cell/cell = null
var/use = 200 // 200W light
var/unlocked = 0
var/open = 0
@@ -12,8 +12,6 @@
/obj/machinery/floodlight/New()
cell = new(src)
- cell.maxcharge = 1000
- cell.charge = 1000 // 41minutes @ 200W
..()
/obj/machinery/floodlight/update_icon()
diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm
index c0f2a284f4..e50688b7a9 100644
--- a/code/game/machinery/iv_drip.dm
+++ b/code/game/machinery/iv_drip.dm
@@ -2,7 +2,7 @@
name = "\improper IV drip"
icon = 'icons/obj/iv_drip.dmi'
anchored = 0
- density = 1
+ density = 0
/obj/machinery/iv_drip/var/mob/living/carbon/human/attached = null
diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm
index af8bd8eb41..d3107869ce 100644
--- a/code/game/machinery/machinery.dm
+++ b/code/game/machinery/machinery.dm
@@ -136,7 +136,13 @@ Class Procs:
component_parts -= A
if(contents) // The same for contents.
for(var/atom/A in contents)
- qdel(A)
+ if(ishuman(A))
+ var/mob/living/carbon/human/H = A
+ H.client.eye = H.client.mob
+ H.client.perspective = MOB_PERSPECTIVE
+ H.loc = src.loc
+ else
+ qdel(A)
return ..()
/obj/machinery/process()//If you dont use process or power why are you here
diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm
index 908ce1395f..4abdb685d0 100644
--- a/code/game/machinery/pipe/construction.dm
+++ b/code/game/machinery/pipe/construction.dm
@@ -50,6 +50,11 @@ Buildable meters
#define PIPE_SCRUBBERS_CAP 42
///// Mirrored T-valve ~ because I couldn't be bothered re-sorting all of the defines
#define PIPE_MTVALVEM 43
+///// Digital Valves sit here because otherwise we're resorting every define.
+#define PIPE_DVALVE 44
+#define PIPE_DTVALVE 45
+#define PIPE_DTVALVEM 46
+
/obj/item/pipe
name = "pipe"
@@ -70,6 +75,10 @@ Buildable meters
if (make_from)
src.set_dir(make_from.dir)
src.pipename = make_from.name
+ if(make_from.req_access)
+ src.req_access = make_from.req_access
+ if(make_from.req_one_access)
+ src.req_one_access = make_from.req_one_access
color = make_from.pipe_color
var/is_bent
if (make_from.initialize_directions in list(NORTH|SOUTH, WEST|EAST))
@@ -111,6 +120,8 @@ Buildable meters
src.pipe_type = PIPE_MANIFOLD
else if(istype(make_from, /obj/machinery/atmospherics/unary/vent_pump))
src.pipe_type = PIPE_UVENT
+ else if(istype(make_from, /obj/machinery/atmospherics/valve/digital))
+ src.pipe_type = PIPE_DVALVE
else if(istype(make_from, /obj/machinery/atmospherics/valve))
src.pipe_type = PIPE_MVALVE
else if(istype(make_from, /obj/machinery/atmospherics/binary/pump/high_power))
@@ -133,8 +144,12 @@ Buildable meters
src.pipe_type = PIPE_PASSIVE_GATE
else if(istype(make_from, /obj/machinery/atmospherics/unary/heat_exchanger))
src.pipe_type = PIPE_HEAT_EXCHANGE
+ else if(istype(make_from, /obj/machinery/atmospherics/tvalve/mirrored/digital))
+ src.pipe_type = PIPE_DTVALVEM
else if(istype(make_from, /obj/machinery/atmospherics/tvalve/mirrored))
src.pipe_type = PIPE_MTVALVEM
+ else if(istype(make_from, /obj/machinery/atmospherics/tvalve/digital))
+ src.pipe_type = PIPE_DTVALVE
else if(istype(make_from, /obj/machinery/atmospherics/tvalve))
src.pipe_type = PIPE_MTVALVE
else if(istype(make_from, /obj/machinery/atmospherics/pipe/manifold4w/visible/supply) || istype(make_from, /obj/machinery/atmospherics/pipe/manifold4w/hidden/supply))
@@ -254,6 +269,9 @@ Buildable meters
"supply pipe cap", \
"scrubbers pipe cap", \
"t-valve m", \
+ "dvalve", \
+ "dt-valve", \
+ "dt-valve m", \
)
name = nlist[pipe_type+1] + " fitting"
var/list/islist = list( \
@@ -304,6 +322,9 @@ Buildable meters
"cap", \
"cap", \
"mtvalvem", \
+ "dvalve", \
+ "dtvalve", \
+ "dtvalvem", \
)
icon_state = islist[pipe_type + 1]
@@ -370,6 +391,7 @@ Buildable meters
PIPE_SUPPLY_STRAIGHT, \
PIPE_SCRUBBERS_STRAIGHT, \
PIPE_UNIVERSAL, \
+ PIPE_DVALVE, \
)
return dir|flip
if(PIPE_SIMPLE_BENT, PIPE_INSULATED_BENT, PIPE_HE_BENT, PIPE_SUPPLY_BENT, PIPE_SCRUBBERS_BENT)
@@ -380,9 +402,9 @@ Buildable meters
return dir|flip|cw|acw
if(PIPE_MANIFOLD, PIPE_SUPPLY_MANIFOLD, PIPE_SCRUBBERS_MANIFOLD)
return flip|cw|acw
- if(PIPE_GAS_FILTER, PIPE_GAS_MIXER, PIPE_MTVALVE)
+ if(PIPE_GAS_FILTER, PIPE_GAS_MIXER, PIPE_MTVALVE, PIPE_DTVALVE)
return dir|flip|cw
- if(PIPE_GAS_FILTER_M, PIPE_GAS_MIXER_M, PIPE_MTVALVEM)
+ if(PIPE_GAS_FILTER_M, PIPE_GAS_MIXER_M, PIPE_MTVALVEM, PIPE_DTVALVEM)
return dir|flip|acw
if(PIPE_GAS_MIXER_T)
return dir|cw|acw
@@ -743,7 +765,6 @@ Buildable meters
V.node.initialize()
V.node.build_network()
-
if(PIPE_MVALVE) //manual valve
var/obj/machinery/atmospherics/valve/V = new( src.loc)
V.set_dir(dir)
@@ -1029,6 +1050,76 @@ Buildable meters
if (C.node)
C.node.initialize()
C.node.build_network()
+
+ if(PIPE_DVALVE) //digital valve
+ var/obj/machinery/atmospherics/valve/digital/V = new( src.loc)
+ if(src.req_access)
+ V.req_access = src.req_access
+ if(src.req_one_access)
+ V.req_one_access = src.req_one_access
+ V.set_dir(dir)
+ V.initialize_directions = pipe_dir
+ if (pipename)
+ V.name = pipename
+ var/turf/T = V.loc
+ V.level = !T.is_plating() ? 2 : 1
+ V.initialize()
+ V.build_network()
+ if (V.node1)
+ V.node1.initialize()
+ V.node1.build_network()
+ if (V.node2)
+ V.node2.initialize()
+ V.node2.build_network()
+
+ if(PIPE_DTVALVE) //digital t-valve
+ var/obj/machinery/atmospherics/tvalve/digital/V = new(src.loc)
+ if(src.req_access)
+ V.req_access = src.req_access
+ if(src.req_one_access)
+ V.req_one_access = src.req_one_access
+ V.set_dir(dir)
+ V.initialize_directions = pipe_dir
+ if (pipename)
+ V.name = pipename
+ var/turf/T = V.loc
+ V.level = !T.is_plating() ? 2 : 1
+ V.initialize()
+ V.build_network()
+ if (V.node1)
+ V.node1.initialize()
+ V.node1.build_network()
+ if (V.node2)
+ V.node2.initialize()
+ V.node2.build_network()
+ if (V.node3)
+ V.node3.initialize()
+ V.node3.build_network()
+
+ if(PIPE_DTVALVEM) //mirrored digital t-valve
+ var/obj/machinery/atmospherics/tvalve/mirrored/digital/V = new(src.loc)
+ if(src.req_access)
+ V.req_access = src.req_access
+ if(src.req_one_access)
+ V.req_one_access = src.req_one_access
+ V.set_dir(dir)
+ V.initialize_directions = pipe_dir
+ if (pipename)
+ V.name = pipename
+ var/turf/T = V.loc
+ V.level = !T.is_plating() ? 2 : 1
+ V.initialize()
+ V.build_network()
+ if (V.node1)
+ V.node1.initialize()
+ V.node1.build_network()
+ if (V.node2)
+ V.node2.initialize()
+ V.node2.build_network()
+ if (V.node3)
+ V.node3.initialize()
+ V.node3.build_network()
+
///// Z-Level stuff
if(PIPE_UP)
var/obj/machinery/atmospherics/pipe/zpipe/up/P = new(src.loc)
diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm
index 692b97aac1..7727b675d2 100644
--- a/code/game/machinery/pipe/pipe_dispenser.dm
+++ b/code/game/machinery/pipe/pipe_dispenser.dm
@@ -16,11 +16,14 @@
Pipe
Bent Pipe
Manifold
+Digital Valve
Manual Valve
Pipe Cap
4-Way Manifold
-Manual T-Valve
-Manual T-Valve - Mirrored
+Digital T-Valve
+Digital T-Valve - Mirrored
+Manual T-Valve
+Manual T-Valve - Mirrored
Upward Pipe
Downward Pipe
Supply pipes:
diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm
index b10c9af318..acba542dfa 100644
--- a/code/game/machinery/recharger.dm
+++ b/code/game/machinery/recharger.dm
@@ -8,7 +8,7 @@ obj/machinery/recharger
idle_power_usage = 4
active_power_usage = 40000 //40 kW
var/obj/item/charging = null
- var/list/allowed_devices = list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/device/laptop, /obj/item/weapon/cell)
+ var/list/allowed_devices = list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/device/laptop, /obj/item/weapon/cell, /obj/item/device/flashlight)
var/icon_state_charged = "recharger2"
var/icon_state_charging = "recharger1"
var/icon_state_idle = "recharger0" //also when unpowered
@@ -49,6 +49,12 @@ obj/machinery/recharger
return
if(istype(G, /obj/item/weapon/gun/energy/staff))
return
+ if(istype(G, /obj/item/device/flashlight))
+ var/obj/item/device/flashlight/F = G
+ if(!F.power_use)
+ return
+ if(!F.cell)
+ return
if(istype(G, /obj/item/device/laptop))
var/obj/item/device/laptop/L = G
if(!L.stored_computer.battery)
@@ -129,6 +135,21 @@ obj/machinery/recharger
update_use_power(1)
return
+ if(istype(charging, /obj/item/device/flashlight))
+ var/obj/item/device/flashlight/F = charging
+ if(F.cell)
+ if(!F.cell.fully_charged())
+ icon_state = icon_state_charging
+ F.cell.give(active_power_usage*CELLRATE)
+ update_use_power(2)
+ else
+ icon_state = icon_state_charged
+ update_use_power(1)
+ else
+ icon_state = icon_state_idle
+ update_use_power(1)
+ return
+
if(istype(charging, /obj/item/weapon/cell))
var/obj/item/weapon/cell/C = charging
if(!C.fully_charged())
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index 79e262664c..ee5d9b44ea 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -657,6 +657,8 @@
/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice = 5,
/obj/item/weapon/reagent_containers/food/drinks/bottle/tomatojuice = 5,
/obj/item/weapon/reagent_containers/food/drinks/bottle/limejuice = 5,
+ /obj/item/weapon/reagent_containers/food/drinks/bottle/lemonjuice = 5,
+ /obj/item/weapon/reagent_containers/food/drinks/bottle/milk = 5,
/obj/item/weapon/reagent_containers/food/drinks/bottle/cream = 5,
/obj/item/weapon/reagent_containers/food/drinks/bottle/cola = 5,
/obj/item/weapon/reagent_containers/food/drinks/bottle/space_up = 5,
diff --git a/code/game/mecha/mech_prosthetics.dm b/code/game/mecha/mech_prosthetics.dm
index 634a239d82..49efb68cf3 100644
--- a/code/game/mecha/mech_prosthetics.dm
+++ b/code/game/mecha/mech_prosthetics.dm
@@ -256,10 +256,10 @@
for(var/M in D.materials)
materials[M] = max(0, materials[M] - D.materials[M] * mat_efficiency)
if(D.build_path)
- var/obj/new_item = D.Fabricate(get_step(get_turf(src), src.dir), src)
+ var/obj/new_item = D.Fabricate(get_step(get_turf(src), src.dir), src) // Sometimes returns a mob. Beware!
visible_message("\The [src] pings, indicating that \the [D] is complete.", "You hear a ping.")
if(mat_efficiency != 1)
- if(new_item.matter && new_item.matter.len > 0)
+ if(istype(new_item, /obj/) && new_item.matter && new_item.matter.len > 0)
for(var/i in new_item.matter)
new_item.matter[i] = new_item.matter[i] * mat_efficiency
remove_from_queue(1)
diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm
index e900ba7373..7950200137 100644
--- a/code/game/objects/buckling.dm
+++ b/code/game/objects/buckling.dm
@@ -11,6 +11,11 @@
if(can_buckle && buckled_mob)
user_unbuckle_mob(user)
+/obj/attack_robot(mob/living/user)
+ if(Adjacent(user) && buckled_mob) //Checks if what we're touching is adjacent to us and has someone buckled to it. This should prevent interacting with anti-robot manual valves among other things.
+ return attack_hand(user) //Process as if we're a normal person touching the object.
+ return ..() //Otherwise, treat this as an AI click like usual.
+
/obj/MouseDrop_T(mob/living/M, mob/living/user)
. = ..()
if(can_buckle && istype(M))
diff --git a/code/game/objects/items/devices/defib.dm b/code/game/objects/items/devices/defib.dm
new file mode 100644
index 0000000000..a4b0a02c5a
--- /dev/null
+++ b/code/game/objects/items/devices/defib.dm
@@ -0,0 +1,157 @@
+//The case the paddles are kept in.
+/obj/item/device/defib_kit
+ name = "defibrillator kit"
+ desc = "This KHI-branded defib kit is a semi-automated model. Remove pads, slap on chest, wait."
+ icon = 'icons/obj/device.dmi'
+ icon_state = "defib_kit"
+ w_class = ITEMSIZE_LARGE
+
+ var/state //0 off, 1 open, 2 working, 3 dead
+ var/uses = 2 //Calculates initial uses based on starting cell size
+ var/chance = 75 //Percent chance of working
+ var/charge_cost //Set in New() based on uses
+ var/obj/item/weapon/cell/cell //The size is mostly irrelevant, see 'uses'
+ var/mob/living/carbon/human/patient //The person the paddles are on
+
+/obj/item/device/defib_kit/New()
+ ..()
+ //Create cell and determine uses (futureproofing against cell size changes)
+ cell = new(src)
+ charge_cost = cell.maxcharge / uses
+ statechange(0)
+
+/obj/item/device/defib_kit/attack_self(mob/user as mob)
+ ..()
+ if(patient)
+ patient = null
+ user.visible_message("[user] returns the pads to \the [src] and closes it.",
+ "You return the pads to \the [src] and close it.")
+ statechange(0)
+
+/obj/item/device/defib_kit/MouseDrop(var/mob/living/carbon/human/onto)
+ if(istype(onto) && Adjacent(usr) && !usr.restrained() && !usr.stat)
+ var/mob/living/carbon/human/user = usr
+ //<--Feel free to code clothing checks right here
+ user.visible_message("[user] begins applying defib pads to [onto].",
+ "You begin applying defib pads to [onto].")
+ if(do_after(user, 100, onto))
+ patient = onto
+ statechange(1,patient)
+ user.visible_message("[user] applies defib pads to [onto].",
+ "You finish applying defib pads to [onto].")
+
+/obj/item/device/defib_kit/attackby(var/obj/item/A as obj, mob/living/user as mob)
+ ..()
+
+ if(!cell && istype(A,/obj/item/weapon/cell))
+ if(!user.unEquip(A)) return
+ to_chat(user,"You jack \the [A] into \the [src]'s battery mount.")
+ A.forceMove(src)
+ src.cell = A
+
+ else if(istype(A,/obj/item/weapon/screwdriver))
+ if(cell)
+ to_chat(user,"You remove \the [cell] from \the [src].")
+ if(user.r_hand && user.l_hand)
+ cell.forceMove(get_turf(user))
+ else
+ cell.forceMove(user.put_in_hands(cell))
+ cell = null
+ playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
+ else
+ to_chat(user,"The power source has already been removed!")
+
+/obj/item/device/defib_kit/proc/statechange(var/new_state, var/pat)
+ if(state == new_state) return //Let's just save ourselves some time
+ state = new_state
+ icon_state = "[initial(icon_state)][state]"
+ var/turf/T = get_turf(src)
+ var/state_words = ""
+ switch(state)
+ if(0)
+ state_words = "It is currently closed."
+ processing_objects -= src
+ if(1)
+ state_words = "A green light is lit; it has charge."
+ processing_objects |= src
+ if(2)
+ state_words = "A yellow light is flashing: it's in the process of reviving a patient."
+ T.visible_message("A yellow light starts flashing on \the [src].")
+ playsound(T, 'sound/machines/chime.ogg', 50, 0)
+ if(3)
+ state_words = "A red light is flashing: the battery needs to be recharged."
+ T.visible_message("A red light starts flashing on \the [src].")
+ playsound(T, 'sound/machines/buzz-sigh.ogg', 50, 0)
+
+ desc = "[initial(desc)] [state_words][pat ? " The pads are attached to [pat]." : ""]"
+ update_icon()
+
+/obj/item/device/defib_kit/process()
+ if(!state) //0 or null
+ statechange(0)
+ processing_objects -= src
+ return
+
+ //Patient moved too far
+ if(patient && !(get_dist(src,patient) <= 1)) //You separated the kit and pads too far
+ audible_message("There's a clatter as the defib pads are yanked off of [patient].")
+ statechange(0)
+ patient = null
+ return
+
+ //Battery died
+ if(!cell || cell.charge < charge_cost)
+ statechange(3,patient)
+ return
+
+ //A patient isn't being worked on, but we have one, so start
+ if(patient && patient.stat == DEAD && state != 2)
+ statechange(2)
+ if(attempt_shock()) //Try to shock them, has timer and such
+ patient.visible_message("[patient] convulses!")
+ playsound(src.loc, 'sound/effects/sparks2.ogg', 75, 1)
+ //Actual rezzing code
+ if(prob(chance) && ((world.time - patient.timeofdeath) < (10 MINUTES))) //Can only revive within a few minutes
+ if(!patient.client && patient.mind) //Don't force the dead person to come back if they don't want to.
+ for(var/mob/observer/dead/ghost in player_list)
+ if(ghost.mind == patient.mind)
+ to_chat(ghost, "Someone is trying to \
+ revive you. Return to your body if you want to be revived! \
+ (Verbs -> Ghost -> Re-enter corpse). You have 15 seconds to do this!")
+ sleep(15 SECONDS)
+ break
+
+ if(patient.client)
+ patient.adjustOxyLoss(-20) //Look, blood stays oxygenated for quite some time, but I'm not recoding the entire oxy system
+ patient.stat = CONSCIOUS //Note that if whatever killed them in the first place wasn't fixed, they're likely to die again.
+ dead_mob_list -= patient
+ living_mob_list += patient
+ patient.timeofdeath = null
+ patient.visible_message("[patient]'s eyes open!")
+ log_and_message_admins("[patient] was revived.")
+ cell.charge -= charge_cost //Always charge the cost after any attempt, failed or not
+ sleep(20) //Wait 2 seconds before next attempt
+ statechange(1,patient) //Back to ready
+
+/obj/item/device/defib_kit/proc/attempt_shock()
+ if(!patient || cell.charge < charge_cost)
+ return
+
+ var/zap_time = world.time + (7 SECONDS)
+ var/o_patient_loc = patient.loc
+ . = 1
+
+ while(world.time < zap_time) //This is basically a custom do_after() call
+ sleep(1)
+
+ //Failed: We lost something important
+ if(!patient || !cell || cell.charge < charge_cost)
+ . = 0
+ break
+
+ //Failed: The locations aren't right
+ if((o_patient_loc != patient.loc) || !(get_dist(src,patient) <= 1))
+ . = 0
+ break
+
+ return
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index 4c841e2651..c173e0344e 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -274,6 +274,8 @@ var/global/list/default_medbay_channels = list(
// Fix for permacell radios, but kinda eh about actually fixing them.
if(!M || !message) return 0
+ if(speaking && (speaking.flags & (SIGNLANG|NONVERBAL))) return 0
+
if(istype(M)) M.trigger_aiming(TARGET_CAN_RADIO)
// Uncommenting this. To the above comment:
diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index 1f88d91f06..f9d414267f 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -69,7 +69,7 @@ REAGENT SCANNER
user.show_message("Analyzing Results for [M]:")
user.show_message("Overall Status: dead")
else
- user.show_message("Analyzing Results for [M]:\n\t Overall Status: [M.stat > 1 ? "dead" : "[round(M.health/M.maxHealth)*100]% healthy"]")
+ user.show_message("Analyzing Results for [M]:\n\t Overall Status: [M.stat > 1 ? "dead" : "[round((M.health/M.maxHealth)*100) ]% healthy"]")
user.show_message(" Key: Suffocation/Toxin/Burns/Brute", 1)
user.show_message(" Damage Specifics: [OX] - [TX] - [BU] - [BR]")
user.show_message("Body Temperature: [M.bodytemperature-T0C]°C ([M.bodytemperature*1.8-459.67]°F)", 1)
diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm
index 689e92fb7c..40a7381cb0 100644
--- a/code/game/objects/items/devices/taperecorder.dm
+++ b/code/game/objects/items/devices/taperecorder.dm
@@ -1,7 +1,7 @@
/obj/item/device/taperecorder
name = "universal recorder"
- desc = "A device that can record up to an hour of dialogue and play it back. It automatically translates the content in playback."
- icon_state = "taperecorderidle"
+ desc = "A device that can record to cassette tapes, and play them. It automatically translates the content in playback."
+ icon_state = "taperecorder_empty"
item_state = "analyzer"
w_class = ITEMSIZE_SMALL
@@ -10,33 +10,100 @@
var/emagged = 0.0
var/recording = 0.0
var/playing = 0.0
- var/timerecorded = 0.0
var/playsleepseconds = 0.0
- var/list/storedinfo = new/list()
- var/list/timestamp = new/list()
+ var/obj/item/device/tape/mytape = /obj/item/device/tape/random
var/canprint = 1
-
flags = CONDUCT
+ slot_flags = SLOT_BELT
throwforce = 2
throw_speed = 4
throw_range = 20
- show_messages = 1
+
+/obj/item/device/taperecorder/New()
+ ..()
+ if(ispath(mytape))
+ mytape = new mytape(src)
+ update_icon()
+ listening_objects += src
+
+/obj/item/device/taperecorder/empty
+ mytape = null
+
+/obj/item/device/taperecorder/Destroy()
+ listening_objects -= src
+ if(mytape)
+ qdel(mytape)
+ mytape = null
+ return ..()
+
+
+/obj/item/device/taperecorder/attackby(obj/item/I, mob/user, params)
+ if(istype(I, /obj/item/device/tape))
+ if(mytape)
+ to_chat(user, "There's already a tape inside.")
+ return
+ if(!user.unEquip(I))
+ return
+ I.forceMove(src)
+ mytape = I
+ to_chat(user, "You insert [I] into [src].")
+ update_icon()
+ return
+ ..()
+
+
+/obj/item/device/taperecorder/fire_act()
+ if(mytape)
+ mytape.ruin() //Fires destroy the tape
+ return ..()
+
+
+/obj/item/device/taperecorder/attack_hand(mob/user)
+ if(user.get_inactive_hand() == src)
+ if(mytape)
+ eject()
+ return
+ ..()
+
+
+/obj/item/device/taperecorder/verb/eject()
+ set name = "Eject Tape"
+ set category = "Object"
+
+ if(usr.incapacitated())
+ return
+ if(!mytape)
+ to_chat(usr, "There's no tape in \the [src].")
+ return
+ if(emagged)
+ to_chat(usr, "The tape seems to be stuck inside.")
+ return
+
+ if(playing || recording)
+ stop()
+ to_chat(usr, "You remove [mytape] from [src].")
+ usr.put_in_hands(mytape)
+ mytape = null
+ update_icon()
+
/obj/item/device/taperecorder/hear_talk(mob/living/M as mob, msg, var/verb="says", datum/language/speaking=null)
- if(recording)
- timestamp += timerecorded
+ if(mytape && recording)
if(speaking)
- storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] [M.name] [speaking.format_message_plain(msg, verb)]"
+ if(!speaking.machine_understands)
+ msg = speaking.scramble(msg)
+ mytape.record_speech("[M.name] [speaking.format_message_plain(msg, verb)]")
else
- storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] [M.name] [verb], \"[msg]\""
+ mytape.record_speech("[M.name] [verb], \"[msg]\"")
+
/obj/item/device/taperecorder/see_emote(mob/M as mob, text, var/emote_type)
if(emote_type != 2) //only hearable emotes
return
- if(recording)
- timestamp += timerecorded
- storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] [strip_html_properly(text)]"
+ if(mytape && recording)
+ mytape.record_speech("[strip_html_properly(text)]")
+
/obj/item/device/taperecorder/show_message(msg, type, alt, alt_type)
var/recordedtext
@@ -46,25 +113,24 @@
recordedtext = alt
else
return
- if(recording)
- timestamp += timerecorded
- storedinfo += "*\[[time2text(timerecorded*10,"mm:ss")]\] *[strip_html_properly(recordedtext)]*" //"*" at front as a marker
+ if(mytape && recording)
+ mytape.record_noise("[strip_html_properly(recordedtext)]")
/obj/item/device/taperecorder/emag_act(var/remaining_charges, var/mob/user)
if(emagged == 0)
emagged = 1
recording = 0
- user << "PZZTTPFFFT"
- icon_state = "taperecorderidle"
+ to_chat(user, "PZZTTPFFFT")
+ update_icon()
return 1
else
- user << "It is already emagged!"
+ to_chat(user, "It is already emagged!")
/obj/item/device/taperecorder/proc/explode()
var/turf/T = get_turf(loc)
if(ismob(loc))
var/mob/M = loc
- M << "\The [src] explodes!"
+ to_chat(M, "\The [src] explodes!")
if(T)
T.hotspot_expose(700,125)
explosion(T, -1, -1, 0, 4)
@@ -75,117 +141,152 @@
set name = "Start Recording"
set category = "Object"
- if(usr.stat)
+ if(usr.incapacitated())
return
- if(emagged == 1)
- usr << "The tape recorder makes a scratchy noise."
+ if(!mytape)
+ to_chat(usr, "There's no tape!")
return
- icon_state = "taperecorderrecording"
- if(timerecorded < 3600 && playing == 0)
- usr << "Recording started."
+ if(mytape.ruined)
+ to_chat(usr, "The tape recorder makes a scratchy noise.")
+ return
+ if(recording)
+ to_chat(usr, "You're already recording!")
+ return
+ if(playing)
+ to_chat(usr, "You can't record when playing!")
+ return
+ if(emagged)
+ to_chat(usr, "The tape recorder makes a scratchy noise.")
+ return
+ if(mytape.used_capacity < mytape.max_capacity)
+ to_chat(usr, "Recording started.")
recording = 1
- timestamp+= timerecorded
- storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] Recording started."
- for(timerecorded, timerecorded<3600)
- if(recording == 0)
- break
- timerecorded++
+ update_icon()
+
+ mytape.record_speech("Recording started.")
+
+ //count seconds until full, or recording is stopped
+ while(mytape && recording && mytape.used_capacity < mytape.max_capacity)
sleep(10)
- recording = 0
- icon_state = "taperecorderidle"
+ mytape.used_capacity++
+ if(mytape.used_capacity >= mytape.max_capacity)
+ if(ismob(loc))
+ var/mob/M = loc
+ to_chat(M, "The tape is full.")
+ stop_recording()
+
+
+ update_icon()
return
else
- usr << "Either your tape recorder's memory is full, or it is currently playing back its memory."
+ to_chat(usr, "The tape is full.")
+
+
+/obj/item/device/taperecorder/proc/stop_recording()
+ //Sanity checks skipped, should not be called unless actually recording
+ recording = 0
+ update_icon()
+ mytape.record_speech("Recording stopped.")
+ if(ismob(loc))
+ var/mob/M = loc
+ to_chat(M, "Recording stopped.")
/obj/item/device/taperecorder/verb/stop()
set name = "Stop"
set category = "Object"
- if(usr.stat)
+ if(usr.incapacitated())
return
- if(emagged == 1)
- usr << "The tape recorder makes a scratchy noise."
+ if(recording)
+ stop_recording()
return
- if(recording == 1)
- recording = 0
- timestamp+= timerecorded
- storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] Recording stopped."
- usr << "Recording stopped."
- icon_state = "taperecorderidle"
- return
- else if(playing == 1)
+ else if(playing)
playing = 0
- var/turf/T = get_turf(src)
- T.audible_message("Tape Recorder: Playback stopped.")
- icon_state = "taperecorderidle"
- return
-
-
-/obj/item/device/taperecorder/verb/clear_memory()
- set name = "Clear Memory"
- set category = "Object"
-
- if(usr.stat)
- return
- if(emagged == 1)
- usr << "The tape recorder makes a scratchy noise."
- return
- if(recording == 1 || playing == 1)
- usr << "You can't clear the memory while playing or recording!"
+ update_icon()
+ to_chat(usr, "Playback stopped.")
return
else
- if(storedinfo) storedinfo.Cut()
- if(timestamp) timestamp.Cut()
- timerecorded = 0
- usr << "Memory cleared."
+ to_chat(usr, "Stop what?")
+
+
+/obj/item/device/taperecorder/verb/wipe_tape()
+ set name = "Wipe Tape"
+ set category = "Object"
+
+ if(usr.incapacitated())
+ return
+ if(emagged)
+ to_chat(usr, "The tape recorder makes a scratchy noise.")
+ return
+ if(mytape.ruined)
+ to_chat(usr, "The tape recorder makes a scratchy noise.")
+ return
+ if(recording || playing)
+ to_chat(usr, "You can't wipe the tape while playing or recording!")
+ return
+ else
+ if(mytape.storedinfo) mytape.storedinfo.Cut()
+ if(mytape.timestamp) mytape.timestamp.Cut()
+ mytape.used_capacity = 0
+ to_chat(usr, "You wipe the tape.")
return
/obj/item/device/taperecorder/verb/playback_memory()
- set name = "Playback Memory"
+ set name = "Playback Tape"
set category = "Object"
- if(usr.stat)
+ if(usr.incapacitated())
return
- if(emagged == 1)
- usr << "The tape recorder makes a scratchy noise."
+ if(!mytape)
+ to_chat(usr, "There's no tape!")
return
- if(recording == 1)
- usr << "You can't playback when recording!"
+ if(mytape.ruined)
+ to_chat(usr, "The tape recorder makes a scratchy noise.")
return
- if(playing == 1)
- usr << "You're already playing!"
+ if(recording)
+ to_chat(usr, "You can't playback when recording!")
+ return
+ if(playing)
+ to_chat(usr, "You're already playing!")
return
playing = 1
- icon_state = "taperecorderplaying"
- usr << "Playing started."
- for(var/i=1,timerecorded<3600,sleep(10 * (playsleepseconds) ))
- if(playing == 0)
+ update_icon()
+ to_chat(usr, "Playing started.")
+ for(var/i=1 , i < mytape.max_capacity , i++)
+ if(!mytape || !playing)
break
- if(storedinfo.len < i)
+ if(mytape.storedinfo.len < i)
break
+
var/turf/T = get_turf(src)
- var/playedmessage = storedinfo[i]
+ var/playedmessage = mytape.storedinfo[i]
if (findtextEx(playedmessage,"*",1,2)) //remove marker for action sounds
playedmessage = copytext(playedmessage,2)
T.audible_message("Tape Recorder: [playedmessage]")
- if(storedinfo.len < i+1)
+
+ if(mytape.storedinfo.len < i+1)
playsleepseconds = 1
sleep(10)
T = get_turf(src)
T.audible_message("Tape Recorder: End of recording.")
+ break
else
- playsleepseconds = timestamp[i+1] - timestamp[i]
+ playsleepseconds = mytape.timestamp[i+1] - mytape.timestamp[i]
+
if(playsleepseconds > 14)
sleep(10)
T = get_turf(src)
T.audible_message("Tape Recorder: Skipping [playsleepseconds] seconds of silence")
playsleepseconds = 1
- i++
- icon_state = "taperecorderidle"
+ sleep(10 * playsleepseconds)
+
+
playing = 0
- if(emagged == 1.0)
+ update_icon()
+
+ if(emagged)
var/turf/T = get_turf(src)
T.audible_message("Tape Recorder: This tape recorder will self-destruct in... Five.")
sleep(10)
@@ -208,24 +309,31 @@
set name = "Print Transcript"
set category = "Object"
- if(usr.stat)
+ if(usr.incapacitated())
return
- if(emagged == 1)
- usr << "The tape recorder makes a scratchy noise."
+ if(!mytape)
+ to_chat(usr, "There's no tape!")
+ return
+ if(mytape.ruined)
+ to_chat(usr, "The tape recorder makes a scratchy noise.")
+ return
+ if(emagged)
+ to_chat(usr, "The tape recorder makes a scratchy noise.")
return
if(!canprint)
- usr << "The recorder can't print that fast!"
+ to_chat(usr, "The recorder can't print that fast!")
return
- if(recording == 1 || playing == 1)
- usr << "You can't print the transcript while playing or recording!"
+ if(recording || playing)
+ to_chat(usr, "You can't print the transcript while playing or recording!")
return
- usr << "Transcript printed."
+
+ to_chat(usr, "Transcript printed.")
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(get_turf(src))
var/t1 = "Transcript:
"
- for(var/i=1,storedinfo.len >= i,i++)
- var/printedmessage = storedinfo[i]
+ for(var/i=1,mytape.storedinfo.len >= i,i++)
+ var/printedmessage = mytape.storedinfo[i]
if (findtextEx(printedmessage,"*",1,2)) //replace action sounds
- printedmessage = "\[[time2text(timestamp[i]*10,"mm:ss")]\] (Unrecognized sound)"
+ printedmessage = "\[[time2text(mytape.timestamp[i]*10,"mm:ss")]\] (Unrecognized sound)"
t1 += "[printedmessage]
"
P.info = t1
P.name = "Transcript"
@@ -235,46 +343,98 @@
/obj/item/device/taperecorder/attack_self(mob/user)
- if(recording == 0 && playing == 0)
- if(usr.stat)
- return
- if(emagged == 1)
- usr << "The tape recorder makes a scratchy noise."
- return
- icon_state = "taperecorderrecording"
- if(timerecorded < 3600 && playing == 0)
- usr << "Recording started."
- recording = 1
- timestamp+= timerecorded
- storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] Recording started."
- for(timerecorded, timerecorded<3600)
- if(recording == 0)
- break
- timerecorded++
- sleep(10)
- recording = 0
- icon_state = "taperecorderidle"
- return
- else
- usr << "Either your tape recorder's memory is full, or it is currently playing back its memory."
+ if(recording || playing)
+ stop()
else
- if(usr.stat)
- usr << "Not when you're incapacitated."
- return
- if(recording == 1)
- recording = 0
- timestamp+= timerecorded
- storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] Recording stopped."
- usr << "Recording stopped."
- icon_state = "taperecorderidle"
- return
- else if(playing == 1)
- playing = 0
- var/turf/T = get_turf(src)
- for(var/mob/O in hearers(world.view-1, T))
- O.show_message("Tape Recorder: Playback stopped.",2)
- icon_state = "taperecorderidle"
- return
- else
- usr << "Stop what?"
- return
+ record()
+
+
+/obj/item/device/taperecorder/update_icon()
+ if(!mytape)
+ icon_state = "taperecorder_empty"
+ else if(recording)
+ icon_state = "taperecorder_recording"
+ else if(playing)
+ icon_state = "taperecorder_playing"
+ else
+ icon_state = "taperecorder_idle"
+
+
+
+/obj/item/device/tape
+ name = "tape"
+ desc = "A magnetic tape that can hold up to ten minutes of content."
+ icon_state = "tape_white"
+ item_state = "analyzer"
+ w_class = ITEMSIZE_TINY
+ matter = list(DEFAULT_WALL_MATERIAL=20, "glass"=5)
+ force = 1
+ throwforce = 0
+ var/max_capacity = 600
+ var/used_capacity = 0
+ var/list/storedinfo = new/list()
+ var/list/timestamp = new/list()
+ var/ruined = 0
+
+
+/obj/item/device/tape/update_icon()
+ overlays.Cut()
+ if(ruined)
+ overlays += "ribbonoverlay"
+
+
+/obj/item/device/tape/fire_act()
+ ruin()
+
+/obj/item/device/tape/attack_self(mob/user)
+ if(!ruined)
+ to_chat(user, "You pull out all the tape!")
+ ruin()
+
+
+/obj/item/device/tape/proc/ruin()
+ ruined = 1
+ update_icon()
+
+
+/obj/item/device/tape/proc/fix()
+ ruined = 0
+ update_icon()
+
+
+/obj/item/device/tape/proc/record_speech(text)
+ timestamp += used_capacity
+ storedinfo += "\[[time2text(used_capacity*10,"mm:ss")]\] [text]"
+
+
+//shows up on the printed transcript as (Unrecognized sound)
+/obj/item/device/tape/proc/record_noise(text)
+ timestamp += used_capacity
+ storedinfo += "*\[[time2text(used_capacity*10,"mm:ss")]\] [text]"
+
+
+/obj/item/device/tape/attackby(obj/item/I, mob/user, params)
+ if(ruined && istype(I, /obj/item/weapon/screwdriver))
+ to_chat(user, "You start winding the tape back in...")
+ if(do_after(user, 120, target = src))
+ to_chat(user, "You wound the tape back in.")
+ fix()
+ return
+ else if(istype(I, /obj/item/weapon/pen))
+ if(loc == user && !user.incapacitated())
+ var/new_name = input(user, "What would you like to label the tape?", "Tape labeling") as null|text
+ if(isnull(new_name)) return
+ new_name = sanitizeSafe(new_name)
+ if(new_name)
+ name = "tape - '[new_name]'"
+ to_chat(user, "You label the tape '[new_name]'.")
+ else
+ name = "tape"
+ to_chat(user, "You scratch off the label.")
+ return
+ ..()
+
+
+//Random colour tapes
+/obj/item/device/tape/random/New()
+ icon_state = "tape_[pick("white", "blue", "red", "yellow", "purple")]"
\ No newline at end of file
diff --git a/code/game/objects/items/devices/uplink.dm b/code/game/objects/items/devices/uplink.dm
index 870b74e73d..a5b0cc4515 100644
--- a/code/game/objects/items/devices/uplink.dm
+++ b/code/game/objects/items/devices/uplink.dm
@@ -217,8 +217,9 @@
// Includes normal radio uplink, multitool uplink,
// implant uplink (not the implant tool) and a preset headset uplink.
-/obj/item/device/radio/uplink/New()
- hidden_uplink = new(src, usr.mind, DEFAULT_TELECRYSTAL_AMOUNT)
+/obj/item/device/radio/uplink/New(atom/loc, datum/mind/target_mind, telecrystals)
+ ..(loc)
+ hidden_uplink = new(src, target_mind, telecrystals)
icon_state = "radio"
/obj/item/device/radio/uplink/attack_self(mob/user as mob)
diff --git a/code/game/objects/items/weapons/autopsy.dm b/code/game/objects/items/weapons/autopsy.dm
index 1b1b3a5433..302ac99d97 100644
--- a/code/game/objects/items/weapons/autopsy.dm
+++ b/code/game/objects/items/weapons/autopsy.dm
@@ -160,7 +160,7 @@
P.icon_state = "paper_words"
if(istype(usr,/mob/living/carbon))
- usr.put_in_hands(src)
+ usr.put_in_hands(P)
/obj/item/weapon/autopsy_scanner/do_surgery(mob/living/carbon/human/M, mob/living/user)
if(!istype(M))
diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm
index be7d90830d..0ec3dc13df 100644
--- a/code/game/objects/items/weapons/grenades/chem_grenade.dm
+++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm
@@ -278,3 +278,26 @@
beakers += B1
beakers += B2
icon_state = initial(icon_state) +"_locked"
+
+/obj/item/weapon/grenade/chem_grenade/teargas
+ name = "tear gas grenade"
+ desc = "Concentrated Capsaicin. Contents under pressure. Use with caution."
+ stage = 2
+ path = 1
+
+ New()
+ ..()
+ var/obj/item/weapon/reagent_containers/glass/beaker/large/B1 = new(src)
+ var/obj/item/weapon/reagent_containers/glass/beaker/large/B2 = new(src)
+
+ B1.reagents.add_reagent("phosphorus", 40)
+ B1.reagents.add_reagent("potassium", 40)
+ B1.reagents.add_reagent("condensedcapsaicin", 40)
+ B2.reagents.add_reagent("sugar", 40)
+ B2.reagents.add_reagent("condensedcapsaicin", 80)
+
+ detonator = new/obj/item/device/assembly_holder/timer_igniter(src)
+
+ beakers += B1
+ beakers += B2
+ icon_state = initial(icon_state) +"_locked"
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/implants/implantcase.dm b/code/game/objects/items/weapons/implants/implantcase.dm
index 815050636a..ae00895361 100644
--- a/code/game/objects/items/weapons/implants/implantcase.dm
+++ b/code/game/objects/items/weapons/implants/implantcase.dm
@@ -159,3 +159,23 @@
src.imp = new /obj/item/weapon/implant/health( src )
..()
return
+
+/obj/item/weapon/implantcase/language
+ name = "glass case - 'GalCom'"
+ desc = "A case containing a GalCom language implant."
+ icon_state = "implantcase-b"
+
+/obj/item/weapon/implantcase/language/New()
+ src.imp = new /obj/item/weapon/implant/language( src )
+ ..()
+ return
+
+/obj/item/weapon/implantcase/language/eal
+ name = "glass case - 'EAL'"
+ desc = "A case containing an Encoded Audio Language implant."
+ icon_state = "implantcase-b"
+
+/obj/item/weapon/implantcase/language/eal/New()
+ src.imp = new /obj/item/weapon/implant/language/eal( src )
+ ..()
+ return
diff --git a/code/game/objects/items/weapons/implants/implantlanguage.dm b/code/game/objects/items/weapons/implants/implantlanguage.dm
new file mode 100644
index 0000000000..d813a8d388
--- /dev/null
+++ b/code/game/objects/items/weapons/implants/implantlanguage.dm
@@ -0,0 +1,37 @@
+//These allow someone to speak a language they are otherwise physically incapable of speaking or hearing
+//They don't, at the moment, grant knowledge of the language
+//The can_speak_special checks should check for the presence of the implants.
+
+/obj/item/weapon/implant/language
+ name = "GalCom language implant"
+ desc = "An implant allowing someone to speak and hear the range of frequencies used in Galactic Common, as well as produce any phonemes that they usually cannot. Only helps with hearing and producing sounds, not understanding them."
+
+/obj/item/weapon/implant/language/get_data()
+ var/dat = {"
+Implant Specifications:
+Name: Vey-Med L-1 Galactic Common Implant
+Life: 5 years
+Important Notes: Affects hearing and speech.
+
+Implant Details:
+Function: Allows a being otherwise incapable to both hear the frequencies Galactic Common is generally spoken at, as well as to produce the phonemes of the language.
+Special Features: None.
+Integrity: Implant will function for expected life, barring physical damage."}
+ return dat
+
+/obj/item/weapon/implant/language/eal
+ name = "EAL language implant"
+ desc = "An implant allowing an organic to both hear and speak Encoded Audio Language accurately. Only helps with hearing and producing sounds, not understanding them."
+
+/obj/item/weapon/implant/language/get_data()
+ var/dat = {"
+Implant Specifications:
+Name: Vey-Med L-2 Encoded Audio Language Implant
+Life: 5 years
+Important Notes: Affects hearing and speech.
+
+Implant Details:
+Function: Allows an organic to accurately process and speak Encoded Audio Language.
+Special Features: None.
+Integrity: Implant will function for expected life, barring physical damage."}
+ return dat
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/policetape.dm b/code/game/objects/items/weapons/policetape.dm
index 46887ce8f0..a9f2a15dea 100644
--- a/code/game/objects/items/weapons/policetape.dm
+++ b/code/game/objects/items/weapons/policetape.dm
@@ -237,10 +237,13 @@ var/list/tape_roll_applications = list()
if (istype(A, /obj/machinery/door/airlock))
var/turf/T = get_turf(A)
- var/obj/item/tape/P = new tape_type(T)
- P.update_icon()
- P.layer = 3.2
- user << "You finish placing \the [src]."
+ if(locate(/obj/item/tape, A.loc))
+ user << "There's already tape over that door!"
+ else
+ var/obj/item/tape/P = new tape_type(T)
+ P.update_icon()
+ P.layer = 3.2
+ user << "You finish placing \the [src]."
if (istype(A, /turf/simulated/floor) ||istype(A, /turf/unsimulated/floor))
var/turf/F = A
@@ -277,7 +280,7 @@ var/list/tape_roll_applications = list()
return ..(mover)
/obj/item/tape/attackby(obj/item/weapon/W as obj, mob/user as mob)
- breaktape(W, user)
+ breaktape(user)
/obj/item/tape/attack_hand(mob/user as mob)
if (user.a_intent == I_HELP && src.allowed(user))
@@ -285,7 +288,7 @@ var/list/tape_roll_applications = list()
for(var/obj/item/tape/T in gettapeline())
T.lift(100) //~10 seconds
else
- breaktape(null, user)
+ breaktape(user)
/obj/item/tape/proc/lift(time)
lifted = 1
@@ -320,14 +323,11 @@ var/list/tape_roll_applications = list()
cur = get_step(cur, dir)
return tapeline
-
-
-
-/obj/item/tape/proc/breaktape(obj/item/weapon/W as obj, mob/user as mob)
- if(user.a_intent == I_HELP && ((!can_puncture(W) && src.allowed(user))))
- user << "You can't break \the [src] with that!"
+/obj/item/tape/proc/breaktape(mob/user)
+ if(user.a_intent == I_HELP)
+ to_chat(user, "You refrain from breaking \the [src].")
return
- user.show_viewers("\The [user] breaks \the [src]!")
+ user.visible_message("\The [user] breaks \the [src]!","You break \the [src].")
for (var/obj/item/tape/T in gettapeline())
if(T == src)
diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm
index f8d5376a64..5c3d090d71 100644
--- a/code/game/objects/items/weapons/storage/boxes.dm
+++ b/code/game/objects/items/weapons/storage/boxes.dm
@@ -339,6 +339,16 @@
for(var/i = 1 to 7)
new /obj/item/weapon/grenade/chem_grenade/metalfoam(src)
+/obj/item/weapon/storage/box/teargas
+ name = "box of teargas grenades"
+ desc = "A box containing 7 teargas grenades."
+ icon_state = "flashbang"
+
+/obj/item/weapon/storage/box/teargas/New()
+ ..()
+ for(var/i = 1 to 7)
+ new /obj/item/weapon/grenade/chem_grenade/teargas(src)
+
/obj/item/weapon/storage/box/trackimp
name = "boxed tracking implant kit"
desc = "Box full of scum-bag tracking utensils."
diff --git a/code/game/objects/items/weapons/storage/toolbox.dm b/code/game/objects/items/weapons/storage/toolbox.dm
index 8e6e5ca682..fac5e9fb70 100644
--- a/code/game/objects/items/weapons/storage/toolbox.dm
+++ b/code/game/objects/items/weapons/storage/toolbox.dm
@@ -74,7 +74,7 @@
new /obj/item/clothing/gloves/yellow(src)
new /obj/item/weapon/screwdriver(src)
new /obj/item/weapon/wrench(src)
- new /obj/item/weapon/weldingtool(src)
+ new /obj/item/weapon/weldingtool/experimental(src)
new /obj/item/weapon/crowbar(src)
new /obj/item/weapon/wirecutters(src)
new /obj/item/device/multitool(src)
diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm
index c61ee90918..c39053b5aa 100644
--- a/code/game/objects/items/weapons/tools.dm
+++ b/code/game/objects/items/weapons/tools.dm
@@ -390,16 +390,21 @@
w_class = ITEMSIZE_NORMAL
origin_tech = list(TECH_ENGINEERING = 4, TECH_PHORON = 3)
matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 120)
- var/last_gen = 0
+ var/nextrefueltick = 0
+/obj/item/weapon/weldingtool/experimental/New()
+ processing_objects |= src
+ ..()
+/obj/item/weapon/weldingtool/experimental/Destroy()
+ processing_objects -= src
+ ..()
-/obj/item/weapon/weldingtool/experimental/proc/fuel_gen()//Proc to make the experimental welder generate fuel, optimized as fuck -Sieve
- var/gen_amount = ((world.time-last_gen)/25)
- reagents += (gen_amount)
- if(reagents > max_fuel)
- reagents = max_fuel
-
+/obj/item/weapon/weldingtool/experimental/process()
+ ..()
+ if(get_fuel() < max_fuel && nextrefueltick < world.time)
+ nextrefueltick = world.time + 10
+ reagents.add_reagent("fuel", 1)
/*
* Crowbar
*/
diff --git a/code/game/objects/random/random.dm b/code/game/objects/random/random.dm
index 0f996a6fb5..bea64ddce9 100644
--- a/code/game/objects/random/random.dm
+++ b/code/game/objects/random/random.dm
@@ -22,7 +22,11 @@
// creates the random item
/obj/random/proc/spawn_item()
var/build_path = item_to_spawn()
- return (new build_path(src.loc))
+
+ var/atom/A = new build_path(src.loc)
+ if(pixel_x || pixel_y)
+ A.pixel_x = pixel_x
+ A.pixel_y = pixel_y
/obj/random/single
@@ -30,8 +34,9 @@
desc = "This item type is used to randomly spawn a given object at round-start"
icon_state = "x3"
var/spawn_object = null
- item_to_spawn()
- return ispath(spawn_object) ? spawn_object : text2path(spawn_object)
+
+/obj/random/single/item_to_spawn()
+ return ispath(spawn_object) ? spawn_object : text2path(spawn_object)
/obj/random/tool
@@ -39,39 +44,40 @@
desc = "This is a random tool"
icon = 'icons/obj/items.dmi'
icon_state = "welder"
- item_to_spawn()
- return pick(/obj/item/weapon/screwdriver,
- /obj/item/weapon/wirecutters,
- /obj/item/weapon/weldingtool,
- /obj/item/weapon/weldingtool/largetank,
- /obj/item/weapon/crowbar,
- /obj/item/weapon/wrench,
- /obj/item/device/flashlight,
- /obj/item/device/multitool)
+/obj/random/tool/item_to_spawn()
+ return pick(/obj/item/weapon/screwdriver,
+ /obj/item/weapon/wirecutters,
+ /obj/item/weapon/weldingtool,
+ /obj/item/weapon/weldingtool/largetank,
+ /obj/item/weapon/crowbar,
+ /obj/item/weapon/wrench,
+ /obj/item/device/flashlight,
+ /obj/item/device/multitool)
/obj/random/technology_scanner
name = "random scanner"
desc = "This is a random technology scanner."
icon = 'icons/obj/device.dmi'
icon_state = "atmos"
- item_to_spawn()
- return pick(prob(5);/obj/item/device/t_scanner,
- prob(2);/obj/item/device/radio,
- prob(5);/obj/item/device/analyzer)
+/obj/random/technology_scanner/item_to_spawn()
+ return pick(prob(5);/obj/item/device/t_scanner,
+ prob(2);/obj/item/device/radio,
+ prob(5);/obj/item/device/analyzer)
/obj/random/powercell
name = "random powercell"
desc = "This is a random powercell."
icon = 'icons/obj/power.dmi'
icon_state = "cell"
- item_to_spawn()
- return pick(prob(40);/obj/item/weapon/cell,
- prob(25);/obj/item/weapon/cell/device,
- prob(25);/obj/item/weapon/cell/high,
- prob(9);/obj/item/weapon/cell/super,
- prob(1);/obj/item/weapon/cell/hyper)
+
+/obj/random/powercell/item_to_spawn()
+ return pick(prob(40);/obj/item/weapon/cell,
+ prob(25);/obj/item/weapon/cell/device,
+ prob(25);/obj/item/weapon/cell/high,
+ prob(9);/obj/item/weapon/cell/super,
+ prob(1);/obj/item/weapon/cell/hyper)
/obj/random/bomb_supply
@@ -79,12 +85,13 @@
desc = "This is a random bomb supply."
icon = 'icons/obj/assemblies/new_assemblies.dmi'
icon_state = "signaller"
- item_to_spawn()
- return pick(/obj/item/device/assembly/igniter,
- /obj/item/device/assembly/prox_sensor,
- /obj/item/device/assembly/signaler,
- /obj/item/device/assembly/timer,
- /obj/item/device/multitool)
+
+/obj/random/bomb_supply/item_to_spawn()
+ return pick(/obj/item/device/assembly/igniter,
+ /obj/item/device/assembly/prox_sensor,
+ /obj/item/device/assembly/signaler,
+ /obj/item/device/assembly/timer,
+ /obj/item/device/multitool)
/obj/random/toolbox
@@ -92,11 +99,12 @@
desc = "This is a random toolbox."
icon = 'icons/obj/storage.dmi'
icon_state = "red"
- item_to_spawn()
- return pick(prob(6);/obj/item/weapon/storage/toolbox/mechanical,
- prob(6);/obj/item/weapon/storage/toolbox/electrical,
- prob(2);/obj/item/weapon/storage/toolbox/emergency,
- prob(1);/obj/item/weapon/storage/toolbox/syndicate)
+
+/obj/random/toolbox/item_to_spawn()
+ return pick(prob(6);/obj/item/weapon/storage/toolbox/mechanical,
+ prob(6);/obj/item/weapon/storage/toolbox/electrical,
+ prob(2);/obj/item/weapon/storage/toolbox/emergency,
+ prob(1);/obj/item/weapon/storage/toolbox/syndicate)
/obj/random/tech_supply
@@ -105,66 +113,78 @@
icon = 'icons/obj/power.dmi'
icon_state = "cell"
spawn_nothing_percentage = 25
- item_to_spawn()
- return pick(prob(3);/obj/random/powercell,
- prob(2);/obj/random/technology_scanner,
- prob(1);/obj/item/weapon/packageWrap,
- prob(2);/obj/random/bomb_supply,
- prob(1);/obj/item/weapon/extinguisher,
- prob(1);/obj/item/clothing/gloves/fyellow,
- prob(3);/obj/item/stack/cable_coil/random,
- prob(2);/obj/random/toolbox,
- prob(2);/obj/item/weapon/storage/belt/utility,
- prob(1);/obj/item/weapon/storage/belt/utility/full,
- prob(5);/obj/random/tool,
- prob(2);/obj/item/weapon/tape_roll,
- prob(2);/obj/item/taperoll/engineering,
- prob(1);/obj/item/taperoll/atmos,
- prob(1);/obj/item/device/flashlight/maglight)
+
+/obj/random/tech_supply/item_to_spawn()
+ return pick(prob(3);/obj/random/powercell,
+ prob(2);/obj/random/technology_scanner,
+ prob(1);/obj/item/weapon/packageWrap,
+ prob(2);/obj/random/bomb_supply,
+ prob(1);/obj/item/weapon/extinguisher,
+ prob(1);/obj/item/clothing/gloves/fyellow,
+ prob(3);/obj/item/stack/cable_coil/random,
+ prob(2);/obj/random/toolbox,
+ prob(2);/obj/item/weapon/storage/belt/utility,
+ prob(1);/obj/item/weapon/storage/belt/utility/full,
+ prob(5);/obj/random/tool,
+ prob(2);/obj/item/weapon/tape_roll,
+ prob(2);/obj/item/taperoll/engineering,
+ prob(1);/obj/item/taperoll/atmos,
+ prob(1);/obj/item/device/flashlight/maglight)
/obj/random/medical
name = "Random Medicine"
desc = "This is a random medical item."
icon = 'icons/obj/items.dmi'
- icon_state = "brutepack"
- spawn_nothing_percentage = 12.5
- item_to_spawn()
- return pick(prob(8);/obj/item/stack/medical/bruise_pack,
- prob(8);/obj/item/stack/medical/ointment,
- prob(4);/obj/item/stack/medical/advanced/bruise_pack,
- prob(4);/obj/item/stack/medical/advanced/ointment,
- prob(2);/obj/item/stack/medical/splint,
- prob(4);/obj/item/bodybag,
- prob(2);/obj/item/bodybag/cryobag,
- prob(4);/obj/item/weapon/storage/pill_bottle/kelotane,
- prob(4);/obj/item/weapon/storage/pill_bottle/dylovene,
- prob(4);/obj/item/weapon/storage/pill_bottle/tramadol,
- prob(1);/obj/item/weapon/storage/pill_bottle/spaceacillin,
- prob(1);/obj/item/weapon/storage/pill_bottle/tramadol,
- prob(0.2);/obj/item/weapon/storage/pill_bottle/dermaline,
- prob(0.2);/obj/item/weapon/storage/pill_bottle/dexalin_plus,
- prob(0.2);/obj/item/weapon/storage/pill_bottle/bicaridine,
- prob(4);/obj/item/weapon/reagent_containers/syringe/antitoxin,
- prob(2);/obj/item/weapon/reagent_containers/syringe/antiviral,
- prob(4);/obj/item/weapon/reagent_containers/syringe/inaprovaline,
- prob(4);/obj/item/weapon/reagent_containers/hypospray/autoinjector,
- prob(0.1);/obj/item/weapon/reagent_containers/hypospray,
- prob(1);/obj/item/device/healthanalyzer,
- prob(2);/obj/item/stack/nanopaste)
+ icon_state = "traumakit"
+/obj/random/medical/item_to_spawn()
+ return pick(prob(21);/obj/random/medical/lite,
+ prob(4);/obj/item/bodybag,
+ prob(4);/obj/item/weapon/storage/pill_bottle/tramadol,
+ prob(1);/obj/item/weapon/storage/pill_bottle/spaceacillin,
+ prob(1);/obj/item/weapon/storage/pill_bottle/tramadol,
+ prob(1);/obj/item/weapon/storage/pill_bottle/dermaline,
+ prob(1);/obj/item/weapon/storage/pill_bottle/dexalin_plus,
+ prob(1);/obj/item/weapon/storage/pill_bottle/bicaridine,
+ prob(6);/obj/item/weapon/reagent_containers/syringe/antitoxin,
+ prob(1);/obj/item/weapon/reagent_containers/syringe/antiviral,
+ prob(6);/obj/item/weapon/reagent_containers/syringe/inaprovaline,
+ prob(1);/obj/item/weapon/reagent_containers/hypospray,
+ prob(1);/obj/item/weapon/storage/box/freezer,
+ prob(2);/obj/item/stack/nanopaste)
+
+/obj/random/medical/lite
+ name = "Random Medicine"
+ desc = "This is a random simple medical item."
+ icon = 'icons/obj/items.dmi'
+ icon_state = "brutepack"
+ spawn_nothing_percentage = 25
+
+/obj/random/medical/lite/item_to_spawn()
+ return pick(prob(4);/obj/item/stack/medical/bruise_pack,
+ prob(4);/obj/item/stack/medical/ointment,
+ prob(2);/obj/item/stack/medical/advanced/bruise_pack,
+ prob(2);/obj/item/stack/medical/advanced/ointment,
+ prob(1);/obj/item/stack/medical/splint,
+ prob(4);/obj/item/device/healthanalyzer,
+ prob(1);/obj/item/bodybag/cryobag,
+ prob(3);/obj/item/weapon/reagent_containers/hypospray/autoinjector,
+ prob(2);/obj/item/weapon/storage/pill_bottle/kelotane,
+ prob(2);/obj/item/weapon/storage/pill_bottle/antitox)
/obj/random/firstaid
name = "Random First Aid Kit"
desc = "This is a random first aid kit."
icon = 'icons/obj/storage.dmi'
icon_state = "firstaid"
- item_to_spawn()
- return pick(prob(3);/obj/item/weapon/storage/firstaid/regular,
- prob(2);/obj/item/weapon/storage/firstaid/toxin,
- prob(2);/obj/item/weapon/storage/firstaid/o2,
- prob(1);/obj/item/weapon/storage/firstaid/adv,
- prob(2);/obj/item/weapon/storage/firstaid/fire)
+/obj/random/firstaid/item_to_spawn()
+ return pick(prob(4);/obj/item/weapon/storage/firstaid/regular,
+ prob(3);/obj/item/weapon/storage/firstaid/toxin,
+ prob(3);/obj/item/weapon/storage/firstaid/o2,
+ prob(2);/obj/item/weapon/storage/firstaid/adv,
+ prob(3);/obj/item/weapon/storage/firstaid/fire,
+ prob(1);/obj/item/weapon/storage/firstaid/combat)
/obj/random/contraband
name = "Random Illegal Item"
@@ -172,69 +192,104 @@
icon = 'icons/obj/items.dmi'
icon_state = "purplecomb"
spawn_nothing_percentage = 50
- item_to_spawn()
- return pick(prob(6);/obj/item/weapon/storage/pill_bottle/tramadol,
- prob(8);/obj/item/weapon/haircomb,
- prob(4);/obj/item/weapon/storage/pill_bottle/happy,
- prob(4);/obj/item/weapon/storage/pill_bottle/zoom,
- prob(10);/obj/item/weapon/contraband/poster,
- prob(4);/obj/item/weapon/material/butterfly,
- prob(6);/obj/item/weapon/material/butterflyblade,
- prob(6);/obj/item/weapon/material/butterflyhandle,
- prob(6);/obj/item/weapon/material/wirerod,
- prob(2);/obj/item/weapon/material/butterfly/switchblade,
- prob(2);/obj/item/weapon/material/knuckledusters,
- prob(1);/obj/item/weapon/material/hatchet/tacknife,
- prob(0.5);/obj/item/weapon/beartrap,
- prob(1);/obj/item/weapon/handcuffs,
- prob(1);/obj/item/weapon/legcuffs,
- prob(2);/obj/item/weapon/reagent_containers/syringe/drugs)
+/obj/random/contraband/item_to_spawn()
+ return pick(prob(6);/obj/item/weapon/storage/pill_bottle/tramadol,
+ prob(8);/obj/item/weapon/haircomb,
+ prob(4);/obj/item/weapon/storage/pill_bottle/happy,
+ prob(4);/obj/item/weapon/storage/pill_bottle/zoom,
+ prob(10);/obj/item/weapon/contraband/poster,
+ prob(4);/obj/item/weapon/material/butterfly,
+ prob(6);/obj/item/weapon/material/butterflyblade,
+ prob(6);/obj/item/weapon/material/butterflyhandle,
+ prob(6);/obj/item/weapon/material/wirerod,
+ prob(2);/obj/item/weapon/material/butterfly/switchblade,
+ prob(2);/obj/item/weapon/material/knuckledusters,
+ prob(1);/obj/item/weapon/material/hatchet/tacknife,
+ prob(1);/obj/item/clothing/suit/storage/vest/heavy/merc,
+ prob(1);/obj/item/weapon/beartrap,
+ prob(1);/obj/item/weapon/handcuffs,
+ prob(1);/obj/item/weapon/legcuffs,
+ prob(2);/obj/item/weapon/reagent_containers/syringe/drugs,
+ prob(1);/obj/item/weapon/reagent_containers/syringe/steroid)
+/obj/random/soap
+ name = "Random Soap"
+ desc = "This is a random bar of soap."
+ icon = 'icons/obj/items.dmi'
+ icon_state = "soap"
+
+/obj/random/soap/item_to_spawn()
+ return pick(prob(3);/obj/item/weapon/soap,
+ prob(2);/obj/item/weapon/soap/nanotrasen,
+ prob(2);/obj/item/weapon/soap/deluxe,
+ prob(1);/obj/item/weapon/soap/syndie,)
+
+
+/obj/random/drinkbottle
+ name = "random drink"
+ desc = "This is a random drink."
+ icon = 'icons/obj/drinks.dmi'
+ icon_state = "whiskeybottle"
+
+/obj/random/drinkbottle/item_to_spawn()
+ return pick(/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey,
+ /obj/item/weapon/reagent_containers/food/drinks/bottle/gin,
+ /obj/item/weapon/reagent_containers/food/drinks/bottle/specialwhiskey,
+ /obj/item/weapon/reagent_containers/food/drinks/bottle/vodka,
+ /obj/item/weapon/reagent_containers/food/drinks/bottle/tequilla,
+ /obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe,
+ /obj/item/weapon/reagent_containers/food/drinks/bottle/wine,
+ /obj/item/weapon/reagent_containers/food/drinks/bottle/cognac,
+ /obj/item/weapon/reagent_containers/food/drinks/bottle/rum,
+ /obj/item/weapon/reagent_containers/food/drinks/bottle/patron)
/obj/random/energy
- name = "Random Energy Weapon"
+ name = "Random Security Energy Weapon"
desc = "This is a random security weapon."
icon = 'icons/obj/gun.dmi'
icon_state = "energykill100"
- item_to_spawn()
- return pick(prob(2);/obj/item/weapon/gun/energy/laser,
- prob(2);/obj/item/weapon/gun/energy/gun)
+
+/obj/random/energy/item_to_spawn()
+ return pick(prob(2);/obj/item/weapon/gun/energy/laser,
+ prob(2);/obj/item/weapon/gun/energy/gun)
/obj/random/projectile
- name = "Random Projectile Weapon"
+ name = "Random Security Projectile Weapon"
desc = "This is a random security weapon."
icon = 'icons/obj/gun.dmi'
icon_state = "revolver"
- item_to_spawn()
- return pick(prob(3);/obj/item/weapon/gun/projectile/shotgun/pump,
- prob(2);/obj/item/weapon/gun/projectile/automatic/wt550,
- prob(1);/obj/item/weapon/gun/projectile/shotgun/pump/combat)
+
+/obj/random/projectile/item_to_spawn()
+ return pick(prob(3);/obj/item/weapon/gun/projectile/shotgun/pump,
+ prob(2);/obj/item/weapon/gun/projectile/automatic/wt550,
+ prob(1);/obj/item/weapon/gun/projectile/shotgun/pump/combat)
/obj/random/handgun
name = "Random Handgun"
desc = "This is a random security sidearm."
icon = 'icons/obj/gun.dmi'
icon_state = "secgundark"
- item_to_spawn()
- return pick(prob(3);/obj/item/weapon/gun/projectile/sec,
- prob(1);/obj/item/weapon/gun/projectile/sec/wood)
+/obj/random/handgun/item_to_spawn()
+ return pick(prob(3);/obj/item/weapon/gun/projectile/sec,
+ prob(1);/obj/item/weapon/gun/projectile/sec/wood)
/obj/random/ammo
name = "Random Ammunition"
desc = "This is random ammunition."
icon = 'icons/obj/ammo.dmi'
icon_state = "45-10"
- item_to_spawn()
- return pick(prob(6);/obj/item/weapon/storage/box/beanbags,
- prob(2);/obj/item/weapon/storage/box/shotgunammo,
- prob(4);/obj/item/weapon/storage/box/shotgunshells,
- prob(1);/obj/item/weapon/storage/box/stunshells,
- prob(2);/obj/item/ammo_magazine/c45m,
- prob(4);/obj/item/ammo_magazine/c45m/rubber,
- prob(4);/obj/item/ammo_magazine/c45m/flash,
- prob(2);/obj/item/ammo_magazine/mc9mmt,
- prob(6);/obj/item/ammo_magazine/mc9mmt/rubber)
+
+/obj/random/ammo/item_to_spawn()
+ return pick(prob(6);/obj/item/weapon/storage/box/beanbags,
+ prob(2);/obj/item/weapon/storage/box/shotgunammo,
+ prob(4);/obj/item/weapon/storage/box/shotgunshells,
+ prob(1);/obj/item/weapon/storage/box/stunshells,
+ prob(2);/obj/item/ammo_magazine/c45m,
+ prob(4);/obj/item/ammo_magazine/c45m/rubber,
+ prob(4);/obj/item/ammo_magazine/c45m/flash,
+ prob(2);/obj/item/ammo_magazine/mc9mmt,
+ prob(6);/obj/item/ammo_magazine/mc9mmt/rubber)
/obj/random/action_figure
@@ -242,59 +297,546 @@
desc = "This is a random action figure."
icon = 'icons/obj/toy.dmi'
icon_state = "assistant"
- item_to_spawn()
- return pick(/obj/item/toy/figure/cmo,
- /obj/item/toy/figure/assistant,
- /obj/item/toy/figure/atmos,
- /obj/item/toy/figure/bartender,
- /obj/item/toy/figure/borg,
- /obj/item/toy/figure/gardener,
- /obj/item/toy/figure/captain,
- /obj/item/toy/figure/cargotech,
- /obj/item/toy/figure/ce,
- /obj/item/toy/figure/chaplain,
- /obj/item/toy/figure/chef,
- /obj/item/toy/figure/chemist,
- /obj/item/toy/figure/clown,
- /obj/item/toy/figure/corgi,
- /obj/item/toy/figure/detective,
- /obj/item/toy/figure/dsquad,
- /obj/item/toy/figure/engineer,
- /obj/item/toy/figure/geneticist,
- /obj/item/toy/figure/hop,
- /obj/item/toy/figure/hos,
- /obj/item/toy/figure/qm,
- /obj/item/toy/figure/janitor,
- /obj/item/toy/figure/agent,
- /obj/item/toy/figure/librarian,
- /obj/item/toy/figure/md,
- /obj/item/toy/figure/mime,
- /obj/item/toy/figure/miner,
- /obj/item/toy/figure/ninja,
- /obj/item/toy/figure/wizard,
- /obj/item/toy/figure/rd,
- /obj/item/toy/figure/roboticist,
- /obj/item/toy/figure/scientist,
- /obj/item/toy/figure/syndie,
- /obj/item/toy/figure/secofficer,
- /obj/item/toy/figure/warden,
- /obj/item/toy/figure/psychologist,
- /obj/item/toy/figure/paramedic,
- /obj/item/toy/figure/ert)
+/obj/random/action_figure/item_to_spawn()
+ return pick(/obj/item/toy/figure/cmo,
+ /obj/item/toy/figure/assistant,
+ /obj/item/toy/figure/atmos,
+ /obj/item/toy/figure/bartender,
+ /obj/item/toy/figure/borg,
+ /obj/item/toy/figure/gardener,
+ /obj/item/toy/figure/captain,
+ /obj/item/toy/figure/cargotech,
+ /obj/item/toy/figure/ce,
+ /obj/item/toy/figure/chaplain,
+ /obj/item/toy/figure/chef,
+ /obj/item/toy/figure/chemist,
+ /obj/item/toy/figure/clown,
+ /obj/item/toy/figure/corgi,
+ /obj/item/toy/figure/detective,
+ /obj/item/toy/figure/dsquad,
+ /obj/item/toy/figure/engineer,
+ /obj/item/toy/figure/geneticist,
+ /obj/item/toy/figure/hop,
+ /obj/item/toy/figure/hos,
+ /obj/item/toy/figure/qm,
+ /obj/item/toy/figure/janitor,
+ /obj/item/toy/figure/agent,
+ /obj/item/toy/figure/librarian,
+ /obj/item/toy/figure/md,
+ /obj/item/toy/figure/mime,
+ /obj/item/toy/figure/miner,
+ /obj/item/toy/figure/ninja,
+ /obj/item/toy/figure/wizard,
+ /obj/item/toy/figure/rd,
+ /obj/item/toy/figure/roboticist,
+ /obj/item/toy/figure/scientist,
+ /obj/item/toy/figure/syndie,
+ /obj/item/toy/figure/secofficer,
+ /obj/item/toy/figure/warden,
+ /obj/item/toy/figure/psychologist,
+ /obj/item/toy/figure/paramedic,
+ /obj/item/toy/figure/ert)
/obj/random/plushie
name = "random plushie"
desc = "This is a random plushie."
icon = 'icons/obj/toy.dmi'
icon_state = "nymphplushie"
- item_to_spawn()
- return pick(/obj/structure/plushie/ian,
- /obj/structure/plushie/drone,
- /obj/structure/plushie/carp,
- /obj/structure/plushie/beepsky,
- /obj/item/toy/plushie/nymph,
- /obj/item/toy/plushie/mouse,
- /obj/item/toy/plushie/kitten,
- /obj/item/toy/plushie/lizard)
+/obj/random/plushie/item_to_spawn()
+ return pick(/obj/structure/plushie/ian,
+ /obj/structure/plushie/drone,
+ /obj/structure/plushie/carp,
+ /obj/structure/plushie/beepsky,
+ /obj/item/toy/plushie/nymph,
+ /obj/item/toy/plushie/mouse,
+ /obj/item/toy/plushie/kitten,
+ /obj/item/toy/plushie/lizard)
+
+/obj/random/junk //Broken items, or stuff that could be picked up
+ name = "random junk"
+ desc = "This is some random junk."
+ icon = 'icons/obj/trash.dmi'
+ icon_state = "trashbag3"
+
+/obj/random/junk/item_to_spawn()
+ return get_random_junk_type()
+
+/obj/random/trash //Mostly remains and cleanable decals. Stuff a janitor could clean up
+ name = "random trash"
+ desc = "This is some random trash."
+ icon = 'icons/effects/effects.dmi'
+ icon_state = "greenglow"
+
+/obj/random/trash/item_to_spawn()
+ return pick(/obj/effect/decal/remains/lizard,
+ /obj/effect/decal/cleanable/blood/gibs/robot,
+ /obj/effect/decal/cleanable/blood/oil,
+ /obj/effect/decal/cleanable/blood/oil/streak,
+ /obj/effect/decal/cleanable/spiderling_remains,
+ /obj/effect/decal/remains/mouse,
+ /obj/effect/decal/cleanable/vomit,
+ /obj/effect/decal/cleanable/blood/splatter,
+ /obj/effect/decal/cleanable/ash,
+ /obj/effect/decal/cleanable/generic,
+ /obj/effect/decal/cleanable/flour,
+ /obj/effect/decal/cleanable/dirt,
+ /obj/effect/decal/remains/robot)
+
+/obj/random/obstruction //Large objects to block things off in maintenance
+ name = "random obstruction"
+ desc = "This is a random obstruction."
+ icon = 'icons/obj/cult.dmi'
+ icon_state = "cultgirder"
+
+/obj/random/obstruction/item_to_spawn()
+ return pick(/obj/structure/barricade,
+ /obj/structure/girder,
+ /obj/structure/girder/displaced,
+ /obj/structure/girder/reinforced,
+ /obj/structure/grille,
+ /obj/structure/grille/broken,
+ /obj/structure/foamedmetal,
+ /obj/structure/inflatable,
+ /obj/structure/inflatable/door)
+
+/obj/random/material //Random materials for building stuff
+ name = "random material"
+ desc = "This is a random material."
+ icon = 'icons/obj/items.dmi'
+ icon_state = "sheet-metal"
+
+/obj/random/material/item_to_spawn()
+ return pick(/obj/item/stack/material/steel{amount = 10},
+ /obj/item/stack/material/glass{amount = 10},
+ /obj/item/stack/material/glass/reinforced{amount = 10},
+ /obj/item/stack/material/plastic{amount = 10},
+ /obj/item/stack/material/wood{amount = 10},
+ /obj/item/stack/material/cardboard{amount = 10},
+ /obj/item/stack/rods{amount = 10},
+ /obj/item/stack/material/plasteel{amount = 10})
+
+/obj/random/toy
+ name = "random toy"
+ desc = "This is a random toy."
+ icon = 'icons/obj/toy.dmi'
+ icon_state = "ship"
+
+/obj/random/toy/item_to_spawn()
+ return pick(/obj/item/toy/bosunwhistle,
+ /obj/item/toy/therapy_red,
+ /obj/item/toy/therapy_purple,
+ /obj/item/toy/therapy_blue,
+ /obj/item/toy/therapy_yellow,
+ /obj/item/toy/therapy_orange,
+ /obj/item/toy/therapy_green,
+ /obj/item/toy/cultsword,
+ /obj/item/toy/katana,
+ /obj/item/toy/snappop,
+ /obj/item/toy/sword,
+ /obj/item/toy/balloon,
+ /obj/item/toy/crossbow,
+ /obj/item/toy/blink,
+ /obj/item/toy/waterflower,
+ /obj/item/toy/prize/ripley,
+ /obj/item/toy/prize/fireripley,
+ /obj/item/toy/prize/deathripley,
+ /obj/item/toy/prize/gygax,
+ /obj/item/toy/prize/durand,
+ /obj/item/toy/prize/honk,
+ /obj/item/toy/prize/marauder,
+ /obj/item/toy/prize/seraph,
+ /obj/item/toy/prize/mauler,
+ /obj/item/toy/prize/odysseus,
+ /obj/item/toy/prize/phazon)
+
+/obj/random/tank
+ name = "random tank"
+ desc = "This is a tank."
+ icon = 'icons/obj/tank.dmi'
+ icon_state = "canister"
+
+/obj/random/tank/item_to_spawn()
+ return pick(prob(5);/obj/item/weapon/tank/oxygen,
+ prob(4);/obj/item/weapon/tank/oxygen/yellow,
+ prob(4);/obj/item/weapon/tank/oxygen/red,
+ prob(3);/obj/item/weapon/tank/air,
+ prob(4);/obj/item/weapon/tank/emergency_oxygen,
+ prob(3);/obj/item/weapon/tank/emergency_oxygen/engi,
+ prob(2);/obj/item/weapon/tank/emergency_oxygen/double,
+ prob(1);/obj/item/device/suit_cooling_unit)
+
+/obj/random/cigarettes
+ name = "random cigarettes"
+ desc = "This is a cigarette."
+ icon = 'icons/obj/cigarettes.dmi'
+ icon_state = "cigpacket"
+
+/obj/random/cigarettes/item_to_spawn()
+ return pick(prob(5);/obj/item/weapon/storage/fancy/cigarettes,
+ prob(4);/obj/item/weapon/storage/fancy/cigarettes/dromedaryco,
+ prob(3);/obj/item/weapon/storage/fancy/cigarettes/killthroat,
+ prob(3);/obj/item/weapon/storage/fancy/cigarettes/luckystars,
+ prob(3);/obj/item/weapon/storage/fancy/cigarettes/jerichos,
+ prob(3);/obj/item/weapon/storage/fancy/cigarettes/menthols,
+ prob(3);/obj/item/weapon/storage/fancy/cigarettes/carcinomas,
+ prob(3);/obj/item/weapon/storage/fancy/cigarettes/professionals,
+ prob(1);/obj/item/weapon/storage/fancy/cigar,
+ prob(1);/obj/item/clothing/mask/smokable/cigarette/cigar,
+ prob(1);/obj/item/clothing/mask/smokable/cigarette/cigar/cohiba,
+ prob(1);/obj/item/clothing/mask/smokable/cigarette/cigar/havana)
+
+/obj/random/maintenance //Clutter and loot for maintenance and away missions
+ name = "random maintenance item"
+ desc = "This is a random maintenance item."
+ icon = 'icons/obj/items.dmi'
+ icon_state = "gift1"
+
+/obj/random/maintenance/item_to_spawn()
+ return pick(prob(300);/obj/random/tech_supply,
+ prob(200);/obj/random/medical,
+ prob(100);/obj/random/firstaid,
+ prob(10);/obj/random/contraband,
+ prob(50);/obj/random/action_figure,
+ prob(50);/obj/random/plushie,
+ prob(200);/obj/random/junk,
+ prob(200);/obj/random/material,
+ prob(50);/obj/random/toy,
+ prob(100);/obj/random/tank,
+ prob(50);/obj/random/soap,
+ prob(60);/obj/random/drinkbottle,
+ prob(500);/obj/random/maintenance/clean)
+
+/obj/random/maintenance/clean
+/*Maintenance loot lists without the trash, for use inside things.
+Individual items to add to the maintenance list should go here, if you add
+something, make sure it's not in one of the other lists.*/
+ name = "random clean maintenance item"
+ desc = "This is a random clean maintenance item."
+ icon = 'icons/obj/items.dmi'
+ icon_state = "gift1"
+
+/obj/random/maintenance/clean/item_to_spawn()
+ return pick(prob(10);/obj/random/contraband,
+ prob(2);/obj/item/device/flashlight/flare,
+ prob(2);/obj/item/device/flashlight/glowstick,
+ prob(2);/obj/item/device/flashlight/glowstick/blue,
+ prob(1);/obj/item/device/flashlight/glowstick/orange,
+ prob(1);/obj/item/device/flashlight/glowstick/red,
+ prob(1);/obj/item/device/flashlight/glowstick/yellow,
+ prob(1);/obj/item/device/flashlight/pen,
+ prob(4);/obj/item/weapon/cell,
+ prob(4);/obj/item/weapon/cell/device,
+ prob(3);/obj/item/weapon/cell/high,
+ prob(2);/obj/item/weapon/cell/super,
+ prob(5);/obj/random/cigarettes,
+ prob(3);/obj/item/clothing/mask/gas,
+ prob(2);/obj/item/clothing/mask/gas/half,
+ prob(4);/obj/item/clothing/mask/breath,
+ prob(2);/obj/item/weapon/reagent_containers/glass/rag,
+ prob(4);/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
+ prob(2);/obj/item/weapon/storage/secure/briefcase,
+ prob(4);/obj/item/weapon/storage/briefcase,
+ prob(5);/obj/item/weapon/storage/backpack,
+ prob(5);/obj/item/weapon/storage/backpack/satchel/norm,
+ prob(4);/obj/item/weapon/storage/backpack/satchel,
+ prob(3);/obj/item/weapon/storage/backpack/dufflebag,
+ prob(1);/obj/item/weapon/storage/backpack/dufflebag/syndie,
+ prob(5);/obj/item/weapon/storage/box,
+ prob(3);/obj/item/weapon/storage/box/donkpockets,
+ prob(2);/obj/item/weapon/storage/box/sinpockets,
+ prob(1);/obj/item/weapon/storage/box/cups,
+ prob(3);/obj/item/weapon/storage/box/mousetraps,
+ prob(3);/obj/item/weapon/storage/box/engineer,
+ prob(3);/obj/item/weapon/storage/wallet,
+ prob(1);/obj/item/device/paicard,
+ prob(2);/obj/item/clothing/shoes/galoshes,
+ prob(1);/obj/item/clothing/shoes/syndigaloshes,
+ prob(4);/obj/item/clothing/shoes/black,
+ prob(4);/obj/item/clothing/shoes/laceup,
+ prob(4);/obj/item/clothing/shoes/black,
+ prob(4);/obj/item/clothing/shoes/leather,
+ prob(1);/obj/item/clothing/gloves/yellow,
+ prob(3);/obj/item/clothing/gloves/botanic_leather,
+ prob(2);/obj/item/clothing/gloves/latex,
+ prob(5);/obj/item/clothing/gloves/white,
+ prob(5);/obj/item/clothing/gloves/rainbow,
+ prob(2);/obj/item/clothing/gloves/fyellow,
+ prob(1);/obj/item/clothing/glasses/sunglasses,
+ prob(3);/obj/item/clothing/glasses/meson,
+ prob(2);/obj/item/clothing/glasses/meson/prescription,
+ prob(1);/obj/item/clothing/glasses/welding,
+ prob(1);/obj/item/clothing/head/bio_hood/general,
+ prob(4);/obj/item/clothing/head/hardhat,
+ prob(3);/obj/item/clothing/head/hardhat/red,
+ prob(1);/obj/item/clothing/head/ushanka,
+ prob(2);/obj/item/clothing/head/welding,
+ prob(4);/obj/item/clothing/suit/storage/hazardvest,
+ prob(1);/obj/item/clothing/suit/space/emergency,
+ prob(3);/obj/item/clothing/suit/storage/toggle/bomber,
+ prob(1);/obj/item/clothing/suit/bio_suit/general,
+ prob(3);/obj/item/clothing/suit/storage/toggle/hoodie/black,
+ prob(3);/obj/item/clothing/suit/storage/toggle/hoodie/blue,
+ prob(3);/obj/item/clothing/suit/storage/toggle/hoodie/red,
+ prob(3);/obj/item/clothing/suit/storage/toggle/hoodie/yellow,
+ prob(3);/obj/item/clothing/suit/storage/toggle/brown_jacket,
+ prob(3);/obj/item/clothing/suit/storage/toggle/leather_jacket,
+ prob(1);/obj/item/clothing/suit/storage/vest/press,
+ prob(3);/obj/item/clothing/suit/apron,
+ prob(4);/obj/item/clothing/under/color/grey,
+ prob(2);/obj/item/clothing/under/syndicate/tacticool,
+ prob(2);/obj/item/clothing/under/pants/camo,
+ prob(1);/obj/item/clothing/under/harness,
+ prob(1);/obj/item/clothing/under/tactical,
+ prob(3);/obj/item/clothing/accessory/storage/webbing,
+ prob(4);/obj/item/weapon/spacecash/c1,
+ prob(3);/obj/item/weapon/spacecash/c10,
+ prob(3);/obj/item/weapon/spacecash/c20,
+ prob(1);/obj/item/weapon/spacecash/c50,
+ prob(1);/obj/item/weapon/spacecash/c100,
+ prob(3);/obj/item/weapon/camera_assembly,
+ prob(4);/obj/item/weapon/caution,
+ prob(3);/obj/item/weapon/caution/cone,
+ prob(1);/obj/item/weapon/card/emag_broken,
+ prob(2);/obj/item/device/camera,
+ prob(3);/obj/item/device/pda,
+ prob(3);/obj/item/device/radio/headset)
+
+/obj/random/maintenance/security
+/*Maintenance loot list. This one is for around security areas*/
+ name = "random security maintenance item"
+ desc = "This is a random security maintenance item."
+ icon = 'icons/obj/items.dmi'
+ icon_state = "gift1"
+
+/obj/random/maintenance/security/item_to_spawn()
+ return pick(prob(320);/obj/random/maintenance/clean,
+ prob(2);/obj/item/device/flashlight/maglight,
+ prob(2);/obj/item/device/flash,
+ prob(1);/obj/item/weapon/cell/device/weapon,
+ prob(1);/obj/item/clothing/mask/gas/swat,
+ prob(1);/obj/item/clothing/mask/gas/syndicate,
+ prob(2);/obj/item/clothing/mask/balaclava,
+ prob(1);/obj/item/clothing/mask/balaclava/tactical,
+ prob(3);/obj/item/weapon/storage/backpack/security,
+ prob(3);/obj/item/weapon/storage/backpack/satchel/sec,
+ prob(2);/obj/item/weapon/storage/backpack/messenger/sec,
+ prob(2);/obj/item/weapon/storage/backpack/dufflebag/sec,
+ prob(1);/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo,
+ prob(1);/obj/item/weapon/storage/backpack/dufflebag/syndie/med,
+ prob(2);/obj/item/weapon/storage/box/swabs,
+ prob(2);/obj/item/weapon/storage/belt/security,
+ prob(1);/obj/item/weapon/grenade/flashbang,
+ prob(1);/obj/item/weapon/melee/baton,
+ prob(1);/obj/item/weapon/reagent_containers/spray/pepper,
+ prob(3);/obj/item/clothing/shoes/jackboots,
+ prob(1);/obj/item/clothing/shoes/swat,
+ prob(1);/obj/item/clothing/shoes/combat,
+ prob(1);/obj/item/clothing/gloves/swat,
+ prob(1);/obj/item/clothing/gloves/combat,
+ prob(1);/obj/item/clothing/glasses/sunglasses/big,
+ prob(2);/obj/item/clothing/glasses/hud/security,
+ prob(1);/obj/item/clothing/glasses/sunglasses/sechud,
+ prob(1);/obj/item/clothing/glasses/sunglasses/sechud/aviator,
+ prob(1);/obj/item/clothing/glasses/sunglasses/sechud/tactical,
+ prob(3);/obj/item/clothing/head/beret/sec,
+ prob(3);/obj/item/clothing/head/beret/sec/corporate/officer,
+ prob(3);/obj/item/clothing/head/beret/sec/navy/officer,
+ prob(2);/obj/item/clothing/head/helmet,
+ prob(4);/obj/item/clothing/head/soft/sec,
+ prob(4);/obj/item/clothing/head/soft/sec/corp,
+ prob(3);/obj/item/clothing/suit/armor/vest,
+ prob(2);/obj/item/clothing/suit/armor/vest/security,
+ prob(2);/obj/item/clothing/suit/storage/vest/officer,
+ prob(1);/obj/item/clothing/suit/storage/vest/detective,
+ prob(1);/obj/item/clothing/suit/storage/vest/press,
+ prob(2);/obj/item/clothing/accessory/storage/black_vest,
+ prob(2);/obj/item/clothing/accessory/storage/black_drop_pouches,
+ prob(1);/obj/item/clothing/accessory/holster/leg,
+ prob(1);/obj/item/clothing/accessory/holster/hip,
+ prob(1);/obj/item/clothing/accessory/holster/waist,
+ prob(1);/obj/item/clothing/accessory/holster/armpit,
+ prob(2);/obj/item/clothing/ears/earmuffs,
+ prob(2);/obj/item/weapon/handcuffs,)
+
+/obj/random/maintenance/medical
+/*Maintenance loot list. This one is for around medical areas*/
+ name = "random medical maintenance item"
+ desc = "This is a random medical maintenance item."
+ icon = 'icons/obj/items.dmi'
+ icon_state = "gift1"
+
+/obj/random/maintenance/medical/item_to_spawn()
+ return pick(prob(320);/obj/random/maintenance/clean,
+ prob(25);/obj/random/medical/lite,
+ prob(2);/obj/item/clothing/mask/breath/medical,
+ prob(2);/obj/item/clothing/mask/surgical,
+ prob(5);/obj/item/weapon/storage/backpack/medic,
+ prob(5);/obj/item/weapon/storage/backpack/satchel/med,
+ prob(5);/obj/item/weapon/storage/backpack/messenger/med,
+ prob(3);/obj/item/weapon/storage/backpack/dufflebag/med,
+ prob(1);/obj/item/weapon/storage/backpack/dufflebag/syndie/med,
+ prob(2);/obj/item/weapon/storage/box/autoinjectors,
+ prob(3);/obj/item/weapon/storage/box/beakers,
+ prob(2);/obj/item/weapon/storage/box/bodybags,
+ prob(3);/obj/item/weapon/storage/box/syringes,
+ prob(3);/obj/item/weapon/storage/box/gloves,
+ prob(2);/obj/item/weapon/storage/belt/medical/emt,
+ prob(2);/obj/item/weapon/storage/belt/medical,
+ prob(1);/obj/item/clothing/shoes/combat,
+ prob(3);/obj/item/clothing/shoes/white,
+ prob(2);/obj/item/clothing/gloves/latex,
+ prob(5);/obj/item/clothing/gloves/white,
+ prob(2);/obj/item/clothing/glasses/hud/health,
+ prob(1);/obj/item/clothing/glasses/hud/health/prescription,
+ prob(1);/obj/item/clothing/head/bio_hood/virology,
+ prob(4);/obj/item/clothing/suit/storage/toggle/labcoat,
+ prob(1);/obj/item/clothing/suit/bio_suit/general,
+ prob(2);/obj/item/clothing/under/rank/medical/paramedic,
+ prob(2);/obj/item/clothing/accessory/storage/black_vest,
+ prob(2);/obj/item/clothing/accessory/storage/white_vest,
+ prob(1);/obj/item/clothing/accessory/storage/white_drop_pouches,
+ prob(1);/obj/item/clothing/accessory/storage/black_drop_pouches,
+ prob(2);/obj/item/clothing/accessory/stethoscope)
+
+/obj/random/maintenance/engineering
+/*Maintenance loot list. This one is for around medical areas*/
+ name = "random engineering maintenance item"
+ desc = "This is a random engineering maintenance item."
+ icon = 'icons/obj/items.dmi'
+ icon_state = "gift1"
+
+/obj/random/maintenance/engineering/item_to_spawn()
+ return pick(prob(320);/obj/random/maintenance/clean,
+ prob(2);/obj/item/device/flashlight/maglight,
+ prob(3);/obj/item/clothing/mask/gas/half,
+ prob(2);/obj/item/clothing/mask/balaclava,
+ prob(2);/obj/item/weapon/storage/briefcase/inflatable,
+ prob(5);/obj/item/weapon/storage/backpack/industrial,
+ prob(5);/obj/item/weapon/storage/backpack/satchel/eng,
+ prob(5);/obj/item/weapon/storage/backpack/messenger/engi,
+ prob(3);/obj/item/weapon/storage/backpack/dufflebag/eng,
+ prob(5);/obj/item/weapon/storage/box,
+ prob(3);/obj/item/weapon/storage/box/engineer,
+ prob(2);/obj/item/weapon/storage/belt/utility/full,
+ prob(3);/obj/item/weapon/storage/belt/utility,
+ prob(3);/obj/item/clothing/head/beret/engineering,
+ prob(3);/obj/item/clothing/head/soft/yellow,
+ prob(2);/obj/item/clothing/head/orangebandana,
+ prob(2);/obj/item/clothing/head/hardhat/dblue,
+ prob(2);/obj/item/clothing/head/hardhat/orange,
+ prob(1);/obj/item/clothing/glasses/welding,
+ prob(2);/obj/item/clothing/head/welding,
+ prob(4);/obj/item/clothing/suit/storage/hazardvest,
+ prob(2);/obj/item/clothing/under/overalls,
+ prob(3);/obj/item/clothing/shoes/workboots,
+ prob(1);/obj/item/clothing/shoes/magboots,
+ prob(2);/obj/item/clothing/accessory/storage/black_vest,
+ prob(2);/obj/item/clothing/accessory/storage/brown_vest,
+ prob(1);/obj/item/clothing/accessory/storage/brown_drop_pouches,
+ prob(3);/obj/item/clothing/ears/earmuffs,
+ prob(1);/obj/item/weapon/beartrap,
+ prob(2);/obj/item/weapon/handcuffs)
+
+/obj/random/maintenance/research
+/*Maintenance loot list. This one is for around medical areas*/
+ name = "random research maintenance item"
+ desc = "This is a random research maintenance item."
+ icon = 'icons/obj/items.dmi'
+ icon_state = "gift1"
+
+/obj/random/maintenance/research/item_to_spawn()
+ return pick(prob(320);/obj/random/maintenance/clean,
+ prob(3);/obj/item/device/analyzer/plant_analyzer,
+ prob(2);/obj/item/device/analyzer/xeno_analyzer,
+ prob(1);/obj/item/device/flash/synthetic,
+ prob(2);/obj/item/weapon/bucket_sensor,
+ prob(1);/obj/item/weapon/cell/device/weapon,
+ prob(5);/obj/item/weapon/storage/backpack/toxins,
+ prob(5);/obj/item/weapon/storage/backpack/satchel/tox,
+ prob(5);/obj/item/weapon/storage/backpack/messenger/tox,
+ prob(2);/obj/item/weapon/storage/excavation,
+ prob(1);/obj/item/weapon/storage/backpack/holding,
+ prob(3);/obj/item/weapon/storage/box/beakers,
+ prob(3);/obj/item/weapon/storage/box/syringes,
+ prob(3);/obj/item/weapon/storage/box/gloves,
+ prob(2);/obj/item/clothing/gloves/latex,
+ prob(4);/obj/item/clothing/glasses/science,
+ prob(3);/obj/item/clothing/glasses/material,
+ prob(1);/obj/item/clothing/head/beret/purple,
+ prob(1);/obj/item/clothing/head/bio_hood/scientist,
+ prob(4);/obj/item/clothing/suit/storage/toggle/labcoat,
+ prob(4);/obj/item/clothing/suit/storage/toggle/labcoat/science,
+ prob(1);/obj/item/clothing/suit/bio_suit/scientist,
+ prob(4);/obj/item/clothing/under/rank/scientist,
+ prob(2);/obj/item/clothing/under/rank/scientist_new)
+
+/obj/random/maintenance/cargo
+/*Maintenance loot list. This one is for around cargo areas*/
+ name = "random cargo maintenance item"
+ desc = "This is a random cargo maintenance item."
+ icon = 'icons/obj/items.dmi'
+ icon_state = "gift1"
+
+/obj/random/maintenance/cargo/item_to_spawn()
+ return pick(prob(320);/obj/random/maintenance/clean,
+ prob(3);/obj/item/device/flashlight/lantern,
+ prob(4);/obj/item/weapon/pickaxe,
+ prob(5);/obj/item/weapon/storage/backpack/industrial,
+ prob(5);/obj/item/weapon/storage/backpack/satchel/norm,
+ prob(3);/obj/item/weapon/storage/backpack/dufflebag,
+ prob(1);/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo,
+ prob(1);/obj/item/weapon/storage/toolbox/syndicate,
+ prob(1);/obj/item/weapon/storage/belt/utility/full,
+ prob(2);/obj/item/weapon/storage/belt/utility,
+ prob(4);/obj/item/device/toner,
+ prob(1);/obj/item/device/destTagger,
+ prob(3);/obj/item/clothing/glasses/material,
+ prob(3);/obj/item/clothing/head/soft/yellow,
+ prob(4);/obj/item/clothing/suit/storage/hazardvest,
+ prob(3);/obj/item/clothing/suit/apron/overalls,
+ prob(4);/obj/item/clothing/suit/apron,
+ prob(2);/obj/item/clothing/under/syndicate/tacticool,
+ prob(1);/obj/item/clothing/under/syndicate/combat,
+ prob(2);/obj/item/clothing/accessory/storage/black_vest,
+ prob(2);/obj/item/clothing/accessory/storage/brown_vest,
+ prob(3);/obj/item/clothing/ears/earmuffs,
+ prob(1);/obj/item/weapon/beartrap,
+ prob(2);/obj/item/weapon/handcuffs,)
+
+var/list/random_junk_
+var/list/random_useful_
+/proc/get_random_useful_type()
+ if(!random_useful_)
+ random_useful_ = subtypesof(/obj/item/weapon/pen/crayon)
+ random_useful_ += /obj/item/weapon/pen
+ random_useful_ += /obj/item/weapon/pen/blue
+ random_useful_ += /obj/item/weapon/pen/red
+ random_useful_ += /obj/item/weapon/pen/multi
+ random_useful_ += /obj/item/weapon/storage/box/matches
+ random_useful_ += /obj/item/stack/material/cardboard
+ return pick(random_useful_)
+
+/proc/get_random_junk_type()
+ if(prob(20)) // Misc. clutter
+ return /obj/effect/decal/cleanable/generic
+ if(prob(70)) // Misc. junk
+ if(!random_junk_)
+ random_junk_ = subtypesof(/obj/item/trash)
+ random_junk_ += typesof(/obj/item/weapon/cigbutt)
+ random_junk_ += /obj/effect/decal/cleanable/spiderling_remains
+ random_junk_ += /obj/effect/decal/remains/mouse
+ random_junk_ += /obj/effect/decal/remains/robot
+ random_junk_ += /obj/item/weapon/paper/crumpled
+ random_junk_ += /obj/item/inflatable/torn
+ random_junk_ += /obj/effect/decal/cleanable/molten_item
+ random_junk_ += /obj/item/weapon/material/shard
+
+ random_junk_ -= /obj/item/trash/plate
+ random_junk_ -= /obj/item/trash/snack_bowl
+ random_junk_ -= /obj/item/trash/syndi_cakes
+ random_junk_ -= /obj/item/trash/tray
+ return pick(random_junk_)
+ // Misc. actually useful stuff
+ return get_random_useful_type()
\ No newline at end of file
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index 28fea14370..df4fcc83f6 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -288,8 +288,8 @@
src.add_fingerprint(user)
return
-/obj/structure/closet/attack_ai(mob/user)
- if(istype(user, /mob/living/silicon/robot) && Adjacent(user)) // Robots can open/close it, but not the AI.
+/obj/structure/closet/attack_robot(mob/user)
+ if(Adjacent(user))
attack_hand(user)
/obj/structure/closet/relaymove(mob/user as mob)
@@ -317,7 +317,7 @@
if(!usr.canmove || usr.stat || usr.restrained())
return
- if(ishuman(usr))
+ if(ishuman(usr) || isrobot(usr))
src.add_fingerprint(usr)
src.toggle(usr)
else
diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm
index 2abd0e1d8a..c93f68a82a 100644
--- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm
@@ -118,4 +118,6 @@
new /obj/item/clothing/glasses/sunglasses/big(src)
new /obj/item/clothing/glasses/sunglasses/big(src)
new /obj/item/clothing/under/lawyer/blue(src)
- new /obj/item/clothing/under/lawyer/blue(src)
\ No newline at end of file
+ new /obj/item/clothing/under/lawyer/blue(src)
+ new /obj/item/device/tape/random(src)
+ new /obj/item/device/tape/random(src)
\ No newline at end of file
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
index 787e0adb3b..3ead9d15aa 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
@@ -32,6 +32,7 @@
new /obj/item/clothing/suit/storage/hazardvest(src)
new /obj/item/clothing/mask/gas(src)
new /obj/item/device/multitool(src)
+ new /obj/item/weapon/weldingtool/experimental(src)
new /obj/item/device/flash(src)
new /obj/item/taperoll/engineering(src)
new /obj/item/clothing/suit/storage/hooded/wintercoat/engineering(src)
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
index fdd1ed5c80..d886236c1b 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
@@ -236,6 +236,37 @@
req_access = list(access_chemistry)
+ New()
+ ..()
+ new /obj/item/clothing/under/rank/psych(src)
+ new /obj/item/clothing/under/rank/psych/turtleneck(src)
+ new /obj/item/clothing/suit/straight_jacket(src)
+ new /obj/item/weapon/reagent_containers/glass/bottle/stoxin(src)
+ new /obj/item/weapon/reagent_containers/syringe(src)
+ new /obj/item/weapon/storage/pill_bottle/citalopram(src)
+ new /obj/item/weapon/reagent_containers/pill/methylphenidate(src)
+ new /obj/item/weapon/clipboard(src)
+ new /obj/item/weapon/folder/white(src)
+ new /obj/item/device/taperecorder(src)
+ new /obj/item/device/tape/random(src)
+ new /obj/item/device/tape/random(src)
+ new /obj/item/device/tape/random(src)
+ new /obj/item/device/camera(src)
+ new /obj/item/toy/therapy_blue(src)
+ return
+
+/obj/structure/closet/secure_closet/psych
+ name = "psychiatric closet"
+ desc = "Store psychology tools and medicines in here."
+ icon_state = "medical1"
+ icon_closed = "medical"
+ icon_locked = "medical1"
+ icon_opened = "medicalopen"
+ icon_broken = "medicalbroken"
+ icon_off = "medicaloff"
+ req_access = list(access_psychiatrist)
+
+
New()
..()
new /obj/item/weapon/storage/box/pillbottles(src)
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
index 49fe7bbdd3..5a6962f710 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
@@ -134,7 +134,7 @@
if(!usr.canmove || usr.stat || usr.restrained()) // Don't use it if you're not able to! Checks for stuns, ghost and restrain
return
- if(ishuman(usr))
+ if(ishuman(usr) || isrobot(usr))
src.add_fingerprint(usr)
src.togglelock(usr)
else
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
index 064f58f83e..58fa8ed5f2 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
@@ -280,6 +280,10 @@
new /obj/item/device/flashlight/maglight(src)
new /obj/item/weapon/reagent_containers/food/drinks/flask/detflask(src)
new /obj/item/weapon/storage/briefcase/crimekit(src)
+ new /obj/item/device/taperecorder(src)
+ new /obj/item/device/tape/random(src)
+ new /obj/item/device/tape/random(src)
+ new /obj/item/device/tape/random(src)
return
/obj/structure/closet/secure_closet/detective/update_icon()
diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index 931a990085..62a3c64e48 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -177,7 +177,7 @@
if(!usr.canmove || usr.stat || usr.restrained()) // Don't use it if you're not able to! Checks for stuns, ghost and restrain
return
- if(ishuman(usr))
+ if(ishuman(usr) || isrobot(usr))
src.add_fingerprint(usr)
src.togglelock(usr)
else
diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm
index bd39d82801..834eadc2a4 100644
--- a/code/game/objects/structures/door_assembly.dm
+++ b/code/game/objects/structures/door_assembly.dm
@@ -138,14 +138,20 @@
bound_width = world.icon_size
bound_height = width * world.icon_size
+/obj/structure/door_assembly/proc/rename_door(mob/living/user)
+ var/t = sanitizeSafe(input(user, "Enter the name for the windoor.", src.name, src.created_name), MAX_NAME_LEN)
+ if(!in_range(src, user) && src.loc != user) return
+ created_name = t
+ update_state()
+/obj/structure/door_assembly/attack_robot(mob/living/silicon/robot/user)
+ if(Adjacent(user) && (user.module && (istype(user.module,/obj/item/weapon/robot_module/robot/engineering/general)) \
+ || istype(user.module,/obj/item/weapon/robot_module/drone))) //Only dron (and engiborg) needs this.
+ rename_door(user)
/obj/structure/door_assembly/attackby(obj/item/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/pen))
- var/t = sanitizeSafe(input(user, "Enter the name for the door.", src.name, src.created_name), MAX_NAME_LEN)
- if(!t) return
- if(!in_range(src, usr) && src.loc != usr) return
- created_name = t
+ rename_door(user)
return
if(istype(W, /obj/item/weapon/weldingtool) && ( (istext(glass)) || (glass == 1) || (!anchored) ))
@@ -156,7 +162,7 @@
user.visible_message("[user] welds the [glass] plating off the airlock assembly.", "You start to weld the [glass] plating off the airlock assembly.")
if(do_after(user, 40))
if(!src || !WT.isOn()) return
- user << "You welded the [glass] plating off!"
+ to_chat(user, "You welded the [glass] plating off!")
var/M = text2path("/obj/item/stack/material/[glass]")
new M(src.loc, 2)
glass = 0
@@ -164,18 +170,18 @@
user.visible_message("[user] welds the glass panel out of the airlock assembly.", "You start to weld the glass panel out of the airlock assembly.")
if(do_after(user, 40))
if(!src || !WT.isOn()) return
- user << "You welded the glass panel out!"
+ to_chat(user, "You welded the glass panel out!")
new /obj/item/stack/material/glass/reinforced(src.loc)
glass = 0
else if(!anchored)
user.visible_message("[user] dissassembles the airlock assembly.", "You start to dissassemble the airlock assembly.")
if(do_after(user, 40))
if(!src || !WT.isOn()) return
- user << "You dissasembled the airlock assembly!"
+ to_chat(user, "You dissasembled the airlock assembly!")
new /obj/item/stack/material/steel(src.loc, 4)
qdel (src)
else
- user << "You need more welding fuel."
+ to_chat(user, "You need more welding fuel.")
return
else if(istype(W, /obj/item/weapon/wrench) && state == 0)
@@ -187,19 +193,19 @@
if(do_after(user, 40))
if(!src) return
- user << "You [anchored? "un" : ""]secured the airlock assembly!"
+ to_chat(user, "You [anchored? "un" : ""]secured the airlock assembly!")
anchored = !anchored
else if(istype(W, /obj/item/stack/cable_coil) && state == 0 && anchored)
var/obj/item/stack/cable_coil/C = W
if (C.get_amount() < 1)
- user << "You need one length of coil to wire the airlock assembly."
+ to_chat(user, "You need one length of coil to wire the airlock assembly.")
return
user.visible_message("[user] wires the airlock assembly.", "You start to wire the airlock assembly.")
if(do_after(user, 40) && state == 0 && anchored)
if (C.use(1))
src.state = 1
- user << "You wire the airlock."
+ to_chat(user, "You wire the airlock.")
else if(istype(W, /obj/item/weapon/wirecutters) && state == 1 )
playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1)
@@ -207,7 +213,7 @@
if(do_after(user, 40))
if(!src) return
- user << "You cut the airlock wires.!"
+ to_chat(user, "You cut the airlock wires.!")
new/obj/item/stack/cable_coil(src.loc, 1)
src.state = 0
@@ -219,14 +225,14 @@
if(!src) return
user.drop_item()
W.loc = src
- user << "You installed the airlock electronics!"
+ to_chat(user, "You installed the airlock electronics!")
src.state = 2
src.electronics = W
else if(istype(W, /obj/item/weapon/crowbar) && state == 2 )
//This should never happen, but just in case I guess
if (!electronics)
- user << "There was nothing to remove."
+ to_chat(user, "There was nothing to remove.")
src.state = 1
return
@@ -235,7 +241,7 @@
if(do_after(user, 40))
if(!src) return
- user << "You removed the airlock electronics!"
+ to_chat(user, "You removed the airlock electronics!")
src.state = 1
electronics.loc = src.loc
electronics = null
@@ -250,28 +256,28 @@
user.visible_message("[user] adds [S.name] to the airlock assembly.", "You start to install [S.name] into the airlock assembly.")
if(do_after(user, 40) && !glass)
if (S.use(1))
- user << "You installed reinforced glass windows into the airlock assembly."
+ to_chat(user, "You installed reinforced glass windows into the airlock assembly.")
glass = 1
else if(material_name)
// Ugly hack, will suffice for now. Need to fix it upstream as well, may rewrite mineral walls. ~Z
if(!(material_name in list("gold", "silver", "diamond", "uranium", "phoron", "sandstone")))
- user << "You cannot make an airlock out of that material."
+ to_chat(user, "You cannot make an airlock out of that material.")
return
if(S.get_amount() >= 2)
playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1)
user.visible_message("[user] adds [S.name] to the airlock assembly.", "You start to install [S.name] into the airlock assembly.")
if(do_after(user, 40) && !glass)
if (S.use(2))
- user << "You installed [material_display_name(material_name)] plating into the airlock assembly."
+ to_chat(user, "You installed [material_display_name(material_name)] plating into the airlock assembly.")
glass = material_name
else if(istype(W, /obj/item/weapon/screwdriver) && state == 2 )
playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1)
- user << "Now finishing the airlock."
+ to_chat(user, "Now finishing the airlock.")
if(do_after(user, 40))
if(!src) return
- user << "You finish the airlock!"
+ to_chat(user, "You finish the airlock!")
var/path
if(istext(glass))
path = text2path("/obj/machinery/door/airlock/[glass]")
diff --git a/code/game/objects/structures/inflatable.dm b/code/game/objects/structures/inflatable.dm
index d6d25ffc0a..57d78e21f1 100644
--- a/code/game/objects/structures/inflatable.dm
+++ b/code/game/objects/structures/inflatable.dm
@@ -4,14 +4,20 @@
icon = 'icons/obj/inflatable.dmi'
icon_state = "folded_wall"
w_class = ITEMSIZE_NORMAL
+ var/deploy_path = /obj/structure/inflatable
- attack_self(mob/user)
- playsound(loc, 'sound/items/zip.ogg', 75, 1)
- user << "You inflate [src]."
- var/obj/structure/inflatable/R = new /obj/structure/inflatable(user.loc)
- src.transfer_fingerprints_to(R)
- R.add_fingerprint(user)
- qdel(src)
+/obj/item/inflatable/attack_self(mob/user)
+ inflate(user,user.loc)
+
+/obj/item/inflatable/afterattack(var/atom/A, var/mob/user)
+ ..(A, user)
+ if(!user)
+ return
+ if(!user.Adjacent(A))
+ to_chat(user,"You can't reach!")
+ return
+ if(istype(A, /turf))
+ inflate(user,A)
/obj/structure/inflatable
name = "inflatable wall"
@@ -82,6 +88,17 @@
if(health <= 0)
deflate(1)
+/obj/structure/inflatable/CtrlClick()
+ hand_deflate()
+
+/obj/item/inflatable/proc/inflate(var/mob/user,var/location)
+ playsound(location, 'sound/items/zip.ogg', 75, 1)
+ to_chat(user,"You inflate [src].")
+ var/obj/structure/inflatable/R = new deploy_path(location)
+ src.transfer_fingerprints_to(R)
+ R.add_fingerprint(user)
+ qdel(src)
+
/obj/structure/inflatable/proc/deflate(var/violent=0)
playsound(loc, 'sound/machines/hiss.ogg', 75, 1)
if(violent)
@@ -102,7 +119,7 @@
set category = "Object"
set src in oview(1)
- if(isobserver(usr)) //to stop ghosts from deflating
+ if(isobserver(usr) || usr.restrained() || !usr.Adjacent(src))
return
verbs -= /obj/structure/inflatable/verb/hand_deflate
@@ -123,14 +140,7 @@
desc = "A folded membrane which rapidly expands into a simple door on activation."
icon = 'icons/obj/inflatable.dmi'
icon_state = "folded_door"
-
- attack_self(mob/user)
- playsound(loc, 'sound/items/zip.ogg', 75, 1)
- user << "You inflate [src]."
- var/obj/structure/inflatable/door/R = new /obj/structure/inflatable/door(user.loc)
- src.transfer_fingerprints_to(R)
- R.add_fingerprint(user)
- qdel(src)
+ deploy_path = /obj/structure/inflatable/door
/obj/structure/inflatable/door //Based on mineral door code
name = "inflatable door"
@@ -165,7 +175,6 @@
if(isSwitchingStates) return
if(ismob(user))
var/mob/M = user
- if(world.time - user.last_bumped <= 60) return //NOTE do we really need that?
if(M.client)
if(iscarbon(M))
var/mob/living/carbon/C = M
diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm
index 10c6ae08f1..86aca41e17 100644
--- a/code/game/objects/structures/windoor_assembly.dm
+++ b/code/game/objects/structures/windoor_assembly.dm
@@ -25,6 +25,7 @@ obj/structure/windoor_assembly
var/facing = "l" //Does the windoor open to the left or right?
var/secure = "" //Whether or not this creates a secure windoor
var/state = "01" //How far the door assembly has progressed in terms of sprites
+ var/step = null //How far the door assembly has progressed in terms of steps
obj/structure/windoor_assembly/secure
name = "secure windoor assembly"
@@ -41,6 +42,7 @@ obj/structure/windoor_assembly/New(Loc, start_dir=NORTH, constructed=0)
set_dir(start_dir)
else //If the user is facing northeast. northwest, southeast, southwest or north, default to north
set_dir(NORTH)
+ update_state()
update_nearby_tiles(need_rebuild=1)
@@ -69,13 +71,20 @@ obj/structure/windoor_assembly/Destroy()
else
return 1
+/obj/structure/windoor_assembly/proc/rename_door(mob/living/user)
+ var/t = sanitizeSafe(input(user, "Enter the name for the windoor.", src.name, src.created_name), MAX_NAME_LEN)
+ if(!in_range(src, user) && src.loc != user) return
+ created_name = t
+ update_state()
+
+/obj/structure/windoor_assembly/attack_robot(mob/living/silicon/robot/user)
+ if(Adjacent(user) && (user.module && (istype(user.module,/obj/item/weapon/robot_module/robot/engineering/general)) \
+ || istype(user.module,/obj/item/weapon/robot_module/drone))) //Only dron (and engiborg) needs this.
+ rename_door(user)
/obj/structure/windoor_assembly/attackby(obj/item/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/pen))
- var/t = sanitizeSafe(input(user, "Enter the name for the windoor.", src.name, src.created_name), MAX_NAME_LEN)
- if(!t) return
- if(!in_range(src, usr) && src.loc != usr) return
- created_name = t
+ rename_door(user)
return
switch(state)
@@ -88,14 +97,14 @@ obj/structure/windoor_assembly/Destroy()
if(do_after(user, 40))
if(!src || !WT.isOn()) return
- user << "You disassembled the windoor assembly!"
+ to_chat(user,"You disassembled the windoor assembly!")
if(secure)
new /obj/item/stack/material/glass/reinforced(get_turf(src), 2)
else
new /obj/item/stack/material/glass(get_turf(src), 2)
qdel(src)
else
- user << "You need more welding fuel to disassemble the windoor assembly."
+ to_chat(user,"You need more welding fuel to disassemble the windoor assembly.")
return
//Wrenching an unsecure assembly anchors it in place. Step 4 complete
@@ -105,12 +114,9 @@ obj/structure/windoor_assembly/Destroy()
if(do_after(user, 40))
if(!src) return
- user << "You've secured the windoor assembly!"
+ to_chat(user,"You've secured the windoor assembly!")
src.anchored = 1
- if(src.secure)
- src.name = "secure anchored windoor assembly"
- else
- src.name = "anchored windoor assembly"
+ step = 0
//Unwrenching an unsecure assembly un-anchors it. Step 4 undone
else if(istype(W, /obj/item/weapon/wrench) && anchored)
@@ -119,12 +125,9 @@ obj/structure/windoor_assembly/Destroy()
if(do_after(user, 40))
if(!src) return
- user << "You've unsecured the windoor assembly!"
+ to_chat(user,"You've unsecured the windoor assembly!")
src.anchored = 0
- if(src.secure)
- src.name = "secure windoor assembly"
- else
- src.name = "windoor assembly"
+ step = null
//Adding cable to the assembly. Step 5 complete.
else if(istype(W, /obj/item/stack/cable_coil) && anchored)
@@ -133,12 +136,9 @@ obj/structure/windoor_assembly/Destroy()
var/obj/item/stack/cable_coil/CC = W
if(do_after(user, 40))
if (CC.use(1))
- user << "You wire the windoor!"
+ to_chat(user,"You wire the windoor!")
src.state = "02"
- if(src.secure)
- src.name = "secure wired windoor assembly"
- else
- src.name = "wired windoor assembly"
+ step = 1
else
..()
@@ -152,16 +152,13 @@ obj/structure/windoor_assembly/Destroy()
if(do_after(user, 40))
if(!src) return
- user << "You cut the windoor wires.!"
+ to_chat(user,"You cut the windoor wires.!")
new/obj/item/stack/cable_coil(get_turf(user), 1)
src.state = "01"
- if(src.secure)
- src.name = "secure anchored windoor assembly"
- else
- src.name = "anchored windoor assembly"
+ step = 0
//Adding airlock electronics for access. Step 6 complete.
- else if(istype(W, /obj/item/weapon/airlock_electronics) && W:icon_state != "door_electronics_smoked")
+ else if(istype(W, /obj/item/weapon/airlock_electronics))
playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1)
user.visible_message("[user] installs the electronics into the airlock assembly.", "You start to install electronics into the airlock assembly.")
@@ -170,8 +167,8 @@ obj/structure/windoor_assembly/Destroy()
user.drop_item()
W.loc = src
- user << "You've installed the airlock electronics!"
- src.name = "near finished windoor assembly"
+ to_chat(user,"You've installed the airlock electronics!")
+ step = 2
src.electronics = W
else
W.loc = src.loc
@@ -183,11 +180,8 @@ obj/structure/windoor_assembly/Destroy()
if(do_after(user, 40))
if(!src || !src.electronics) return
- user << "You've removed the airlock electronics!"
- if(src.secure)
- src.name = "secure wired windoor assembly"
- else
- src.name = "wired windoor assembly"
+ to_chat(user,"You've removed the airlock electronics!")
+ step = 1
var/obj/item/weapon/airlock_electronics/ae = electronics
electronics = null
ae.loc = src.loc
@@ -195,9 +189,12 @@ obj/structure/windoor_assembly/Destroy()
//Crowbar to complete the assembly, Step 7 complete.
else if(istype(W, /obj/item/weapon/crowbar))
if(!src.electronics)
- usr << "The assembly is missing electronics."
+ to_chat(usr,"The assembly is missing electronics.")
return
- usr << browse(null, "window=windoor_access")
+ if(src.electronics && istype(src.electronics, /obj/item/weapon/circuitboard/broken))
+ to_chat(usr,"The assembly has broken airlock electronics.")
+ return
+ to_chat(usr,browse(null, "window=windoor_access")) //Not sure what this actually does... -Ner
playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1)
user.visible_message("[user] pries the windoor into the frame.", "You start prying the windoor into the frame.")
@@ -206,7 +203,7 @@ obj/structure/windoor_assembly/Destroy()
if(!src) return
density = 1 //Shouldn't matter but just incase
- user << "You finish the windoor!"
+ to_chat(user,"You finish the windoor!")
if(secure)
var/obj/machinery/door/window/brigdoor/windoor = new /obj/machinery/door/window/brigdoor(src.loc)
@@ -218,7 +215,8 @@ obj/structure/windoor_assembly/Destroy()
windoor.base_state = "rightsecure"
windoor.set_dir(src.dir)
windoor.density = 0
- windoor.name = created_name
+ if(created_name)
+ windoor.name = created_name
spawn(0)
windoor.close()
@@ -239,7 +237,8 @@ obj/structure/windoor_assembly/Destroy()
windoor.base_state = "right"
windoor.set_dir(src.dir)
windoor.density = 0
- windoor.name = created_name
+ if(created_name)
+ windoor.name = created_name
spawn(0)
windoor.close()
@@ -263,7 +262,15 @@ obj/structure/windoor_assembly/Destroy()
/obj/structure/windoor_assembly/proc/update_state()
update_icon()
- name += " ([created_name])"
+ name = ""
+ switch(step)
+ if (0)
+ name = "anchored "
+ if (1)
+ name = "wired "
+ if (2)
+ name = "near finished "
+ name += "[secure ? "secure " : ""]windoor assembly[created_name ? " ([created_name])" : ""]"
//Rotates the windoor assembly clockwise
/obj/structure/windoor_assembly/verb/revrotate()
@@ -272,7 +279,7 @@ obj/structure/windoor_assembly/Destroy()
set src in oview(1)
if (src.anchored)
- usr << "It is fastened to the floor; therefore, you can't rotate it!"
+ to_chat(usr,"It is fastened to the floor; therefore, you can't rotate it!")
return 0
if(src.state != "01")
update_nearby_tiles(need_rebuild=1) //Compel updates before
@@ -292,11 +299,11 @@ obj/structure/windoor_assembly/Destroy()
set src in oview(1)
if(src.facing == "l")
- usr << "The windoor will now slide to the right."
+ to_chat(usr,"The windoor will now slide to the right.")
src.facing = "r"
else
src.facing = "l"
- usr << "The windoor will now slide to the left."
+ to_chat(usr,"The windoor will now slide to the left.")
update_icon()
return
diff --git a/code/game/response_team.dm b/code/game/response_team.dm
index 60a17a1ff2..5892b7f6e5 100644
--- a/code/game/response_team.dm
+++ b/code/game/response_team.dm
@@ -5,7 +5,7 @@ var/global/send_emergency_team = 0 // Used for automagic response teams
// 'admin_emergency_team' for admin-spawned response teams
var/ert_base_chance = 10 // Default base chance. Will be incremented by increment ERT chance.
var/can_call_ert
-var/silent_ert
+var/silent_ert = 0
/client/proc/response_team()
set name = "Dispatch Emergency Response Team"
diff --git a/code/global.dm b/code/global.dm
index 99dcca0b37..1b132eed6e 100644
--- a/code/global.dm
+++ b/code/global.dm
@@ -195,6 +195,6 @@ var/static/list/scarySounds = list(
var/max_explosion_range = 14
// Announcer intercom, because too much stuff creates an intercom for one message then hard del()s it.
-var/global/obj/item/device/radio/intercom/global_announcer = new(null)
+var/global/obj/item/device/radio/intercom/global_announcer = new /obj/item/device/radio/intercom{channels=list("Engineering")}(null)
-var/list/station_departments = list("Command", "Medical", "Engineering", "Science", "Security", "Cargo", "Civilian")
+var/list/station_departments = list("Command", "Medical", "Engineering", "Science", "Security", "Cargo", "Civilian")
\ No newline at end of file
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index d4b0509147..662b945b33 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -256,7 +256,7 @@ Ccomp's first proc.
/client/proc/allow_character_respawn()
set category = "Special Verbs"
set name = "Allow player to respawn"
- set desc = "Let's the player bypass the 15 minute wait to respawn or allow them to re-enter their corpse."
+ set desc = "Let's the player bypass the wait to respawn or allow them to re-enter their corpse."
if(!holder)
src << "Only administrators and moderators may use this command."
var/list/ghosts= get_ghosts(1,1)
@@ -278,8 +278,8 @@ Ccomp's first proc.
G.can_reenter_corpse = 1
G:show_message(text("\blue You may now respawn. You should roleplay as if you learned nothing about the round during your time with the dead."), 1)
- log_admin("[key_name(usr)] allowed [key_name(G)] to bypass the 15 minute respawn limit")
- message_admins("Admin [key_name_admin(usr)] allowed [key_name_admin(G)] to bypass the 15 minute respawn limit", 1)
+ log_admin("[key_name(usr)] allowed [key_name(G)] to bypass the respawn time limit")
+ message_admins("Admin [key_name_admin(usr)] allowed [key_name_admin(G)] to bypass the respawn time limit", 1)
/client/proc/toggle_antagHUD_use()
diff --git a/code/modules/client/preference_setup/loadout/loadout.dm b/code/modules/client/preference_setup/loadout/loadout.dm
index 8f2d5af598..3891bf0562 100644
--- a/code/modules/client/preference_setup/loadout/loadout.dm
+++ b/code/modules/client/preference_setup/loadout/loadout.dm
@@ -21,7 +21,7 @@ var/list/gear_datums = list()
if(!use_name)
error("Loadout - Missing display name: [G]")
continue
- if(!initial(G.cost))
+ if(isnull(initial(G.cost)))
error("Loadout - Missing cost: [G]")
continue
if(!initial(G.path))
diff --git a/code/modules/client/preference_setup/loadout/loadout_eyes.dm b/code/modules/client/preference_setup/loadout/loadout_eyes.dm
index b7aedb8790..5909b0eb2e 100644
--- a/code/modules/client/preference_setup/loadout/loadout_eyes.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_eyes.dm
@@ -38,6 +38,10 @@
display_name = "Security HUD, prescription (Security)"
path = /obj/item/clothing/glasses/hud/security/prescription
+/datum/gear/eyes/security/sunglasshud
+ display_name = "Security HUD, sunglasses (Security)"
+ path = /obj/item/clothing/glasses/sunglasses/sechud
+
/datum/gear/eyes/secaviators
display_name = "Security HUD Aviators"
path = /obj/item/clothing/glasses/sunglasses/sechud/aviator
diff --git a/code/modules/client/preference_setup/loadout/loadout_gloves.dm b/code/modules/client/preference_setup/loadout/loadout_gloves.dm
index 91d20d8371..d59aa62158 100644
--- a/code/modules/client/preference_setup/loadout/loadout_gloves.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_gloves.dm
@@ -57,3 +57,13 @@
/datum/gear/gloves/evening/New()
..()
gear_tweaks = list(gear_tweak_free_color_choice)
+
+/datum/gear/gloves/duty
+ display_name = "gloves, work"
+ path = /obj/item/clothing/gloves/duty
+ cost = 3
+
+/datum/gear/gloves/forensic
+ display_name = "gloves, forensic"
+ path = /obj/item/clothing/gloves/forensic
+ allowed_roles = list("Detective")
\ No newline at end of file
diff --git a/code/modules/client/preference_setup/loadout/loadout_head.dm b/code/modules/client/preference_setup/loadout/loadout_head.dm
index 72bd4a0817..822feec101 100644
--- a/code/modules/client/preference_setup/loadout/loadout_head.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_head.dm
@@ -117,11 +117,35 @@
display_name = "cap, white"
path = /obj/item/clothing/head/soft/mime
+/datum/gear/head/cap/mbill
+ display_name = "cap, bill"
+ path = /obj/item/clothing/head/soft/mbill
+
+/datum/gear/head/cap/sol
+ display_name = "cap, sol"
+ path = /obj/item/clothing/head/soft/sol
+
+/datum/gear/head/cap/expdition
+ display_name = "cap, expedition"
+ path = /obj/item/clothing/head/soft/sol/expedition
+
+/datum/gear/head/cap/fleet
+ display_name = "cap, fleet"
+ path = /obj/item/clothing/head/soft/sol/fleet
+
/datum/gear/head/cowboy
display_name = "cowboy, rodeo"
path = /obj/item/clothing/head/cowboy_hat
cost = 3
+/datum/gear/head/cowboy/black
+ display_name = "cowboy, black"
+ path = /obj/item/clothing/head/cowboy_hat/black
+
+/datum/gear/head/cowboy/wide
+ display_name = "cowboy, wide"
+ path = /obj/item/clothing/head/cowboy_hat/wide
+
/datum/gear/head/fedora
display_name = "fedora, brown"
path = /obj/item/clothing/head/fedora/brown
@@ -154,6 +178,14 @@
display_name = "hair flower pin, orange"
path = /obj/item/clothing/head/hairflower/orange
+/datum/gear/head/hairflower/white
+ display_name = "hair flower pin"
+ path = /obj/item/clothing/head/hairflower/white
+
+/datum/gear/head/hairflower/white/New()
+ ..()
+ gear_tweaks = list(gear_tweak_free_color_choice)
+
/datum/gear/head/hardhat
display_name = "hardhat, yellow"
path = /obj/item/clothing/head/hardhat
@@ -198,7 +230,7 @@
/datum/gear/head/santahat
display_name = "santa hat, red (holiday)"
path = /obj/item/clothing/head/santa
- cost = 11
+ cost = 2
/datum/gear/head/santahat/green
display_name = "santa hat, green (holiday)"
@@ -233,6 +265,14 @@
..()
gear_tweaks = list(gear_tweak_free_color_choice)
+/datum/gear/head/taqiyah
+ display_name = "taqiyah"
+ path = /obj/item/clothing/head/taqiyah
+
+/datum/gear/head/taqiyah/New()
+ ..()
+ gear_tweaks = list(gear_tweak_free_color_choice)
+
/datum/gear/head/beanie
display_name = "beanie"
path = /obj/item/clothing/head/beanie
@@ -275,4 +315,42 @@
/datum/gear/head/bow/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
\ No newline at end of file
+ gear_tweaks = list(gear_tweak_free_color_choice)
+
+/datum/gear/head/welding/
+ display_name = "welding, normal (engineering/robotics)"
+ path = /obj/item/clothing/head/welding
+ cost = 2
+ allowed_roles = list("Chief Engineer","Station Engineer","Atmospheric Technician","Research Director","Roboticist")
+
+/datum/gear/head/welding/demon
+ display_name = "welding, demon (engineering/robotics)"
+ path = /obj/item/clothing/head/welding/demon
+ allowed_roles = list("Chief Engineer","Station Engineer","Atmospheric Technician","Research Director","Roboticist")
+
+/datum/gear/head/welding/knight
+ display_name = "welding, knight (engineering/robotics)"
+ path = /obj/item/clothing/head/welding/knight
+ allowed_roles = list("Chief Engineer","Station Engineer","Atmospheric Technician","Research Director","Roboticist")
+
+/datum/gear/head/welding/fancy
+ display_name = "welding, fancy (engineering/robotics)"
+ path = /obj/item/clothing/head/welding/fancy
+ allowed_roles = list("Chief Engineer","Station Engineer","Atmospheric Technician","Research Director","Roboticist")
+
+/datum/gear/head/welding/engie
+ display_name = "welding, engie (engineering/robotics)"
+ path = /obj/item/clothing/head/welding/engie
+ allowed_roles = list("Chief Engineer","Station Engineer","Atmospheric Technician","Research Director","Roboticist")
+
+/datum/gear/head/beret/sol
+ display_name = "beret sol, selection"
+ path = /obj/item/clothing/head/beret/sol
+
+/datum/gear/head/beret/sol/New()
+ ..()
+ var/list/sols = list()
+ for(var/sol_style in typesof(/obj/item/clothing/head/beret/sol))
+ var/obj/item/clothing/head/beret/sol/sol = sol_style
+ sols[initial(sol.name)] = sol
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(sols))
\ No newline at end of file
diff --git a/code/modules/client/preference_setup/loadout/loadout_shoes.dm b/code/modules/client/preference_setup/loadout/loadout_shoes.dm
index a24d24a1e5..07236c3592 100644
--- a/code/modules/client/preference_setup/loadout/loadout_shoes.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_shoes.dm
@@ -131,4 +131,26 @@
/datum/gear/shoes/flats/color/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
\ No newline at end of file
+ gear_tweaks = list(gear_tweak_free_color_choice)
+
+/datum/gear/shoes/cowboy
+ display_name = "cowboy boots"
+ path = /obj/item/clothing/shoes/cowboy
+
+/datum/gear/shoes/jungle
+ display_name = "jungle boots"
+ path = /obj/item/clothing/shoes/jungleboots
+ cost = 2
+
+/datum/gear/shoes/duty
+ display_name = "duty boots"
+ path = /obj/item/clothing/shoes/dutyboots
+ cost = 2
+
+/datum/gear/shoes/dress
+ display_name = "shoes, dress"
+ path = /obj/item/clothing/shoes/dress
+
+/datum/gear/shoes/dress/white
+ display_name = "shoes, dress white"
+ path = /obj/item/clothing/shoes/dress/white
\ No newline at end of file
diff --git a/code/modules/client/preference_setup/loadout/loadout_suit.dm b/code/modules/client/preference_setup/loadout/loadout_suit.dm
index fbc538b8c4..2514a41b3e 100644
--- a/code/modules/client/preference_setup/loadout/loadout_suit.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_suit.dm
@@ -87,9 +87,17 @@
path = /obj/item/clothing/suit/storage/trench/grey
/datum/gear/suit/hazard_vest
- display_name = "hazard vest"
+ display_name = "hazard vest selection"
path = /obj/item/clothing/suit/storage/hazardvest
+/datum/gear/suit/hazard_vest/New()
+ ..()
+ var/list/hazards = list()
+ for(var/hazard_style in typesof(/obj/item/clothing/suit/storage/hazardvest))
+ var/obj/item/clothing/suit/storage/hazardvest/hazardvest = hazard_style
+ hazards[initial(hazardvest.name)] = hazardvest
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(hazards))
+
/datum/gear/suit/hoodie
display_name = "hoodie selection"
path = /obj/item/clothing/suit/storage/toggle/hoodie
@@ -327,3 +335,16 @@
/datum/gear/suit/denim_vest/corporate
display_name = "denim vest, corporate"
path = /obj/item/clothing/suit/storage/toggle/denim_jacket/nanotrasen/sleeveless
+
+/datum/gear/suit/service
+ display_name = "service jacket selection"
+ path = /obj/item/clothing/suit/storage/service
+
+/datum/gear/suit/service/New()
+ ..()
+ var/list/services = list()
+ for(var/service_style in typesof(/obj/item/clothing/suit/storage/service))
+ var/obj/item/clothing/suit/storage/service/service = service_style
+ services[initial(service.name)] = service
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(services))
+
diff --git a/code/modules/client/preference_setup/loadout/loadout_uniform.dm b/code/modules/client/preference_setup/loadout/loadout_uniform.dm
index 4682dd3f29..e40883dc79 100644
--- a/code/modules/client/preference_setup/loadout/loadout_uniform.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_uniform.dm
@@ -380,4 +380,68 @@
/datum/gear/uniform/dresses/janimaid
display_name = "maid uniform"
- path = /obj/item/clothing/under/dress/janimaid
\ No newline at end of file
+ path = /obj/item/clothing/under/dress/janimaid
+
+/datum/gear/uniform/pt
+ display_name = "pt uniform"
+ path = /obj/item/clothing/under/pt
+
+/datum/gear/uniform/pt/expeditionary
+ display_name = "pt uniform, expeditionary"
+ path = /obj/item/clothing/under/pt/expeditionary
+
+/datum/gear/uniform/pt/fleet
+ display_name = "pt uniform, fleet"
+ path = /obj/item/clothing/under/pt/fleet
+
+/datum/gear/uniform/utility
+ display_name = "utility, black"
+ path = /obj/item/clothing/under/utility
+ cost = 2
+
+/datum/gear/uniform/utility/fleet
+ display_name = "utility, navy"
+ path = /obj/item/clothing/under/utility/fleet
+
+/datum/gear/uniform/utility/marine
+ display_name = "utility, grey"
+ path = /obj/item/clothing/under/utility/marine
+
+/datum/gear/uniform/sweater
+ display_name = "sweater, grey"
+ path = /obj/item/clothing/under/rank/psych/turtleneck/sweater
+
+/datum/gear/uniform/jumpsuit/aether
+ display_name = "jumpsuit, aether"
+ path = /obj/item/clothing/under/aether
+
+/datum/gear/uniform/jumpsuit/focal
+ display_name = "jumpsuit, focal"
+ path = /obj/item/clothing/under/focal
+
+/datum/gear/uniform/mbill
+ display_name = "outfit, major bill's (Cargo)"
+ path = /obj/item/clothing/under/mbill
+ allowed_roles = list("Quartermaster","Cargo Technician")
+
+/datum/gear/uniform/pcrc
+ display_name = "uniform, PCRC (Security)"
+ path = /obj/item/clothing/under/pcrc
+ cost = 2
+ allowed_roles = list("Security Officer","Head of Security","Warden")
+
+/datum/gear/uniform/jumpsuit/grayson
+ display_name = "outfit, grayson"
+ path = /obj/item/clothing/under/grayson
+
+/datum/gear/uniform/jumpsuit/wardt
+ display_name = "jumpsuit, ward-takahashi"
+ path = /obj/item/clothing/under/wardt
+
+/datum/gear/uniform/frontier
+ display_name = "outfit, frontier"
+ path = /obj/item/clothing/under/frontier
+
+/datum/gear/uniform/jumpsuit/hephaestus
+ display_name = "jumpsuit, hephaestus"
+ path = /obj/item/clothing/under/hephaestus
\ No newline at end of file
diff --git a/code/modules/client/preference_setup/loadout/loadout_utility.dm b/code/modules/client/preference_setup/loadout/loadout_utility.dm
index 40d1efb748..2bb167e5cf 100644
--- a/code/modules/client/preference_setup/loadout/loadout_utility.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_utility.dm
@@ -11,6 +11,7 @@
/datum/gear/utility/communicator
display_name = "personal communicator"
path = /obj/item/device/communicator
+ cost = 0
/datum/gear/utility/folder_blue
display_name = "folder, blue"
@@ -39,4 +40,20 @@
/datum/gear/utility/securecase
display_name = "secure briefcase"
path =/obj/item/weapon/storage/secure/briefcase
- cost = 2
\ No newline at end of file
+ cost = 2
+
+/datum/gear/utility/flashlight
+ display_name = "flashlight"
+ path = /obj/item/device/flashlight
+
+/datum/gear/utility/maglight
+ display_name = "flashlight, maglight"
+ path = /obj/item/device/flashlight/maglight
+ cost = 2
+
+/datum/gear/utility/implant //This does nothing if you don't actually know EAL.
+ display_name = "implant, language, EAL"
+ path = /obj/item/weapon/implant/language/eal
+ cost = 2
+ slot = "implant"
+ var/implant_type = "EAL"
diff --git a/code/modules/client/preference_setup/loadout/loadout_xeno.dm b/code/modules/client/preference_setup/loadout/loadout_xeno.dm
index cfe92370bf..ca2be0cdd4 100644
--- a/code/modules/client/preference_setup/loadout/loadout_xeno.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_xeno.dm
@@ -127,3 +127,4 @@
path = /obj/item/clothing/under/shorts/loincloth
sort_category = "Xenowear"
//whitelisted = list("Tajaran", "Unathi") //VORESTATION EDIT
+
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index a1c2b930ae..68dc3c25ce 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -377,9 +377,11 @@
body_parts_covered = FEET
slot_flags = SLOT_FEET
- var/can_hold_knife
+ var/can_hold_knife = 0
var/obj/item/holding
+ var/shoes_under_pants = 0
+
permeability_coefficient = 0.50
slowdown = SHOES_SLOWDOWN
force = 2
@@ -415,10 +417,10 @@
/obj/item/clothing/shoes/attackby(var/obj/item/I, var/mob/user)
- if(can_hold_knife && istype(I, /obj/item/weapon/material/shard) || \
+ if((can_hold_knife == 1) && (istype(I, /obj/item/weapon/material/shard) || \
istype(I, /obj/item/weapon/material/butterfly) || \
istype(I, /obj/item/weapon/material/kitchen/utensil) || \
- istype(I, /obj/item/weapon/material/hatchet/tacknife))
+ istype(I, /obj/item/weapon/material/hatchet/tacknife)))
if(holding)
user << "\The [src] is already holding \a [holding]."
return
@@ -431,10 +433,23 @@
else
return ..()
+/obj/item/clothing/shoes/verb/toggle_layer()
+ set name = "Switch Shoe Layer"
+ set category = "Object"
+
+ if(shoes_under_pants == -1)
+ usr << "\The [src] cannot be worn above your suit!"
+ return
+ shoes_under_pants = !shoes_under_pants
+ update_icon()
+
/obj/item/clothing/shoes/update_icon()
overlays.Cut()
if(holding)
overlays += image(icon, "[icon_state]_knife")
+ if(ismob(usr))
+ var/mob/M = usr
+ M.update_inv_shoes()
return ..()
/obj/item/clothing/shoes/proc/handle_movement(var/turf/walking, var/running)
diff --git a/code/modules/clothing/gloves/arm_guards.dm b/code/modules/clothing/gloves/arm_guards.dm
index 7fe17dd758..ef7d0b28dc 100644
--- a/code/modules/clothing/gloves/arm_guards.dm
+++ b/code/modules/clothing/gloves/arm_guards.dm
@@ -2,7 +2,6 @@
name = "arm guards"
desc = "These arm guards will protect your hands and arms."
body_parts_covered = HANDS|ARMS
- slowdown = 0.5
overgloves = 1
w_class = ITEMSIZE_NORMAL
diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm
index 6360f864e0..27e6ad0369 100644
--- a/code/modules/clothing/gloves/miscellaneous.dm
+++ b/code/modules/clothing/gloves/miscellaneous.dm
@@ -11,6 +11,19 @@
item_state = "r_hands"
siemens_coefficient = 1.0
+/obj/item/clothing/gloves/forensic
+ desc = "Specially made gloves for forensic technicians. The luminescent threads woven into the material stand out under scrutiny."
+ name = "forensic gloves"
+ icon_state = "forensic"
+ item_state = "black"
+ siemens_coefficient = 0.50
+ permeability_coefficient = 0.05
+
+ cold_protection = HANDS
+ min_cold_protection_temperature = GLOVES_MIN_COLD_PROTECTION_TEMPERATURE
+ heat_protection = HANDS
+ max_heat_protection_temperature = GLOVES_MAX_HEAT_PROTECTION_TEMPERATURE
+
/obj/item/clothing/gloves/swat
desc = "These tactical gloves are somewhat fire and impact-resistant."
name = "\improper SWAT Gloves"
@@ -51,3 +64,21 @@
item_state_slots = list(slot_r_hand_str = "lightbrown", slot_l_hand_str = "lightbrown")
permeability_coefficient = 0.05
siemens_coefficient = 0.50 //thick work gloves
+
+/obj/item/clothing/gloves/duty
+ desc = "These brown duty gloves are made from a durable synthetic."
+ name = "work gloves"
+ icon_state = "work"
+ item_state = "wgloves"
+ siemens_coefficient = 0.50
+ armor = list(melee = 10, bullet = 10, laser = 10, energy = 5, bomb = 0, bio = 0, rad = 0)
+
+/obj/item/clothing/gloves/tactical
+ desc = "These brown tactical gloves are made from a durable synthetic, and have hardened knuckles."
+ name = "tactical gloves"
+ icon_state = "work"
+ item_state = "wgloves"
+ force = 5
+ siemens_coefficient = 0.50
+ permeability_coefficient = 0.05
+ armor = list(melee = 30, bullet = 10, laser = 10, energy = 15, bomb = 20, bio = 0, rad = 0)
diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm
index 86023f5202..66827de346 100644
--- a/code/modules/clothing/head/helmet.dm
+++ b/code/modules/clothing/head/helmet.dm
@@ -13,6 +13,46 @@
w_class = ITEMSIZE_NORMAL
ear_protection = 1
+/obj/item/clothing/head/helmet/solgov
+ name = "\improper Solar Confederate Government helmet"
+ desc = "A helmet painted in Peacekeeper blue. Stands out like a sore thumb."
+ icon_state = "helmet_sol"
+ armor = list(melee = 50, bullet = 50, laser = 50,energy = 25, bomb = 30, bio = 0, rad = 0)
+
+/obj/item/clothing/head/helmet/solgov/command
+ name = "command helmet"
+ desc = "A helmet with 'Solar Confederate Government' printed on the back in gold lettering."
+ icon_state = "helmet_command"
+
+/obj/item/clothing/head/helmet/solgov/security
+ name = "security helmet"
+ desc = "A helmet with 'MASTER AT ARMS' printed on the back in silver lettering."
+ icon_state = "helmet_security"
+
+/obj/item/clothing/head/helmet/nt
+ name = "\improper NanoTrasen helmet"
+ desc = "A helmet with 'CORPORATE SECURITY' printed on the back in red lettering."
+ icon_state = "helmet_nt"
+
+/obj/item/clothing/head/helmet/pcrc
+ name = "\improper PCRC helmet"
+ desc = "A helmet with 'PRIVATE SECURITY' printed on the back in cyan lettering."
+ icon_state = "helmet_pcrc"
+
+/obj/item/clothing/head/helmet/tac
+ name = "tactical helmet"
+ desc = "A tan helmet made from advanced ceramic. Comfortable and robust."
+ icon_state = "helmet_tac"
+ armor = list(melee = 50, bullet = 60, laser = 60, energy = 45, bomb = 30, bio = 0, rad = 0)
+ siemens_coefficient = 0.6
+
+/obj/item/clothing/head/helmet/merc
+ name = "combat helmet"
+ desc = "A heavily reinforced helmet painted with red markings. Feels like it could take a lot of punishment."
+ icon_state = "helmet_merc"
+ armor = list(melee = 70, bullet = 70, laser = 70, energy = 35, bomb = 30, bio = 0, rad = 0)
+ siemens_coefficient = 0.5
+
/obj/item/clothing/head/helmet/riot
name = "riot helmet"
desc = "It's a helmet specifically designed to protect against close range attacks."
diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm
index a2e64744ac..e8c59db705 100644
--- a/code/modules/clothing/head/jobs.dm
+++ b/code/modules/clothing/head/jobs.dm
@@ -132,12 +132,12 @@
/obj/item/clothing/head/beret/engineering
name = "engineering beret"
desc = "A beret with the engineering insignia emblazoned on it. For engineers that are more inclined towards style than safety."
- icon_state = "beret_engineering"
+ icon_state = "beret_orange"
/obj/item/clothing/head/beret/purple
name = "purple beret"
desc = "A stylish, if purple, beret."
- icon_state = "beret_purple"
+ icon_state = "beret_purpleyellow"
/obj/item/clothing/head/beret/centcom/officer
name = "officers beret"
diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm
index 591a77db2b..d354ec315e 100644
--- a/code/modules/clothing/head/misc.dm
+++ b/code/modules/clothing/head/misc.dm
@@ -32,6 +32,9 @@
/obj/item/clothing/head/hairflower/orange
icon_state = "hairflower_orange"
+/obj/item/clothing/head/hairflower/white
+ icon_state = "hairflower_white"
+
/obj/item/clothing/head/hairflower/bow
icon_state = "bow"
name = "hair bow"
@@ -236,6 +239,16 @@
icon_state = "cowboyhat"
body_parts_covered = 0
+/obj/item/clothing/head/cowboy_hat/black
+ name = "black cowboy hat"
+ desc = "You can almost hear the old western music."
+ icon_state = "cowboy_black"
+
+/obj/item/clothing/head/cowboy_hat/wide
+ name = "wide-brimmed cowboy hat"
+ desc = "Because justice isn't going to dispense itself."
+ icon_state = "cowboy_wide"
+
/obj/item/clothing/head/witchwig
name = "witch costume wig"
desc = "Eeeee~heheheheheheh!"
@@ -303,7 +316,13 @@
icon_state = "turban"
item_state_slots = list(slot_r_hand_str = "beret_white", slot_l_hand_str = "beret_white")
body_parts_covered = 0
- flags_inv = BLOCKHAIR
+ flags_inv = BLOCKHEADHAIR
+
+/obj/item/clothing/head/taqiyah
+ name = "taqiyah"
+ desc = "A short, rounded skullcap usually worn for religious purposes."
+ icon_state = "taqiyah"
+ item_state_slots = list(slot_r_hand_str = "taq", slot_l_hand_str = "taq")
/obj/item/clothing/head/beanie
name = "beanie"
diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm
index 0fed75c822..97c5ae4a6d 100644
--- a/code/modules/clothing/head/misc_special.dm
+++ b/code/modules/clothing/head/misc_special.dm
@@ -27,8 +27,6 @@
var/base_state
/obj/item/clothing/head/welding/attack_self()
- if(!base_state)
- base_state = icon_state
toggle()
@@ -37,6 +35,9 @@
set name = "Adjust welding mask"
set src in usr
+ if(!base_state)
+ base_state = icon_state
+
if(usr.canmove && !usr.stat && !usr.restrained())
if(src.up)
src.up = !src.up
@@ -56,6 +57,43 @@
M.update_inv_wear_mask()
usr.update_action_buttons()
+/obj/item/clothing/head/welding/demon
+ name = "demonic welding helmet"
+ desc = "A painted welding helmet, this one has a demonic face on it."
+ icon_state = "demonwelding"
+ item_state_slots = list(
+ slot_l_hand_str = "demonwelding",
+ slot_r_hand_str = "demonwelding",
+ )
+
+/obj/item/clothing/head/welding/knight
+ name = "knightly welding helmet"
+ desc = "A painted welding helmet, this one looks like a knights helmet."
+ icon_state = "knightwelding"
+ item_state_slots = list(
+ slot_l_hand_str = "knightwelding",
+ slot_r_hand_str = "knightwelding",
+ )
+
+/obj/item/clothing/head/welding/fancy
+ name = "fancy welding helmet"
+ desc = "A painted welding helmet, the black and gold make this one look very fancy."
+ icon_state = "fancywelding"
+ item_state_slots = list(
+ slot_l_hand_str = "fancywelding",
+ slot_r_hand_str = "fancywelding",
+ )
+
+/obj/item/clothing/head/welding/engie
+ name = "engineering welding helmet"
+ desc = "A painted welding helmet, this one has been painted the engineering colours."
+ icon_state = "engiewelding"
+ item_state_slots = list(
+ slot_l_hand_str = "engiewelding",
+ slot_r_hand_str = "engiewelding",
+ )
+.
+
/*
* Cakehat
*/
diff --git a/code/modules/clothing/head/soft_caps.dm b/code/modules/clothing/head/soft_caps.dm
index 0a5a494ecb..17b5722273 100644
--- a/code/modules/clothing/head/soft_caps.dm
+++ b/code/modules/clothing/head/soft_caps.dm
@@ -92,4 +92,9 @@
name = "black cap"
desc = "It's a peaked cap in a tasteful black color."
icon_state = "blacksoft"
- item_state_slots = list(slot_r_hand_str = "blacksoft", slot_l_hand_str = "blacksoft")
\ No newline at end of file
+ item_state_slots = list(slot_r_hand_str = "blacksoft", slot_l_hand_str = "blacksoft")
+
+/obj/item/clothing/head/soft/mbill
+ name = "shipping cap"
+ desc = "It's a ballcap bearing the colors of Major Bill's Shipping."
+ icon_state = "mbillsoft"
diff --git a/code/modules/clothing/head/solgov.dm b/code/modules/clothing/head/solgov.dm
new file mode 100644
index 0000000000..9ed37a4eda
--- /dev/null
+++ b/code/modules/clothing/head/solgov.dm
@@ -0,0 +1,241 @@
+//SolGov uniform hats
+
+//Utility
+/obj/item/clothing/head/soft/sol
+ name = "\improper SolGov cap"
+ desc = "It's a blue ballcap in Solar Confederate Government colors."
+ icon_state = "solsoft"
+ item_state_slots = list(
+ slot_l_hand_str = "lightbluesoft",
+ slot_r_hand_str = "lightbluesoft",
+ )
+
+/obj/item/clothing/head/soft/sol/expedition
+ name = "\improper Expeditionary Corps cap"
+ desc = "It's a black ballcap bearing a Expeditonary Corps crest."
+ icon_state = "expeditionsoft"
+ item_state_slots = list(
+ slot_l_hand_str = "blacksoft",
+ slot_r_hand_str = "blacksoft",
+ )
+
+/obj/item/clothing/head/soft/sol/fleet
+ name = "fleet cap"
+ desc = "It's a navy blue ballcap with a SCG Fleet crest."
+ icon_state = "fleetsoft"
+ item_state_slots = list(
+ slot_l_hand_str = "darkbluesoft",
+ slot_r_hand_str = "darkbluesoft",
+ )
+
+/obj/item/clothing/head/utility
+ name = "utility cover"
+ desc = "An eight-point utility cover."
+ icon_state = "greyutility"
+ item_state_slots = list(
+ slot_l_hand_str = "helmet",
+ slot_r_hand_str = "helmet",
+ )
+ siemens_coefficient = 0.9
+ body_parts_covered = 0
+
+/obj/item/clothing/head/utility/fleet
+ name = "fleet utility cover"
+ desc = "A navy blue utility cover bearing the crest of a SCG Fleet."
+ icon_state = "navyutility"
+ armor = list(melee = 0, bullet = 0, laser = 0,energy = 10, bomb = 0, bio = 0, rad = 0)
+ siemens_coefficient = 0.7
+
+/obj/item/clothing/head/utility/marine
+ name = "marine utility cover"
+ desc = "A grey utility cover bearing the crest of the SCG Marine Corps."
+ icon_state = "greyutility"
+ armor = list(melee = 10, bullet = 0, laser = 10,energy = 0, bomb = 0, bio = 0, rad = 0)
+
+/obj/item/clothing/head/utility/marine/tan
+ name = "tan utility cover"
+ desc = "A tan utility cover bearing the crest of the SCG Marine Corps."
+ icon_state = "tanutility"
+
+/obj/item/clothing/head/utility/marine/green
+ name = "green utility cover"
+ desc = "A green utility cover bearing the crest of the SCG Marine Corps."
+ icon_state = "greenutility"
+
+//Service
+
+/obj/item/clothing/head/service
+ name = "service cover"
+ desc = "A service uniform cover."
+ icon_state = "greenwheelcap"
+ item_state_slots = list(
+ slot_l_hand_str = "helmet",
+ slot_r_hand_str = "helmet",
+ )
+ siemens_coefficient = 0.9
+ body_parts_covered = 0
+
+/obj/item/clothing/head/service/marine
+ name = "marine wheel cover"
+ desc = "A green service uniform cover with an SCG Marine Corps crest."
+ icon_state = "greenwheelcap"
+
+/obj/item/clothing/head/service/marine/command
+ name = "marine officer's wheel cover"
+ desc = "A green service uniform cover with an SCG Marine Corps crest and gold stripe."
+ icon_state = "greenwheelcap_com"
+
+/obj/item/clothing/head/service/marine/garrison
+ name = "marine garrison cap"
+ desc = "A green garrison cap belonging to the SCG Marine Corps."
+ icon_state = "greengarrisoncap"
+
+/obj/item/clothing/head/service/marine/garrison/command
+ name = "marine officer's garrison cap"
+ desc = "A green garrison cap belonging to the SCG Marine Corps. This one has a gold pin."
+ icon_state = "greengarrisoncap_com"
+
+/obj/item/clothing/head/service/marine/campaign
+ name = "campaign cover"
+ desc = "A green campaign cover with an SCG Marine Corps crest. Only found on the heads of Drill Instructors."
+ icon_state = "greendrill"
+
+//Dress
+
+/obj/item/clothing/head/dress
+ name = "dress cover"
+ desc = "A dress uniform cover."
+ icon_state = "greenwheelcap"
+ item_state_slots = list(
+ slot_l_hand_str = "helmet",
+ slot_r_hand_str = "helmet",
+ )
+ siemens_coefficient = 0.9
+ body_parts_covered = 0
+
+/obj/item/clothing/head/dress/expedition
+ name = "expedition dress cap"
+ desc = "A peaked grey dress uniform cap belonging to the SCG Expeditionary Corps."
+ icon_state = "greydresscap"
+
+/obj/item/clothing/head/dress/expedition/command
+ name = "expedition command dress cap"
+ desc = "A peaked grey dress uniform cap belonging to the SCG Expeditionary Corps. This one is trimmed in gold."
+ icon_state = "greydresscap_com"
+
+/obj/item/clothing/head/dress/fleet
+ name = "fleet dress wheel cover"
+ desc = "A white dress uniform cover. This one has an SCG Fleet crest."
+ icon_state = "whitepeakcap"
+
+/obj/item/clothing/head/dress/fleet/command
+ name = "fleet command dress wheel cover"
+ desc = "A white dress uniform cover. This one has a gold stripe and an SCG Fleet crest."
+ icon_state = "whitepeakcap_com"
+
+/obj/item/clothing/head/dress/marine
+ name = "marine dress wheel cover"
+ desc = "A white dress uniform cover with an SCG Marine Corps crest."
+ icon_state = "whitewheelcap"
+
+/obj/item/clothing/head/dress/marine/command
+ name = "marine officer's dress wheel cover"
+ desc = "A white dress uniform cover with an SCG Marine Corps crest and gold stripe."
+ icon_state = "whitewheelcap_com"
+
+//Berets
+
+/obj/item/clothing/head/beret/sol
+ name = "peacekeeper beret"
+ desc = "A beret in Solar Confederate Government colors. For peacekeepers that are more inclined towards style than safety."
+ icon_state = "beret_lightblue"
+
+/obj/item/clothing/head/beret/sol/homeguard
+ name = "home guard beret"
+ desc = "A red beret denoting service in the Sol Home Guard. For personnel that are more inclined towards style than safety."
+ icon_state = "beret_red"
+
+/obj/item/clothing/head/beret/sol/gateway
+ name = "gateway administration beret"
+ desc = "An orange beret denoting service in the Gateway Administration. For personnel that are more inclined towards style than safety."
+ icon_state = "beret_orange"
+
+/obj/item/clothing/head/beret/sol/customs
+ name = "customs and trade beret"
+ desc = "A purple beret denoting service in the Customs and Trade Bureau. For personnel that are more inclined towards style than safety."
+ icon_state = "beret_purpleyellow"
+
+/obj/item/clothing/head/beret/sol/orbital
+ name = "orbital assault beret"
+ desc = "A blue beret denoting orbital assault training. For helljumpers that are more inclined towards style than safety."
+ icon_state = "beret_blue"
+
+/obj/item/clothing/head/beret/sol/research
+ name = "government research beret"
+ desc = "A green beret denoting service in the Bureau of Research. For explorers that are more inclined towards style than safety."
+ icon_state = "beret_green"
+
+/obj/item/clothing/head/beret/sol/health
+ name = "health service beret"
+ desc = "A white beret denoting service in the Interstellar Health Service. For medics that are more inclined towards style than safety."
+ icon_state = "beret_white"
+
+/obj/item/clothing/head/beret/sol/expedition
+ name = "expeditionary beret"
+ desc = "A black beret belonging to the SCG Expeditionary Corps. For personnel that are more inclined towards style than safety."
+ icon_state = "beret_black"
+
+/obj/item/clothing/head/beret/sol/expedition/security
+ name = "expeditionary security beret"
+ desc = "An SCG Expeditionary Corps beret with a security crest. For personnel that are more inclined towards style than safety."
+ icon_state = "beret_black_security"
+
+/obj/item/clothing/head/beret/sol/expedition/medical
+ name = "expeditionary medical beret"
+ desc = "An SCG Expeditionary Corps beret with a medical crest. For personnel that are more inclined towards style than safety."
+ icon_state = "beret_black_medical"
+
+/obj/item/clothing/head/beret/sol/expedition/engineering
+ name = "expeditionary engineering beret"
+ desc = "An SCG Expeditionary Corps beret with an engineering crest. For personnel that are more inclined towards style than safety."
+ icon_state = "beret_black_engineering"
+
+/obj/item/clothing/head/beret/sol/expedition/supply
+ name = "expeditionary supply beret"
+ desc = "An SCG Expeditionary Corps beret with a supply crest. For personnel that are more inclined towards style than safety."
+ icon_state = "beret_black_supply"
+
+/obj/item/clothing/head/beret/sol/expedition/command
+ name = "expeditionary command beret"
+ desc = "An SCG Expeditionary Corps beret with a command crest. For personnel that are more inclined towards style than safety."
+ icon_state = "beret_black_command"
+
+/obj/item/clothing/head/beret/sol/fleet
+ name = "fleet beret"
+ desc = "A navy blue beret belonging to the SCG Fleet. For personnel that are more inclined towards style than safety."
+ icon_state = "beret_navy"
+
+/obj/item/clothing/head/beret/sol/fleet/security
+ name = "fleet security beret"
+ desc = "An SCG Fleet beret with a security crest. For personnel that are more inclined towards style than safety."
+ icon_state = "beret_navy_security"
+
+/obj/item/clothing/head/beret/sol/fleet/medical
+ name = "fleet medical beret"
+ desc = "An SCG Fleet beret with a medical crest. For personnel that are more inclined towards style than safety."
+ icon_state = "beret_navy_medical"
+
+/obj/item/clothing/head/beret/sol/fleet/engineering
+ name = "fleet engineering beret"
+ desc = "An SCG Fleet with an engineering crest. For personnel that are more inclined towards style than safety."
+ icon_state = "beret_navy_engineering"
+
+/obj/item/clothing/head/beret/sol/fleet/supply
+ name = "fleet supply beret"
+ desc = "An SCG Fleet beret with a supply crest. For personnel that are more inclined towards style than safety."
+ icon_state = "beret_navy_supply"
+
+/obj/item/clothing/head/beret/sol/fleet/command
+ name = "fleet command beret"
+ desc = "An SCG Fleet beret with a command crest. For personnel that are more inclined towards style than safety."
+ icon_state = "beret_navy_command"
diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm
index e675611390..0b9723d47b 100644
--- a/code/modules/clothing/masks/gasmask.dm
+++ b/code/modules/clothing/masks/gasmask.dm
@@ -27,6 +27,15 @@
return filtered
+/obj/item/clothing/mask/gas/half
+ name = "face mask"
+ desc = "A compact, durable gas mask that can be connected to an air supply."
+ icon_state = "halfgas"
+ siemens_coefficient = 0.7
+ body_parts_covered = FACE
+ w_class = ITEMSIZE_SMALL
+ armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 55, rad = 0)
+
//Plague Dr suit can be found in clothing/suits/bio.dm
/obj/item/clothing/mask/gas/plaguedoctor
name = "plague doctor mask"
@@ -79,6 +88,13 @@
icon_state = "sexymime"
item_state_slots = list(slot_r_hand_str = "mime", slot_l_hand_str = "mime")
+/obj/item/clothing/mask/gas/guy
+ name = "guy fawkes mask"
+ desc = "A mask stylised to depict Guy Fawkes."
+ icon_state = "guyfawkes"
+ flags_inv = HIDEEARS|HIDEFACE
+ item_state_slots = list(slot_r_hand_str = "mime", slot_l_hand_str = "mime")
+
/obj/item/clothing/mask/gas/death_commando
name = "Death Commando Mask"
icon_state = "death_commando_mask"
diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm
index 3e8c9de370..b078f56e52 100644
--- a/code/modules/clothing/masks/miscellaneous.dm
+++ b/code/modules/clothing/masks/miscellaneous.dm
@@ -173,62 +173,54 @@
/obj/item/clothing/mask/bandana
name = "black bandana"
- desc = "A fine black bandana with nanotech lining."
+ desc = "A fine black bandana with nanotech lining. Can be worn on the head or face."
w_class = ITEMSIZE_TINY
flags_inv = HIDEFACE
- slot_flags = SLOT_MASK
+ slot_flags = SLOT_MASK|SLOT_HEAD
+ body_parts_covered = FACE
icon_state = "bandblack"
item_state_slots = list(slot_r_hand_str = "bandblack", slot_l_hand_str = "bandblack")
- var/tied = 0
-/obj/item/clothing/mask/bandana/proc/adjust_bandana(mob/user)
- if(usr.canmove && !usr.stat)
- src.tied = !src.tied
- if (src.tied)
- flags_inv = flags_inv & ~HIDEFACE
- slot_flags = SLOT_HEAD
- icon_state = "[icon_state]_up"
- usr << "You tie the bandana so that it can be worn on the head."
- else
+/obj/item/clothing/mask/bandana/equipped(var/mob/user, var/slot)
+ switch(slot)
+ if(slot_wear_mask) //Mask is the default for all the settings
flags_inv = initial(flags_inv)
- slot_flags = initial(slot_flags)
+ body_parts_covered = initial(body_parts_covered)
icon_state = initial(icon_state)
- usr << "You tie the bandana so that it can be worn on the face."
-/obj/item/clothing/mask/bandana/verb/toggle()
- set category = "Object"
- set name = "Tie bandana"
- set src in usr
+ if(slot_head)
+ flags_inv = 0
+ body_parts_covered = HEAD
+ icon_state = "[initial(icon_state)]_up"
- adjust_bandana(usr)
- update_icon()
+ return ..()
/obj/item/clothing/mask/bandana/red
name = "red bandana"
- desc = "A fine red bandana with nanotech lining."
+ desc = "A fine red bandana with nanotech lining. Can be worn on the head or face."
icon_state = "bandred"
item_state_slots = list(slot_r_hand_str = "bandred", slot_l_hand_str = "bandred")
/obj/item/clothing/mask/bandana/blue
name = "blue bandana"
- desc = "A fine blue bandana with nanotech lining."
+ desc = "A fine blue bandana with nanotech lining. Can be worn on the head or face."
icon_state = "bandblue"
item_state_slots = list(slot_r_hand_str = "bandblue", slot_l_hand_str = "bandblue")
/obj/item/clothing/mask/bandana/green
name = "green bandana"
- desc = "A fine green bandana with nanotech lining."
+ desc = "A fine green bandana with nanotech lining. Can be worn on the head or face."
icon_state = "bandgreen"
item_state_slots = list(slot_r_hand_str = "bandgreen", slot_l_hand_str = "bandgreen")
/obj/item/clothing/mask/bandana/gold
name = "gold bandana"
- desc = "A fine gold bandana with nanotech lining."
+ desc = "A fine gold bandana with nanotech lining. Can be worn on the head or face."
icon_state = "bandgold"
item_state_slots = list(slot_r_hand_str = "bandgold", slot_l_hand_str = "bandgold")
/obj/item/clothing/mask/bandana/skull
name = "skull bandana"
- desc = "A fine black bandana with nanotech lining and a skull emblem."
+ desc = "A fine black bandana with nanotech lining and a skull emblem. Can be worn on the head or face."
icon_state = "bandskull"
- item_state_slots = list(slot_r_hand_str = "bandskull", slot_l_hand_str = "bandskull")
\ No newline at end of file
+ item_state_slots = list(slot_r_hand_str = "bandskull", slot_l_hand_str = "bandskull")
diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm
index 0f862f4c53..19eda1a1dd 100644
--- a/code/modules/clothing/shoes/magboots.dm
+++ b/code/modules/clothing/shoes/magboots.dm
@@ -6,6 +6,7 @@
species_restricted = null
force = 3
overshoes = 1
+ shoes_under_pants = -1 //These things are huge
var/magpulse = 0
var/icon_base = "magboots"
action_button_name = "Toggle Magboots"
diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm
index a8109493c7..4d1cfe6088 100644
--- a/code/modules/clothing/shoes/miscellaneous.dm
+++ b/code/modules/clothing/shoes/miscellaneous.dm
@@ -9,6 +9,11 @@
siemens_coefficient = 0.8
species_restricted = null
+/obj/item/clothing/shoes/cowboy
+ name = "cowboy boots"
+ desc = "Lacking a durasteel horse to ride."
+ icon_state = "cowboy"
+
/obj/item/clothing/shoes/mime
name = "mime shoes"
icon_state = "white"
@@ -106,6 +111,39 @@
heat_protection = FEET
max_heat_protection_temperature = SHOE_MAX_HEAT_PROTECTION_TEMPERATURE
+/obj/item/clothing/shoes/jungleboots
+ name = "jungle boots"
+ desc = "A pair of durable brown boots. Waterproofed for use planetside."
+ icon_state = "jungle"
+ force = 3
+ armor = list(melee = 30, bullet = 10, laser = 10, energy = 15, bomb = 20, bio = 10, rad = 0)
+ siemens_coefficient = 0.7
+
+/obj/item/clothing/shoes/dutyboots
+ name = "duty boots"
+ desc = "A pair of steel-toed synthleather boots with a mirror shine."
+ icon_state = "duty"
+ armor = list(melee = 40, bullet = 0, laser = 0, energy = 15, bomb = 20, bio = 0, rad = 20)
+ siemens_coefficient = 0.7
+
+/obj/item/clothing/shoes/tactical
+ name = "tactical boots"
+ desc = "Tan boots with extra padding and armor."
+ icon_state = "jungle"
+ force = 3
+ armor = list(melee = 40, bullet = 30, laser = 40,energy = 25, bomb = 50, bio = 0, rad = 0)
+ siemens_coefficient = 0.7
+
+/obj/item/clothing/shoes/dress
+ name = "dress shoes"
+ desc = "Sharp looking low quarters, perfect for a formal uniform."
+ icon_state = "laceups"
+
+/obj/item/clothing/shoes/dress/white
+ name = "white dress shoes"
+ desc = "Brilliantly white low quarters, not a spot on them."
+ icon_state = "whitedress"
+
/obj/item/clothing/shoes/sandal
desc = "A pair of rather plain, wooden sandals."
name = "sandals"
diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm
index c3c30ae381..f4b7101b82 100644
--- a/code/modules/clothing/spacesuits/miscellaneous.dm
+++ b/code/modules/clothing/spacesuits/miscellaneous.dm
@@ -76,7 +76,7 @@
body_parts_covered = 0
siemens_coefficient = 0.9
-/obj/item/clothing/suit/space/pirate
+/obj/item/clothing/suit/space/pirate //Whhhhyyyyyyy???
name = "pirate coat"
desc = "Yarr."
icon_state = "pirate"
@@ -85,6 +85,7 @@
slowdown = 0
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
siemens_coefficient = 0.9
+ flags_inv = HIDETAIL|HIDEHOLSTER
body_parts_covered = UPPER_TORSO|ARMS
//Orange emergency space suit
diff --git a/code/modules/clothing/spacesuits/rig/modules/utility.dm b/code/modules/clothing/spacesuits/rig/modules/utility.dm
index 679a822aec..bcd8163853 100644
--- a/code/modules/clothing/spacesuits/rig/modules/utility.dm
+++ b/code/modules/clothing/spacesuits/rig/modules/utility.dm
@@ -594,3 +594,47 @@
device = iastamp
holder.wearer << "Switched to internal affairs stamp."
return 1
+
+/obj/item/rig_module/sprinter
+ name = "sprint module"
+ desc = "A robust hardsuit-integrated sprint module."
+ icon_state = "sprinter"
+
+ var/sprint_speed = 1
+
+ toggleable = 1
+ disruptable = 1
+ disruptive = 0
+
+ use_power_cost = 50
+ active_power_cost = 5
+ passive_power_cost = 0
+ module_cooldown = 30
+
+ activate_string = "Enable Sprint"
+ deactivate_string = "Disable Sprint"
+
+ interface_name = "sprint system"
+ interface_desc = "Increases power to the suit's actuators, allowing faster movement."
+
+/obj/item/rig_module/sprinter/activate()
+
+ if(!..())
+ return 0
+
+ var/mob/living/carbon/human/H = holder.wearer
+
+ H << "You activate the suit's sprint mode."
+
+ holder.slowdown = initial(holder.slowdown) - sprint_speed
+
+/obj/item/rig_module/sprinter/deactivate()
+
+ if(!..())
+ return 0
+
+ var/mob/living/carbon/human/H = holder.wearer
+
+ H << "Your hardsuit returns to normal speed."
+
+ holder.slowdown = initial(holder.slowdown)
\ No newline at end of file
diff --git a/code/modules/clothing/spacesuits/rig/suits/station.dm b/code/modules/clothing/spacesuits/rig/suits/station.dm
index 858767f390..b0c8838532 100644
--- a/code/modules/clothing/spacesuits/rig/suits/station.dm
+++ b/code/modules/clothing/spacesuits/rig/suits/station.dm
@@ -94,12 +94,17 @@
offline_vision_restriction = 1
helm_type = /obj/item/clothing/head/helmet/space/rig/eva
+ glove_type = /obj/item/clothing/gloves/gauntlets/rig/eva
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/toolbox,/obj/item/weapon/storage/briefcase/inflatable,/obj/item/device/t_scanner,/obj/item/weapon/rcd)
req_access = list()
req_one_access = list()
+/obj/item/clothing/gloves/gauntlets/rig/eva
+ name = "insulated gauntlets"
+ siemens_coefficient = 0
+
/obj/item/weapon/rig/eva/equipped
req_access = list(access_engine)
diff --git a/code/modules/clothing/spacesuits/spacesuits.dm b/code/modules/clothing/spacesuits/spacesuits.dm
index b66ff5334a..e931cb14a4 100644
--- a/code/modules/clothing/spacesuits/spacesuits.dm
+++ b/code/modules/clothing/spacesuits/spacesuits.dm
@@ -54,7 +54,7 @@
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/device/suit_cooling_unit)
slowdown = 3
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50)
- flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL
+ flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
siemens_coefficient = 0.9
diff --git a/code/modules/clothing/spacesuits/void/station.dm b/code/modules/clothing/spacesuits/void/station.dm
index cb81728f1a..31830fb275 100644
--- a/code/modules/clothing/spacesuits/void/station.dm
+++ b/code/modules/clothing/spacesuits/void/station.dm
@@ -7,16 +7,6 @@
item_state_slots = list(slot_r_hand_str = "eng_helm", slot_l_hand_str = "eng_helm")
armor = list(melee = 40, bullet = 5, laser = 20, energy = 5, bomb = 35, bio = 100, rad = 80)
-/obj/item/clothing/head/helmet/space/void/engineering/hazmat
- name = "HAZMAT voidsuit helmet"
- icon_state = "rig0-engineering_rad"
- item_state_slots = list(slot_r_hand_str = "eng_helm_rad", slot_l_hand_str = "eng_helm_rad")
-
-/obj/item/clothing/head/helmet/space/void/engineering/construction
- name = "construction voidsuit helmet"
- icon_state = "rig0-engineering_con"
- item_state_slots = list(slot_r_hand_str = "eng_helm_con", slot_l_hand_str = "eng_helm_con")
-
/obj/item/clothing/suit/space/void/engineering
name = "engineering voidsuit"
desc = "A special suit that protects against hazardous, low pressure environments. Has radiation shielding."
@@ -26,16 +16,66 @@
armor = list(melee = 40, bullet = 5, laser = 20, energy = 5, bomb = 35, bio = 100, rad = 80)
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/weapon/rcd)
+//Engineering HAZMAT Voidsuit
+
+/obj/item/clothing/head/helmet/space/void/engineering/hazmat
+ name = "HAZMAT voidsuit helmet"
+ desc = "A engineering helmet designed for work in a low-pressure environment. Extra radiation shielding appears to have been installed at the price of comfort."
+ icon_state = "rig0-engineering_rad"
+ item_state_slots = list(slot_r_hand_str = "eng_helm_rad", slot_l_hand_str = "eng_helm_rad")
+ armor = list(melee = 30, bullet = 5, laser = 20, energy = 5, bomb = 50, bio = 100, rad = 100)
+
/obj/item/clothing/suit/space/void/engineering/hazmat
name = "HAZMAT voidsuit"
+ desc = "A engineering voidsuit that protects against hazardous, low pressure environments. Has enhanced radiation shielding compared to regular engineering voidsuits."
icon_state = "rig-engineering_rad"
item_state_slots = list(slot_r_hand_str = "eng_voidsuit_rad", slot_l_hand_str = "eng_voidsuit_rad")
+ armor = list(melee = 30, bullet = 5, laser = 20, energy = 5, bomb = 50, bio = 100, rad = 100)
+
+//Engineering Construction Voidsuit
+
+/obj/item/clothing/head/helmet/space/void/engineering/construction
+ name = "construction voidsuit helmet"
+ icon_state = "rig0-engineering_con"
+ item_state_slots = list(slot_r_hand_str = "eng_helm_con", slot_l_hand_str = "eng_helm_con")
/obj/item/clothing/suit/space/void/engineering/construction
name = "contstruction voidsuit"
icon_state = "rig-engineering_con"
item_state_slots = list(slot_r_hand_str = "eng_voidsuit_con", slot_l_hand_str = "eng_voidsuit_con")
+//Engineering Surplus Voidsuits
+
+/obj/item/clothing/head/helmet/space/void/engineering/alt
+ name = "reinforced engineering voidsuit helmet"
+ desc = "A heavy, radiation-shielded voidsuit helmet with a surprisingly comfortable interior."
+ icon_state = "rig0-engineeringalt"
+ armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 45, bio = 100, rad = 100)
+ light_overlay = "helmet_light_dual"
+
+/obj/item/clothing/suit/space/void/engineering/alt
+ name = "reinforced engineering voidsuit"
+ desc = "A bulky industrial voidsuit. It's a few generations old, but a reliable design and radiation shielding make up for the lack of climate control."
+ icon_state = "rig-engineeringalt"
+ armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 45, bio = 100, rad = 100)
+
+/obj/item/clothing/head/helmet/space/void/engineering/salvage
+ name = "salvage voidsuit helmet"
+ desc = "A heavily modified salvage voidsuit helmet. It has been fitted with radiation-resistant plating."
+ icon_state = "rig0-salvage"
+ item_state_slots = list(
+ slot_l_hand_str = "eng_helm",
+ slot_r_hand_str = "eng_helm",
+ )
+ armor = list(melee = 50, bullet = 10, laser = 30,energy = 15, bomb = 35, bio = 100, rad = 80)
+
+/obj/item/clothing/suit/space/void/engineering/salvage
+ name = "salvage voidsuit"
+ desc = "A hand-me-down salvage voidsuit. It has obviously had a lot of repair work done to its radiation shielding."
+ icon_state = "rig-engineeringsav"
+ armor = list(melee = 50, bullet = 10, laser = 30,energy = 15, bomb = 35, bio = 100, rad = 80)
+ allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/toolbox,/obj/item/weapon/storage/briefcase/inflatable,/obj/item/device/t_scanner,/obj/item/weapon/rcd)
+
//Mining
/obj/item/clothing/head/helmet/space/void/mining
name = "mining voidsuit helmet"
@@ -52,6 +92,20 @@
item_state_slots = list(slot_r_hand_str = "mining_voidsuit", slot_l_hand_str = "mining_voidsuit")
armor = list(melee = 50, bullet = 5, laser = 20, energy = 5, bomb = 55, bio = 100, rad = 20)
+//Mining Surplus Voidsuit
+
+/obj/item/clothing/head/helmet/space/void/mining/alt
+ name = "frontier mining voidsuit helmet"
+ desc = "An armored cheap voidsuit helmet. Someone must have through they were pretty cool when they painted a mohawk on it."
+ icon_state = "rig0-miningalt"
+ armor = list(melee = 50, bullet = 15, laser = 20,energy = 5, bomb = 55, bio = 100, rad = 0)
+
+/obj/item/clothing/suit/space/void/mining/alt
+ icon_state = "rig-miningalt"
+ name = "frontier mining voidsuit"
+ desc = "A cheap prospecting voidsuit. What it lacks in comfort it makes up for in armor plating and street cred."
+ armor = list(melee = 50, bullet = 15, laser = 20,energy = 5, bomb = 55, bio = 100, rad = 0)
+
//Medical
/obj/item/clothing/head/helmet/space/void/medical
name = "medical voidsuit helmet"
@@ -60,16 +114,6 @@
item_state_slots = list(slot_r_hand_str = "medical_helm", slot_l_hand_str = "medical_helm")
armor = list(melee = 30, bullet = 5, laser = 20, energy = 5, bomb = 25, bio = 100, rad = 50)
-/obj/item/clothing/head/helmet/space/void/medical/emt
- name = "emergency medical response voidsuit helmet"
- icon_state = "rig0-medical_emt"
- item_state_slots = list(slot_r_hand_str = "medical_helm_emt", slot_l_hand_str = "medical_helm_emt")
-
-/obj/item/clothing/head/helmet/space/void/medical/bio
- name = "biohazard voidsuit helmet"
- icon_state = "rig0-medical_bio"
- item_state_slots = list(slot_r_hand_str = "medical_helm_bio", slot_l_hand_str = "medical_helm_bio")
-
/obj/item/clothing/suit/space/void/medical
name = "medical voidsuit"
desc = "A special suit that protects against hazardous, low pressure environments. Has minor radiation shielding."
@@ -78,15 +122,48 @@
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical)
armor = list(melee = 30, bullet = 5, laser = 20, energy = 5, bomb = 25, bio = 100, rad = 50)
+//Medical EMT Voidsuit
+
+/obj/item/clothing/head/helmet/space/void/medical/emt
+ name = "emergency medical response voidsuit helmet"
+ icon_state = "rig0-medical_emt"
+ item_state_slots = list(slot_r_hand_str = "medical_helm_emt", slot_l_hand_str = "medical_helm_emt")
+
/obj/item/clothing/suit/space/void/medical/emt
name = "emergency medical response voidsuit"
icon_state = "rig-medical_emt"
item_state_slots = list(slot_r_hand_str = "medical_voidsuit_emt", slot_l_hand_str = "medical_voidsuit_emt")
+//Medical Biohazard Voidsuit
+
+/obj/item/clothing/head/helmet/space/void/medical/bio
+ name = "biohazard voidsuit helmet"
+ desc = "A special helmet that protects against hazardous environments. Has minor radiation shielding."
+ icon_state = "rig0-medical_bio"
+ item_state_slots = list(slot_r_hand_str = "medical_helm_bio", slot_l_hand_str = "medical_helm_bio")
+ armor = list(melee = 45, bullet = 5, laser = 20, energy = 5, bomb = 15, bio = 100, rad = 75)
+
/obj/item/clothing/suit/space/void/medical/bio
name = "biohazard voidsuit"
+ desc = "A special suit that protects against hazardous, environments. It feels heavier than the standard suit with extra protection around the joints."
icon_state = "rig-medical_bio"
item_state_slots = list(slot_r_hand_str = "medical_voidsuit_bio", slot_l_hand_str = "medical_voidsuit_bio")
+ armor = list(melee = 45, bullet = 5, laser = 20, energy = 5, bomb = 15, bio = 100, rad = 75)
+
+//Medical Surplus Voidsuit
+/obj/item/clothing/head/helmet/space/void/medical/alt
+ name = "streamlined medical voidsuit helmet"
+ desc = "A trendy, lightly radiation-shielded voidsuit helmet trimmed in a fetching green."
+ icon_state = "rig0-medicalalt"
+ armor = list(melee = 30, bullet = 5, laser = 10,energy = 5, bomb = 5, bio = 100, rad = 60)
+ light_overlay = "helmet_light_dual_green"
+
+/obj/item/clothing/suit/space/void/medical/alt
+ icon_state = "rig-medicalalt"
+ name = "streamlined medical voidsuit"
+ desc = "A more recent model of Vey-Med voidsuit, featuring the latest in radiation shielding technology, without sacrificing comfort or style."
+ allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical)
+ armor = list(melee = 30, bullet = 5, laser = 10,energy = 5, bomb = 5, bio = 100, rad = 60)
//Security
/obj/item/clothing/head/helmet/space/void/security
@@ -107,6 +184,8 @@
allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/melee/baton)
siemens_coefficient = 0.7
+//Security Crowd Control Voidsuit
+
/obj/item/clothing/head/helmet/space/void/security/riot
name = "crowd control voidsuit helmet"
icon_state = "rig0-sec_riot"
@@ -117,6 +196,20 @@
icon_state = "rig-sec_riot"
item_state_slots = list(slot_r_hand_str = "sec_voidsuit_riot", slot_l_hand_str = "sec_voidsuit_riot")
+//Security Surplus Voidsuit
+/obj/item/clothing/head/helmet/space/void/security/alt
+ name = "riot security voidsuit helmet"
+ desc = "A somewhat tacky voidsuit helmet, a fact mitigated by heavy armor plating."
+ icon_state = "rig0-secalt"
+ armor = list(melee = 70, bullet = 20, laser = 30, energy = 5, bomb = 35, bio = 100, rad = 10)
+
+/obj/item/clothing/suit/space/void/security/alt
+ icon_state = "rig-secalt"
+ name = "riot security voidsuit"
+ desc = "A heavily armored voidsuit, designed to intimidate people who find black intimidating. Surprisingly slimming."
+ armor = list(melee = 70, bullet = 20, laser = 30, energy = 5, bomb = 35, bio = 100, rad = 10)
+ allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/melee/baton)
+
//Atmospherics
/obj/item/clothing/head/helmet/space/void/atmos
desc = "A special helmet designed for work in a hazardous, low pressure environments. Has improved thermal protection and minor radiation shielding."
@@ -133,4 +226,21 @@
icon_state = "rig-atmos"
item_state_slots = list(slot_r_hand_str = "atmos_voidsuit", slot_l_hand_str = "atmos_voidsuit")
armor = list(melee = 40, bullet = 5, laser = 20, energy = 5, bomb = 35, bio = 100, rad = 50)
+ max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE
+
+//Atmospherics Surplus Voidsuit
+
+/obj/item/clothing/head/helmet/space/void/atmos/alt
+ desc = "A special voidsuit helmet designed for work in hazardous, low pressure environments.This one has been plated with an expensive heat and radiation resistant ceramic."
+ name = "heavy duty atmospherics voidsuit helmet"
+ icon_state = "rig0-atmosalt"
+ armor = list(melee = 20, bullet = 5, laser = 20,energy = 15, bomb = 45, bio = 100, rad = 50)
+ max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
+ light_overlay = "hardhat_light"
+
+/obj/item/clothing/suit/space/void/atmos/alt
+ desc = "A special suit that protects against hazardous, low pressure environments. Fits better than the standard atmospheric voidsuit while still rated to withstand extreme heat and even minor radiation."
+ icon_state = "rig-atmosalt"
+ name = "heavy duty atmos voidsuit"
+ armor = list(melee = 20, bullet = 5, laser = 20,energy = 15, bomb = 45, bio = 100, rad = 50)
max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE
\ No newline at end of file
diff --git a/code/modules/clothing/suits/alien.dm b/code/modules/clothing/suits/alien.dm
index 896b5eed29..ff8255f188 100644
--- a/code/modules/clothing/suits/alien.dm
+++ b/code/modules/clothing/suits/alien.dm
@@ -4,6 +4,7 @@
desc = "A traditional Unathi garment."
icon_state = "robe-unathi"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS
+ flags_inv = HIDETIE|HIDEHOLSTER
/obj/item/clothing/suit/unathi/mantle
name = "hide mantle"
@@ -17,6 +18,7 @@
desc = "A traditional Zhan-Khazan garment."
icon_state = "zhan_furs"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS
+ flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
/obj/item/clothing/head/tajaran/scarf
name = "headscarf"
diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm
index 211d6e6e75..32962252bf 100644
--- a/code/modules/clothing/suits/armor.dm
+++ b/code/modules/clothing/suits/armor.dm
@@ -1,5 +1,5 @@
/obj/item/clothing/suit/armor
- allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/device/flashlight/maglight)
+ allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/device/flashlight/maglight,/obj/item/clothing/head/helmet)
body_parts_covered = UPPER_TORSO|LOWER_TORSO
item_flags = THICKMATERIAL
@@ -58,6 +58,7 @@
icon_state = "bulletproof"
item_state_slots = list(slot_r_hand_str = "armor", slot_l_hand_str = "armor")
blood_overlay_type = "armor"
+ slowdown = 0.5
armor = list(melee = 10, bullet = 80, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
siemens_coefficient = 0.7
@@ -71,6 +72,7 @@
desc = "A vest that excels in protecting the wearer against energy projectiles."
icon_state = "armor_reflec"
blood_overlay_type = "armor"
+ slowdown = 0.5
armor = list(melee = 10, bullet = 10, laser = 80, energy = 50, bomb = 0, bio = 0, rad = 0)
siemens_coefficient = 0.1
@@ -100,6 +102,7 @@
desc = "A vest that protects the wearer from several common types of weaponry."
icon_state = "combat"
blood_overlay_type = "armor"
+ slowdown = 0.5
armor = list(melee = 50, bullet = 50, laser = 50, energy = 30, bomb = 30, bio = 0, rad = 0)
siemens_coefficient = 0.6
@@ -109,6 +112,7 @@
icon_state = "swatarmor"
item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat")
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
+ flags_inv = HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
slowdown = 1
armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 40, bio = 0, rad = 0)
siemens_coefficient = 0.7
@@ -122,11 +126,11 @@
permeability_coefficient = 0.01
item_flags = STOPPRESSUREDAMAGE | THICKMATERIAL
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS
- allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen)
+ allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen,/obj/item/clothing/head/helmet)
slowdown = 1
w_class = ITEMSIZE_HUGE
armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 100, rad = 100)
- flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
+ flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
siemens_coefficient = 0.6
@@ -242,7 +246,7 @@
icon_state = "kvest"
item_state_slots = list(slot_r_hand_str = "armor", slot_l_hand_str = "armor")
armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 10, bio = 0, rad = 0)
- allowed = list(/obj/item/weapon/gun,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/device/flashlight/maglight)
+ allowed = list(/obj/item/weapon/gun,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/device/flashlight/maglight,/obj/item/clothing/head/helmet)
body_parts_covered = UPPER_TORSO|LOWER_TORSO
item_flags = THICKMATERIAL
@@ -274,6 +278,7 @@
desc = "An armoured jacket with silver rank pips and livery."
icon_state = "warden_jacket"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
+ flags_inv = HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
/obj/item/clothing/suit/storage/vest/wardencoat/alt
name = "Warden's jacket"
@@ -294,14 +299,14 @@
desc = "A greatcoat enhanced with a special alloy for some protection and style."
icon_state = "hos"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
- flags_inv = HIDEJUMPSUIT
+ flags_inv = HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
//Jensen cosplay gear
/obj/item/clothing/suit/storage/vest/hoscoat/jensen
name = "armored trenchcoat"
desc = "A trenchcoat augmented with a special alloy for some protection and style."
icon_state = "hostrench"
- flags_inv = 0
+ flags_inv = HIDEHOLSTER
/obj/item/clothing/suit/storage/vest/pcrc
name = "PCRC armor vest"
@@ -311,6 +316,34 @@
icon_badge = "pcrcvest_badge"
icon_nobadge = "pcrcvest_nobadge"
+/obj/item/clothing/suit/storage/vest/solgov
+ name = "\improper Solar Confederate Government armored vest"
+ desc = "A synthetic armor vest. This one is marked with the crest of the Solar Confederate Government."
+ icon_state = "solvest"
+ armor = list(melee = 40, bullet = 40, laser = 40, energy = 25, bomb = 30, bio = 0, rad = 0)
+
+/obj/item/clothing/suit/storage/vest/solgov/heavy
+ name = "\improper Solar Confederate Government heavy armored vest"
+ desc = "A synthetic armor vest with PEACEKEEPER printed in distinctive blue lettering on the chest. This one has added webbing and ballistic plates."
+ icon_state = "solwebvest"
+
+/obj/item/clothing/suit/storage/vest/solgov/security
+ name = "master at arms heavy armored vest"
+ desc = "A synthetic armor vest with MASTER AT ARMS printed in silver lettering on the chest. This one has added webbing and ballistic plates."
+ icon_state = "secwebvest"
+
+/obj/item/clothing/suit/storage/vest/solgov/command
+ name = "command heavy armored vest"
+ desc = "A synthetic armor vest with Solar Confederate Government printed in detailed gold lettering on the chest. This one has added webbing and ballistic plates."
+ icon_state = "comwebvest"
+
+/obj/item/clothing/suit/storage/vest/tactical //crack at a more balanced mid-range armor, minor improvements over standard vests, with the idea "modern" combat armor would focus on energy weapon protection.
+ name = "tactical armored vest"
+ desc = "A heavy armored vest in a fetching tan. It is surprisingly flexible and light, even with the extra webbing and advanced ceramic plates."
+ icon_state = "tacwebvest"
+ item_state = "tacwebvest"
+ armor = list(melee = 40, bullet = 40, laser = 60, energy = 35, bomb = 30, bio = 0, rad = 0)
+
/obj/item/clothing/suit/storage/vest/detective
name = "detective armor vest"
desc = "A simple kevlar plate carrier in a vintage brown, it has a badge clipped to the chest that reads, 'Private investigator'."
@@ -324,7 +357,7 @@
icon_state = "pvest"
desc = "A simple kevlar plate carrier. This one has the word 'Press' embroidered on patches on the back and front."
item_state_slots = list(slot_r_hand_str = "armor", slot_l_hand_str = "armor")
- allowed = list(/obj/item/device/flashlight,/obj/item/device/taperecorder,/obj/item/weapon/pen,/obj/item/device/camera_film,/obj/item/device/camera)
+ allowed = list(/obj/item/device/flashlight,/obj/item/device/taperecorder,/obj/item/weapon/pen,/obj/item/device/camera_film,/obj/item/device/camera,/obj/item/clothing/head/helmet)
/obj/item/clothing/suit/storage/vest/heavy
name = "heavy armor vest"
@@ -332,7 +365,7 @@
icon_state = "webvest"
item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat")
armor = list(melee = 50, bullet = 40, laser = 40, energy = 25, bomb = 25, bio = 0, rad = 0)
- slowdown = 1
+ slowdown = 0.5
/obj/item/clothing/suit/storage/vest/heavy/officer
name = "officer heavy armor vest"
@@ -384,8 +417,8 @@
item_state_slots = list(slot_r_hand_str = "armor", slot_l_hand_str = "armor")
w_class = ITEMSIZE_LARGE//bulky item
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
- allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen)
- flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
+ allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen,/obj/item/clothing/head/helmet)
+ flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
siemens_coefficient = 0
@@ -400,7 +433,7 @@
gas_transfer_coefficient = 0.90
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
slowdown = 5 // If you're a tank you're gonna move like a tank.
- flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
+ flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
siemens_coefficient = 0
/obj/item/clothing/suit/armor/tdome
diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm
index 51b05d1526..d2dcbc9a02 100644
--- a/code/modules/clothing/suits/bio.dm
+++ b/code/modules/clothing/suits/bio.dm
@@ -20,7 +20,7 @@
slowdown = 1.0
allowed = list(/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/pen,/obj/item/device/flashlight/pen)
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20)
- flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL
+ flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
siemens_coefficient = 0.9
//Standard biosuit, orange stripe
@@ -33,7 +33,7 @@
icon_state = "bio_general"
item_state_slots = list(slot_r_hand_str = "bio", slot_l_hand_str = "bio")
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
- flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL
+ flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
//Virology biosuit, green stripe
/obj/item/clothing/head/bio_hood/virology
@@ -42,7 +42,7 @@
/obj/item/clothing/suit/bio_suit/virology
icon_state = "bio_virology"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
- flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL
+ flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
//Security biosuit, grey with red stripe across the chest
/obj/item/clothing/head/bio_hood/security
@@ -51,7 +51,7 @@
/obj/item/clothing/suit/bio_suit/security
icon_state = "bio_security"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
- flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL
+ flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
//Janitor's biosuit, grey with purple arms
/obj/item/clothing/head/bio_hood/janitor
@@ -60,7 +60,7 @@
/obj/item/clothing/suit/bio_suit/janitor
icon_state = "bio_janitor"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
- flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL
+ flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
//Scientist's biosuit, white with a pink-ish hue
/obj/item/clothing/head/bio_hood/scientist
@@ -69,13 +69,13 @@
/obj/item/clothing/suit/bio_suit/scientist
icon_state = "bio_scientist"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
- flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL
+ flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
//CMO's biosuit, blue stripe
/obj/item/clothing/suit/bio_suit/cmo
icon_state = "bio_cmo"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
- flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL
+ flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
/obj/item/clothing/head/bio_hood/cmo
icon_state = "bio_cmo"
@@ -86,4 +86,4 @@
desc = "It protected doctors from the Black Death, back then. You bet your arse it's gonna help you against viruses."
icon_state = "plaguedoctor"
item_state_slots = list(slot_r_hand_str = "bio", slot_l_hand_str = "bio")
- flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL
+ flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm
index 5029e4c8de..2f93ed3bb8 100644
--- a/code/modules/clothing/suits/jobs.dm
+++ b/code/modules/clothing/suits/jobs.dm
@@ -19,14 +19,14 @@
desc = "Worn by a Colony Director to show their class."
icon_state = "captunic"
body_parts_covered = UPPER_TORSO|ARMS
- flags_inv = HIDEJUMPSUIT
+ flags_inv = HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
/obj/item/clothing/suit/captunic/capjacket
name = "colony director's uniform jacket"
desc = "A less formal jacket for everyday Colony Director use."
icon_state = "capjacket"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
- flags_inv = HIDEJUMPSUIT
+ flags_inv = HIDEHOLSTER
//Chaplain
/obj/item/clothing/suit/chaplain_hoodie
@@ -35,6 +35,7 @@
icon_state = "chaplain_hoodie"
item_state_slots = list(slot_r_hand_str = "suit_black", slot_l_hand_str = "suit_black")
body_parts_covered = UPPER_TORSO|ARMS
+ flags_inv = HIDEHOLSTER
allowed = list (/obj/item/weapon/storage/bible)
//Chaplain
@@ -43,7 +44,7 @@
desc = "Maximum piety in this star system."
icon_state = "nun"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
- flags_inv = HIDESHOES|HIDEJUMPSUIT
+ flags_inv = HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
//Chef
/obj/item/clothing/suit/chef
@@ -53,6 +54,7 @@
gas_transfer_coefficient = 0.90
permeability_coefficient = 0.50
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
+ flags_inv = HIDETIE|HIDEHOLSTER
allowed = list (/obj/item/weapon/material/knife)
//Chef
@@ -62,6 +64,7 @@
icon_state = "apronchef"
blood_overlay_type = "armor"
body_parts_covered = 0
+ flags_inv = 0
//Security
/obj/item/clothing/suit/security/navyofficer
@@ -70,6 +73,7 @@
icon_state = "officerbluejacket"
item_state_slots = list(slot_r_hand_str = "suit_navy", slot_l_hand_str = "suit_navy")
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
+ flags_inv = HIDEHOLSTER
/obj/item/clothing/suit/security/navywarden
name = "warden's jacket"
@@ -77,6 +81,7 @@
icon_state = "wardenbluejacket"
item_state_slots = list(slot_r_hand_str = "suit_navy", slot_l_hand_str = "suit_navy")
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
+ flags_inv = HIDEHOLSTER
/obj/item/clothing/suit/security/navyhos
name = "head of security's jacket"
@@ -84,6 +89,7 @@
icon_state = "hosbluejacket"
item_state_slots = list(slot_r_hand_str = "suit_navy", slot_l_hand_str = "suit_navy")
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
+ flags_inv = HIDEHOLSTER
//Detective
/obj/item/clothing/suit/storage/det_trench
@@ -92,6 +98,7 @@
icon_state = "detective"
blood_overlay_type = "coat"
body_parts_covered = UPPER_TORSO|ARMS
+ flags_inv = HIDEHOLSTER
allowed = list(/obj/item/weapon/tank/emergency_oxygen, /obj/item/device/flashlight, /obj/item/weapon/gun/energy, /obj/item/weapon/gun/projectile, /obj/item/ammo_magazine,
/obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/handcuffs, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/flame/lighter,
/obj/item/device/taperecorder, /obj/item/device/uv_light)
@@ -101,12 +108,14 @@
name = "grey trenchcoat"
icon_state = "detective2"
item_state_slots = list(slot_r_hand_str = "leather_jacket", slot_l_hand_str = "leather_jacket")
+ flags_inv = HIDEHOLSTER
//Forensics
/obj/item/clothing/suit/storage/forensics
name = "jacket"
desc = "A forensics technician jacket."
body_parts_covered = UPPER_TORSO|ARMS
+ flags_inv = HIDEHOLSTER
allowed = list(/obj/item/weapon/tank/emergency_oxygen, /obj/item/device/flashlight, /obj/item/weapon/gun/energy, /obj/item/weapon/gun/projectile, /obj/item/ammo_magazine,
/obj/item/ammo_casing, /obj/item/weapon/melee/baton, /obj/item/weapon/handcuffs, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/flame/lighter,
/obj/item/device/taperecorder, /obj/item/device/uv_light)
@@ -145,6 +154,21 @@
/obj/item/clothing/mask/gas, /obj/item/taperoll/engineering)
body_parts_covered = UPPER_TORSO
+/obj/item/clothing/suit/storage/hazardvest/blue
+ name = "blue hazard vest"
+ desc = "A high-visibility vest used in work zones. This one is blue!"
+ icon_state = "hazard_b"
+
+/obj/item/clothing/suit/storage/hazardvest/green
+ name = "green hazard vest"
+ desc = "A high-visibility vest used by emergency responders. This one is green!"
+ icon_state = "hazard_g"
+
+/obj/item/clothing/suit/storage/hazardvest/white
+ name = "white hazard vest"
+ desc = "A high-visibility vest used in work zones. This one has a red cross!"
+ icon_state = "hazard_w"
+
//Lawyer
/obj/item/clothing/suit/storage/toggle/lawyer/bluejacket
name = "blue suit jacket"
@@ -198,6 +222,16 @@
icon_open = "ems_jacket_open"
icon_closed = "ems_jacket_closed"
+/obj/item/clothing/suit/surgicalapron
+ name = "surgical apron"
+ desc = "A sterile blue apron for performing surgery."
+ icon_state = "surgical"
+ blood_overlay_type = "armor"
+ body_parts_covered = UPPER_TORSO|LOWER_TORSO
+ allowed = list(/obj/item/stack/medical, /obj/item/weapon/reagent_containers/dropper, /obj/item/weapon/reagent_containers/hypospray, /obj/item/weapon/reagent_containers/syringe, \
+ /obj/item/device/healthanalyzer, /obj/item/device/flashlight, /obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/scalpel,/obj/item/weapon/retractor,/obj/item/weapon/hemostat, \
+ /obj/item/weapon/cautery,/obj/item/weapon/bonegel,/obj/item/weapon/FixOVein)
+
//Mime
/obj/item/clothing/suit/suspenders
name = "suspenders"
diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm
index 2035a86d41..e20b2d9515 100644
--- a/code/modules/clothing/suits/labcoat.dm
+++ b/code/modules/clothing/suits/labcoat.dm
@@ -7,6 +7,7 @@
icon_closed = "labcoat"
blood_overlay_type = "coat"
body_parts_covered = UPPER_TORSO|ARMS
+ flags_inv = HIDEHOLSTER
allowed = list(/obj/item/device/analyzer,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle,/obj/item/weapon/paper)
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0)
diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm
index dbb43e1ad5..5f7c9e3875 100644
--- a/code/modules/clothing/suits/miscellaneous.dm
+++ b/code/modules/clothing/suits/miscellaneous.dm
@@ -54,26 +54,28 @@
icon_state = "death"
flags = CONDUCT
fire_resist = T0C+5200
- flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
+ flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
/obj/item/clothing/suit/greatcoat
name = "great coat"
desc = "A heavy great coat"
icon_state = "gentlecoat"
item_state_slots = list(slot_r_hand_str = "greatcoat", slot_l_hand_str = "greatcoat")
+ flags_inv = HIDEHOLSTER
/obj/item/clothing/suit/johnny_coat
name = "johnny~~ coat"
desc = "Johnny~~"
icon_state = "gentlecoat"
item_state_slots = list(slot_r_hand_str = "johnny_coat", slot_l_hand_str = "johnny_coat")
+ flags_inv = HIDEHOLSTER
/obj/item/clothing/suit/justice
name = "justice suit"
desc = "This pretty much looks ridiculous."
icon_state = "gentle_coat"
item_state_slots = list(slot_r_hand_str = "greatcoat", slot_l_hand_str = "greatcoat")
- flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
+ flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|HANDS|LEGS|FEET
/obj/item/clothing/suit/judgerobe
@@ -82,7 +84,7 @@
icon_state = "judge"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
allowed = list(/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/spacecash)
- flags_inv = HIDEJUMPSUIT
+ flags_inv = HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
/*/obj/item/clothing/suit/wcoat
name = "waistcoat"
@@ -130,7 +132,7 @@
desc = "A plastic replica of the syndicate space suit, you'll look just like a real murderous syndicate agent in this! This is a toy, it is not made for use in space!"
w_class = ITEMSIZE_NORMAL
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/toy)
- flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
+ flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|HANDS|LEGS|FEET
/obj/item/clothing/suit/hastur
@@ -139,21 +141,21 @@
icon_state = "hastur"
item_state_slots = list(slot_r_hand_str = "rad", slot_l_hand_str = "rad")
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS
- flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
+ flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
/obj/item/clothing/suit/imperium_monk
name = "Imperium monk"
desc = "Have YOU killed a xenos today?"
icon_state = "imperium_monk"
body_parts_covered = HEAD|UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS
- flags_inv = HIDESHOES|HIDEJUMPSUIT
+ flags_inv = HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
/obj/item/clothing/suit/chickensuit
name = "Chicken Suit"
desc = "A suit made long ago by the ancient empire KFC."
icon_state = "chickensuit"
body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS|FEET
- flags_inv = HIDESHOES|HIDEJUMPSUIT
+ flags_inv = HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
siemens_coefficient = 2.0
/obj/item/clothing/suit/monkeysuit
@@ -162,7 +164,7 @@
icon_state = "monkeysuit"
item_state_slots = list(slot_r_hand_str = "brown_jacket", slot_l_hand_str = "brown_jacket")
body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS|FEET|HANDS
- flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
+ flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
siemens_coefficient = 2.0
/obj/item/clothing/suit/holidaypriest
@@ -171,21 +173,21 @@
icon_state = "holidaypriest"
item_state_slots = list(slot_r_hand_str = "labcoat", slot_l_hand_str = "labcoat")
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
- flags_inv = HIDEJUMPSUIT
+ flags_inv = HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
/obj/item/clothing/suit/cardborg
name = "cardborg suit"
desc = "An ordinary cardboard box with holes cut in the sides."
icon_state = "cardborg"
body_parts_covered = UPPER_TORSO|LOWER_TORSO
- flags_inv = HIDEJUMPSUIT
+ flags_inv = HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
/obj/item/clothing/suit/skeleton
name = "skeleton costume"
desc = "A body-tight costume with the human skeleton lined out on it."
icon_state = "skelecost"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|FEET|HANDS|EYES|HEAD|FACE
- flags_inv = HIDEJUMPSUIT|HIDESHOES|HIDEGLOVES
+ flags_inv = HIDEJUMPSUIT|HIDESHOES|HIDEGLOVES|HIDETIE|HIDEHOLSTER
item_state_slots = list(slot_r_hand_str = "judge", slot_l_hand_str = "judge")
/obj/item/clothing/suit/engicost
@@ -193,7 +195,7 @@
desc = "It's supposed to look like an engineering voidsuit... It doesn't look like it could protect from much radiation."
icon_state = "engicost"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|FEET
- flags_inv = HIDEJUMPSUIT|HIDESHOES
+ flags_inv = HIDEJUMPSUIT|HIDESHOES|HIDETIE|HIDEHOLSTER
item_state_slots = list(slot_r_hand_str = "eng_voidsuit", slot_l_hand_str = "eng_voidsuit")
/obj/item/clothing/suit/maxman
@@ -201,7 +203,7 @@
desc = "A costume made to look like Dr. Maxman, the famous male-enhancement salesman. Complete with red do-rag and sleeveless labcoat."
icon_state = "maxman"
body_parts_covered = LOWER_TORSO|FEET|LEGS|HEAD
- flags_inv = HIDEJUMPSUIT|HIDESHOES
+ flags_inv = HIDEJUMPSUIT|HIDESHOES|HIDETIE|HIDEHOLSTER
item_state_slots = list(slot_r_hand_str = "leather_jacket", slot_l_hand_str = "leather_jacket")
/obj/item/clothing/suit/iasexy
@@ -209,7 +211,7 @@
desc = "Now where's your pen?~..."
icon_state = "iacost"
body_parts_covered = UPPER_TORSO|FEET|LOWER_TORSO|EYES
- flags_inv = HIDEJUMPSUIT|HIDESHOES
+ flags_inv = HIDEJUMPSUIT|HIDESHOES|HIDETIE|HIDEHOLSTER
item_state_slots = list(slot_r_hand_str = "suit_black", slot_l_hand_str = "suit_black")
/obj/item/clothing/suit/sexyminer
@@ -217,7 +219,7 @@
desc = "For when you need to get your rocks off."
icon_state = "sexyminer"
body_parts_covered = FEET|LOWER_TORSO|HEAD
- flags_inv = HIDEJUMPSUIT|HIDESHOES
+ flags_inv = HIDEJUMPSUIT|HIDESHOES|HIDETIE|HIDEHOLSTER
item_state_slots = list(slot_r_hand_str = "miner", slot_l_hand_str = "miner")
/obj/item/clothing/suit/sumo
@@ -225,7 +227,7 @@
desc = "An inflated sumo wrestler costume. It's quite hot."
icon_state = "sumo"
body_parts_covered = FEET|LOWER_TORSO|UPPER_TORSO|LEGS|ARMS
- flags_inv = HIDESHOES
+ flags_inv = HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
item_state_slots = list(slot_r_hand_str = "classicponcho", slot_l_hand_str = "classicponcho")
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
@@ -234,7 +236,7 @@
desc = "You would feel insanely cool wearing this."
icon_state = "hackercost"
body_parts_covered = FEET|LOWER_TORSO|UPPER_TORSO|LEGS|ARMS|EYES
- flags_inv = HIDESHOES
+ flags_inv = HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
item_state_slots = list(slot_r_hand_str = "leather_coat", slot_l_hand_str = "leather_coat")
/obj/item/clothing/suit/lumber
@@ -242,7 +244,7 @@
desc = "Smells of dusky pine. Includes chest hair and beard."
icon_state = "sexylumber"
body_parts_covered = FEET|LOWER_TORSO|FEET
- flags_inv = HIDESHOES|HIDEJUMPSUIT
+ flags_inv = HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
item_state_slots = list(slot_r_hand_str = "red_labcoat", slot_l_hand_str = "red_labcoat")
/*
@@ -253,7 +255,7 @@
desc = "A suit that completely restrains the wearer."
icon_state = "straight_jacket"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
- flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL
+ flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
/obj/item/clothing/suit/ianshirt
name = "worn shirt"
@@ -261,6 +263,7 @@
icon_state = "ianshirt"
item_state_slots = list(slot_r_hand_str = "labcoat", slot_l_hand_str = "labcoat") //placeholder -S2-
body_parts_covered = UPPER_TORSO|ARMS
+ flags_inv = HIDETIE|HIDEHOLSTER
/*
* coats
@@ -271,12 +274,14 @@
icon_state = "leathercoat_alt"
allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight, /obj/item/weapon/tank/emergency_oxygen, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask)
item_state_slots = list(slot_r_hand_str = "leather_jacket", slot_l_hand_str = "leather_jacket")
+ flags_inv = HIDEHOLSTER
/obj/item/clothing/suit/leathercoat/sec
name = "leather coat"
desc = "A long, thick black leather coat."
icon_state = "leathercoat_sec"
item_state_slots = list(slot_r_hand_str = "leather_jacket", slot_l_hand_str = "leather_jacket")
+ flags_inv = HIDEHOLSTER
/obj/item/clothing/suit/browncoat
name = "brown leather coat"
@@ -284,6 +289,7 @@
icon_state = "browncoat"
allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask)
item_state_slots = list(slot_r_hand_str = "brown_jacket", slot_l_hand_str = "brown_jacket")
+ flags_inv = HIDEHOLSTER
/obj/item/clothing/suit/neocoat
name = "black coat"
@@ -291,18 +297,21 @@
icon_state = "neocoat"
allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight, /obj/item/weapon/tank/emergency_oxygen, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask)
item_state_slots = list(slot_r_hand_str = "leather_jacket", slot_l_hand_str = "leather_jacket")
+ flags_inv = HIDEHOLSTER
/obj/item/clothing/suit/customs
name = "customs jacket"
desc = "A standard SolGov Customs formal jacket."
icon_state = "customs_jacket"
item_state_slots = list(slot_r_hand_str = "suit_blue", slot_l_hand_str = "suit_blue")
+ flags_inv = HIDEHOLSTER
/obj/item/clothing/suit/storage/greyjacket
name = "grey jacket"
desc = "A fancy twead grey jacket."
icon_state = "gentlecoat"
item_state_slots = list(slot_r_hand_str = "leather_jacket", slot_l_hand_str = "leather_jacket")
+ flags_inv = HIDEHOLSTER
/obj/item/clothing/suit/storage/trench
name = "brown trenchcoat"
@@ -310,11 +319,13 @@
icon_state = "detective"
blood_overlay_type = "coat"
allowed = list(/obj/item/weapon/tank/emergency_oxygen, /obj/item/device/flashlight,/obj/item/weapon/gun/energy,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/flame/lighter,/obj/item/device/taperecorder,/obj/item/device/uv_light)
+ flags_inv = HIDEHOLSTER
/obj/item/clothing/suit/storage/trench/grey
name = "grey trenchcoat"
icon_state = "detective2"
item_state_slots = list(slot_r_hand_str = "leather_jacket", slot_l_hand_str = "leather_jacket")
+ flags_inv = HIDEHOLSTER
/*
* stripper
@@ -339,7 +350,7 @@
icon_state = "xenos"
item_state_slots = list(slot_r_hand_str = "black_suit", slot_l_hand_str = "black_suit")
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
- flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
+ flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
siemens_coefficient = 2.0
/obj/item/clothing/suit/jacket/puffer
@@ -359,18 +370,21 @@
desc = "A canvas jacket styled after classical American military garb. Feels sturdy, yet comfortable."
icon_state = "militaryjacket_nobadge"
item_state_slots = list(slot_r_hand_str = "suit_olive", slot_l_hand_str = "suit_olive")
+ flags_inv = HIDEHOLSTER
/obj/item/clothing/suit/storage/miljacket/alt
name = "military jacket"
desc = "A canvas jacket styled after classical American military garb. Feels sturdy, yet comfortable."
icon_state = "militaryjacket_badge"
item_state_slots = list(slot_r_hand_str = "suit_olive", slot_l_hand_str = "suit_olive")
+ flags_inv = HIDEHOLSTER
/obj/item/clothing/suit/storage/miljacket/green
name = "military jacket"
desc = "A dark green canvas jacket. Feels sturdy, yet comfortable."
icon_state = "militaryjacket_green"
item_state_slots = list(slot_r_hand_str = "suit_olive", slot_l_hand_str = "suit_olive")
+ flags_inv = HIDEHOLSTER
/obj/item/clothing/suit/storage/toggle/bomber
name = "bomber jacket"
@@ -381,6 +395,7 @@
icon_closed = "bomber"
allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight, /obj/item/weapon/tank/emergency_oxygen, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask)
body_parts_covered = UPPER_TORSO|ARMS
+ flags_inv = HIDEHOLSTER
cold_protection = UPPER_TORSO|ARMS
min_cold_protection_temperature = T0C - 20
siemens_coefficient = 0.7
@@ -391,6 +406,7 @@
icon_state = "bomberjacket_new"
item_state_slots = list(slot_r_hand_str = "brown_jacket", slot_l_hand_str = "brown_jacket")
body_parts_covered = UPPER_TORSO|ARMS
+ flags_inv = HIDEHOLSTER
cold_protection = UPPER_TORSO|ARMS
min_cold_protection_temperature = T0C - 20
siemens_coefficient = 0.7
@@ -402,6 +418,7 @@
icon_open = "leather_jacket_open"
allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight, /obj/item/weapon/tank/emergency_oxygen, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask)
body_parts_covered = UPPER_TORSO|ARMS
+ flags_inv = HIDEHOLSTER
/obj/item/clothing/suit/storage/toggle/leather_jacket/sleeveless
name = "leather vest"
@@ -445,6 +462,7 @@
icon_closed = "brown_jacket"
allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask)
body_parts_covered = UPPER_TORSO|ARMS
+ flags_inv = HIDEHOLSTER
/obj/item/clothing/suit/storage/toggle/brown_jacket/sleeveless
name = "brown vest"
@@ -480,6 +498,7 @@
icon_closed = "denim_jacket"
allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask)
body_parts_covered = UPPER_TORSO|ARMS
+ flags_inv = HIDEHOLSTER
/obj/item/clothing/suit/storage/toggle/denim_jacket/sleeveless
name = "denim vest"
@@ -515,6 +534,7 @@
icon_closed = "grey_hoodie"
min_cold_protection_temperature = T0C - 20
cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS
+ flags_inv = HIDEHOLSTER
/obj/item/clothing/suit/storage/toggle/hoodie/black
name = "black hoodie"
@@ -602,7 +622,7 @@
icon_state = "white_dress"
item_state_slots = list(slot_r_hand_str = "white_dress", slot_l_hand_str = "white_dress")
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS
- flags_inv = HIDEJUMPSUIT
+ flags_inv = HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
/obj/item/clothing/suit/storage/hooded/carp_costume
name = "carp costume"
@@ -610,6 +630,7 @@
icon_state = "carp_casual"
item_state_slots = list(slot_r_hand_str = "carp_casual", slot_l_hand_str = "carp_casual") //Does not exist -S2-
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
+ flags_inv = HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE //Space carp like space, so you should too
hooded = 1
@@ -631,6 +652,7 @@
icon_state = "ian"
item_state_slots = list(slot_r_hand_str = "ian", slot_l_hand_str = "ian") //Does not exist -S2-
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
+ flags_inv = HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
//cold_protection = CHEST|GROIN|ARMS
//min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
hooded = 1
@@ -652,6 +674,7 @@
icon_state = "coatwinter"
item_state_slots = list(slot_r_hand_str = "coatwinter", slot_l_hand_str = "coatwinter")
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
+ flags_inv = HIDEHOLSTER
cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
@@ -726,6 +749,7 @@
icon_state = "varsity"
allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask)
item_state_slots = list(slot_r_hand_str = "suit_black", slot_l_hand_str = "suit_black")
+ flags_inv = HIDETIE|HIDEHOLSTER
/obj/item/clothing/suit/varsity/red
name = "red varsity jacket"
@@ -795,6 +819,7 @@
icon_state = "flannel"
item_state_slots = list(slot_r_hand_str = "black_labcoat", slot_l_hand_str = "black_labcoat")
allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask)
+ flags_inv = HIDEHOLSTER
var/rolled = 0
var/tucked = 0
var/buttoned = 0
@@ -840,10 +865,12 @@
if(buttoned == 0)
buttoned = 1
- usr << "You unbutton your [src]."
+ flags_inv = HIDETIE|HIDEHOLSTER
+ usr << "You button your [src]."
else
buttoned = 0
- usr<<"You button your [src]."
+ flags_inv = HIDEHOLSTER
+ usr<<"You unbutton your [src]."
update_icon()
/obj/item/clothing/suit/storage/flannel/update_icon()
@@ -881,4 +908,5 @@
icon_open = "suitjacket_green_open"
icon_closed = "suitjacket_green"
blood_overlay_type = "coat"
- body_parts_covered = UPPER_TORSO|ARMS
\ No newline at end of file
+ body_parts_covered = UPPER_TORSO|ARMS
+ flags_inv = HIDEHOLSTER
\ No newline at end of file
diff --git a/code/modules/clothing/suits/solgov.dm b/code/modules/clothing/suits/solgov.dm
new file mode 100644
index 0000000000..90b561ba3e
--- /dev/null
+++ b/code/modules/clothing/suits/solgov.dm
@@ -0,0 +1,168 @@
+//SolGov Uniform Suits
+
+//Service
+
+/obj/item/clothing/suit/storage/service
+ name = "service jacket"
+ desc = "A uniform service jacket, plain and undecorated."
+ icon_state = "blackservice"
+ item_state_slots = list(slot_r_hand_str = "suit_black", slot_l_hand_str = "suit_black")
+ body_parts_covered = UPPER_TORSO|ARMS
+ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ siemens_coefficient = 0.9
+ allowed = list(/obj/item/weapon/tank/emergency_oxygen,/obj/item/device/flashlight,/obj/item/weapon/pen,/obj/item/clothing/head/soft,/obj/item/clothing/head/beret,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/flame/lighter,/obj/item/device/taperecorder,/obj/item/device/analyzer,/obj/item/device/radio,/obj/item/taperoll)
+
+/obj/item/clothing/suit/storage/service/expeditionary
+ name = "expeditionary jacket"
+ desc = "A uniform service jacket belonging to the SCG Expeditionary Corps. It has silver buttons."
+ icon_state = "blackservice_crew"
+
+/obj/item/clothing/suit/storage/service/expeditionary/medical
+ name = "expeditionary medical jacket"
+ desc = "A uniform service jacket belonging to the SCG Expeditionary Corps. It has silver buttons and blue trim."
+ icon_state = "blackservice_med"
+
+/obj/item/clothing/suit/storage/service/expeditionary/medical/command
+ name = "expeditionary medical command jacket"
+ desc = "A uniform service jacket belonging to the SCG Expeditionary Corps. It has gold buttons and blue trim."
+ icon_state = "blackservice_medcom"
+
+/obj/item/clothing/suit/storage/service/expeditionary/engineering
+ name = "expeditionary engineering jacket"
+ desc = "A uniform service jacket belonging to the SCG Expeditionary Corps. It has silver buttons and orange trim."
+ icon_state = "blackservice_eng"
+
+/obj/item/clothing/suit/storage/service/expeditionary/engineering/command
+ name = "expeditionary engineering command jacket"
+ desc = "A uniform service jacket belonging to the SCG Expeditionary Corps. It has gold buttons and orange trim."
+ icon_state = "blackservice_engcom"
+
+/obj/item/clothing/suit/storage/service/expeditionary/supply
+ name = "expeditionary supply jacket"
+ desc = "A uniform service jacket belonging to the SCG Expeditionary Corps. It has silver buttons and brown trim."
+ icon_state = "blackservice_sup"
+
+/obj/item/clothing/suit/storage/service/expeditionary/security
+ name = "expeditionary security jacket"
+ desc = "A uniform service jacket belonging to the SCG Expeditionary Corps. It has silver buttons and red trim."
+ icon_state = "blackservice_sec"
+
+/obj/item/clothing/suit/storage/service/expeditionary/security/command
+ name = "expeditionary security command jacket"
+ desc = "A uniform service jacket belonging to the SCG Expeditionary Corps. It has gold buttons and red trim."
+ icon_state = "blackservice_seccom"
+
+/obj/item/clothing/suit/storage/service/expeditionary/command
+ name = "expeditionary command jacket"
+ desc = "A uniform service jacket belonging to the SCG Expeditionary Corps. It has gold buttons and gold trim."
+ icon_state = "blackservice_com"
+
+/obj/item/clothing/suit/storage/service/marine
+ name = "marine coat"
+ desc = "An SCG Marine Corps service coat. Green and undecorated."
+ icon_state = "greenservice"
+ item_state_slots = list(slot_r_hand_str = "suit_olive", slot_l_hand_str = "suit_olive")
+
+/obj/item/clothing/suit/storage/service/marine/medical
+ name = "marine medical jacket"
+ desc = "An SCG Marine Corps service coat. This one has blue markings."
+ icon_state = "greenservice_med"
+
+/obj/item/clothing/suit/storage/service/marine/medical/command
+ name = "marine medical command jacket"
+ desc = "An SCG Marine Corps service coat. This one has blue and gold markings."
+ icon_state = "greenservice_medcom"
+
+/obj/item/clothing/suit/storage/service/marine/engineering
+ name = "marine engineering jacket"
+ desc = "An SCG Marine Corps service coat. This one has orange markings."
+ icon_state = "greenservice_eng"
+
+/obj/item/clothing/suit/storage/service/marine/engineering/command
+ name = "marine engineering command jacket"
+ desc = "An SCG Marine Corps service coat. This one has orange and gold markings."
+ icon_state = "greenservice_engcom"
+
+/obj/item/clothing/suit/storage/service/marine/supply
+ name = "marine supply jacket"
+ desc = "An SCG Marine Corps service coat. This one has brown markings."
+ icon_state = "greenservice_sup"
+
+/obj/item/clothing/suit/storage/service/marine/security
+ name = "marine security jacket"
+ desc = "An SCG Marine Corps service coat. This one has red markings."
+ icon_state = "greenservice_sec"
+
+/obj/item/clothing/suit/storage/service/marine/security/command
+ name = "marine security command jacket"
+ desc = "An SCG Marine Corps service coat. This one has red and gold markings."
+ icon_state = "greenservice_seccom"
+
+/obj/item/clothing/suit/storage/service/marine/command
+ name = "marine command jacket"
+ desc = "An SCG Marine Corps service coat. This one has gold markings."
+ icon_state = "greenservice_com"
+
+//Dress
+
+/obj/item/clothing/suit/dress
+ name = "dress jacket"
+ desc = "A uniform dress jacket, fancy."
+ icon_state = "greydress"
+ body_parts_covered = UPPER_TORSO|ARMS
+ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ siemens_coefficient = 0.9
+ allowed = list(/obj/item/weapon/tank/emergency_oxygen,/obj/item/device/flashlight,/obj/item/clothing/head/soft,/obj/item/clothing/head/beret,/obj/item/device/radio,/obj/item/weapon/pen)
+
+/obj/item/clothing/suit/dress/expedition
+ name = "expeditionary dress jacket"
+ desc = "A silver and grey dress jacket belonging to the SCG Expeditionary Corps. Fashionable, for the 25th century at least."
+ icon_state = "greydress"
+
+/obj/item/clothing/suit/dress/expedition/command
+ name = "expeditionary command dress jacket"
+ desc = "A gold and grey dress jacket belonging to the SCG Expeditionary Corps. The height of fashion."
+ icon_state = "greydress_com"
+
+/obj/item/clothing/suit/storage/toggle/dress
+ name = "clasped dress jacket"
+ desc = "A uniform dress jacket with gold toggles."
+ icon_state = "whitedress"
+ item_state = "labcoat"
+ icon_open = "whitedress_open"
+ icon_closed = "whitedress"
+ blood_overlay_type = "coat"
+
+/obj/item/clothing/suit/storage/toggle/dress/fleet
+ name = "fleet dress jacket"
+ desc = "A crisp white SCG Fleet dress jacket with blue and gold accents. Don't get near pasta sauce or vox."
+
+/obj/item/clothing/suit/storage/toggle/dress/fleet/command
+ name = "expeditionary command dress jacket"
+ desc = "A crisp white SCG Fleet dress jacket dripping with gold accents. So bright it's blinding."
+ icon_state = "whitedress_com"
+ item_state = "labcoat"
+ icon_open = "whitedress_com_open"
+ icon_closed = "whitedress_com"
+ blood_overlay_type = "coat"
+
+/obj/item/clothing/suit/dress/marine
+ name = "marine dress jacket"
+ desc = "A tailored black SCG Marine Corps dress jacket with red trim. So sexy it hurts."
+ icon_state = "blackdress"
+ item_state_slots = list(slot_r_hand_str = "suit_black", slot_l_hand_str = "suit_black")
+
+/obj/item/clothing/suit/dress/marine/command
+ name = "marine command dress jacket"
+ desc = "A tailored black SCG Marine Corps dress jacket with gold trim. Smells like ceremony."
+ icon_state = "blackdress_com"
+//Misc
+
+/obj/item/clothing/suit/storage/toggle/marshal_jacket
+ name = "colonial marshal jacket"
+ desc = "A black synthleather jacket. The word 'MARSHAL' is stenciled onto the back in gold lettering."
+ icon_state = "marshal_jacket"
+ item_state_slots = list(slot_r_hand_str = "suit_black", slot_l_hand_str = "suit_black")
+ icon_open = "marshal_jacket_open"
+ icon_closed = "marshal_jacket"
+ body_parts_covered = UPPER_TORSO|ARMS
\ No newline at end of file
diff --git a/code/modules/clothing/suits/storage.dm b/code/modules/clothing/suits/storage.dm
index 13d91661f5..91288a6f36 100644
--- a/code/modules/clothing/suits/storage.dm
+++ b/code/modules/clothing/suits/storage.dm
@@ -30,6 +30,7 @@
//Jackets with buttons, used for labcoats, IA jackets, First Responder jackets, and brown jackets.
/obj/item/clothing/suit/storage/toggle
+ flags_inv = HIDEHOLSTER
var/icon_open
var/icon_closed
verb/toggle()
@@ -41,16 +42,20 @@
if(icon_state == icon_open) //Will check whether icon state is currently set to the "open" or "closed" state and switch it around with a message to the user
icon_state = icon_closed
+ flags_inv = HIDETIE|HIDEHOLSTER
usr << "You button up the coat."
else if(icon_state == icon_closed)
icon_state = icon_open
+ flags_inv = HIDEHOLSTER
usr << "You unbutton the coat."
else //in case some goofy admin switches icon states around without switching the icon_open or icon_closed
usr << "You attempt to button-up the velcro on your [src], before promptly realising how silly you are."
return
update_clothing_icon() //so our overlays update
+
/obj/item/clothing/suit/storage/hooded/toggle
+ flags_inv = HIDEHOLSTER
var/icon_open
var/icon_closed
verb/toggle()
@@ -62,9 +67,11 @@
if(icon_state == icon_open) //Will check whether icon state is currently set to the "open" or "closed" state and switch it around with a message to the user
icon_state = icon_closed
+ flags_inv = HIDETIE|HIDEHOLSTER
usr << "You button up the coat."
else if(icon_state == icon_closed)
icon_state = icon_open
+ flags_inv = HIDEHOLSTER
usr << "You unbutton the coat."
else //in case some goofy admin switches icon states around without switching the icon_open or icon_closed
usr << "You attempt to button-up the velcro on your [src], before promptly realising how silly you are."
diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm
index 8bf36d0044..02f4b16254 100644
--- a/code/modules/clothing/suits/utility.dm
+++ b/code/modules/clothing/suits/utility.dm
@@ -19,7 +19,7 @@
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/extinguisher)
slowdown = 1.0
- flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL
+ flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
item_flags = STOPPRESSUREDAMAGE
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE
@@ -57,7 +57,7 @@
permeability_coefficient = 0.01
slowdown = 2
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 100, bio = 0, rad = 0)
- flags_inv = HIDEJUMPSUIT|HIDETAIL
+ flags_inv = HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
heat_protection = UPPER_TORSO|LOWER_TORSO
max_heat_protection_temperature = ARMOR_MAX_HEAT_PROTECTION_TEMPERATURE
siemens_coefficient = 0
@@ -92,4 +92,4 @@
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/clothing/head/radiation,/obj/item/clothing/mask/gas)
slowdown = 1.5
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100)
- flags_inv = HIDEJUMPSUIT|HIDETAIL
+ flags_inv = HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm
index ba04d4ca36..30cb1d6b55 100644
--- a/code/modules/clothing/suits/wiz_robe.dm
+++ b/code/modules/clothing/suits/wiz_robe.dm
@@ -53,7 +53,7 @@
permeability_coefficient = 0.01
armor = list(melee = 30, bullet = 20, laser = 20,energy = 20, bomb = 20, bio = 20, rad = 20)
allowed = list(/obj/item/weapon/teleportation_scroll)
- flags_inv = HIDEJUMPSUIT
+ flags_inv = HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
siemens_coefficient = 0.8
wizard_garb = 1
@@ -90,6 +90,7 @@
icon_state = "gentlecoat"
item_state_slots = list(slot_r_hand_str = "greatcoat", slot_l_hand_str = "greatcoat")
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
+ flags_inv = HIDETIE|HIDEHOLSTER
/obj/item/clothing/suit/wizrobe/fake
name = "wizard robe"
diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm
index 2e6f5c6309..ee6eba13d6 100644
--- a/code/modules/clothing/under/accessories/accessory.dm
+++ b/code/modules/clothing/under/accessories/accessory.dm
@@ -11,6 +11,8 @@
var/image/inv_overlay = null //overlay used when attached to clothing.
var/image/mob_overlay = null
var/overlay_state = null
+ var/concealed_holster = 0
+ var/mob/living/carbon/human/wearer = null //To check if the wearer changes, so species spritesheets change properly.
sprite_sheets = list("Teshari" = 'icons/mob/species/seromi/ties.dmi') //Teshari can into webbing, too!
@@ -20,23 +22,27 @@
/obj/item/clothing/accessory/proc/get_inv_overlay()
if(!inv_overlay)
- if(!mob_overlay)
- get_mob_overlay()
-
var/tmp_icon_state = "[overlay_state? "[overlay_state]" : "[icon_state]"]"
if(icon_override)
if("[tmp_icon_state]_tie" in icon_states(icon_override))
tmp_icon_state = "[tmp_icon_state]_tie"
- inv_overlay = image(icon = mob_overlay.icon, icon_state = tmp_icon_state, dir = SOUTH)
+ inv_overlay = image(icon = INV_ACCESSORIES_DEF_ICON, icon_state = tmp_icon_state, dir = SOUTH)
return inv_overlay
/obj/item/clothing/accessory/proc/get_mob_overlay()
- if(!mob_overlay)
+ if(!mob_overlay || has_suit.loc != wearer)
var/tmp_icon_state = "[overlay_state? "[overlay_state]" : "[icon_state]"]"
+ if(ishuman(has_suit.loc))
+ wearer = has_suit.loc
+ else
+ wearer = null
+
if(icon_override)
if("[tmp_icon_state]_mob" in icon_states(icon_override))
tmp_icon_state = "[tmp_icon_state]_mob"
mob_overlay = image("icon" = icon_override, "icon_state" = "[tmp_icon_state]")
+ else if(wearer && sprite_sheets[wearer.species.get_bodytype(wearer)]) //Teshari can finally into webbing, too!
+ mob_overlay = image("icon" = sprite_sheets[wearer.species.get_bodytype(wearer)], "icon_state" = "[tmp_icon_state]")
else
mob_overlay = image("icon" = INV_ACCESSORIES_DEF_ICON, "icon_state" = "[tmp_icon_state]")
return mob_overlay
diff --git a/code/modules/clothing/under/accessories/holster.dm b/code/modules/clothing/under/accessories/holster.dm
index de7ac20c9a..d9dc2f2e54 100644
--- a/code/modules/clothing/under/accessories/holster.dm
+++ b/code/modules/clothing/under/accessories/holster.dm
@@ -3,6 +3,7 @@
desc = "A handgun holster."
icon_state = "holster"
slot = "utility"
+ concealed_holster = 1
var/obj/item/holstered = null
/obj/item/clothing/accessory/holster/proc/holster(var/obj/item/I, var/mob/living/user)
@@ -120,14 +121,17 @@
desc = "A handgun holster. Made of expensive leather."
icon_state = "holster"
overlay_state = "holster_low"
+ concealed_holster = 0
/obj/item/clothing/accessory/holster/hip
name = "hip holster"
desc = "A handgun holster slung low on the hip, draw pardner!"
icon_state = "holster_hip"
+ concealed_holster = 0
/obj/item/clothing/accessory/holster/leg
name = "leg holster"
desc = "A tacticool handgun holster. Worn on the upper leg."
icon_state = "holster_hip"
- overlay_state = "holster_leg"
\ No newline at end of file
+ overlay_state = "holster_leg"
+ concealed_holster = 0
\ No newline at end of file
diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm
index fd802d7a11..c1039e5f60 100644
--- a/code/modules/clothing/under/miscellaneous.dm
+++ b/code/modules/clothing/under/miscellaneous.dm
@@ -91,7 +91,7 @@
item_state_slots = list(slot_r_hand_str = "black", slot_l_hand_str = "black")
/obj/item/clothing/under/gov
- desc = "A neat proper uniform of someone on offical business. The plain, professional attire of an Internal Affairs Agent. The collar is immaculately starched."
+ desc = "A neat proper uniform of someone on offical business. The collar is immaculately starched."
name = "Green formal uniform"
icon_state = "greensuit"
item_state_slots = list(slot_r_hand_str = "centcom", slot_l_hand_str = "centcom")
@@ -607,13 +607,13 @@
/obj/item/clothing/under/stripper/stripper_pink
name = "pink swimsuit"
desc = "A rather skimpy pink swimsuit."
- icon_state = "stripper_p_under"
+ icon_state = "stripper_p"
siemens_coefficient = 1
/obj/item/clothing/under/stripper/stripper_green
name = "green swimsuit"
desc = "A rather skimpy green swimsuit."
- icon_state = "stripper_g_under"
+ icon_state = "stripper_g"
siemens_coefficient = 1
/obj/item/clothing/under/stripper/mankini
@@ -621,3 +621,74 @@
desc = "No honest man would wear this abomination"
icon_state = "mankini"
siemens_coefficient = 1
+
+/*
+ *Misc Uniforms
+ */
+
+/obj/item/clothing/under/aether
+ name = "\improper Aether jumpsuit"
+ desc = "A jumpsuit belonging to Aether Atmospherics and Recycling, a Trans-Stellar that supplies recycling and atmospheric systems to colonies."
+ icon_state = "aether"
+ worn_state = "aether"
+
+/obj/item/clothing/under/pcrc
+ name = "\improper PCRC uniform"
+ desc = "A uniform belonging to Proxima Centauri Risk Control, a private security firm."
+ icon_state = "pcrc"
+ item_state = "jensensuit"
+ worn_state = "pcrc"
+
+/obj/item/clothing/under/grayson
+ name = "\improper Grayson overalls"
+ desc = "A set of overalls belonging to Grayson Manufactories, a mining Trans-Stellar."
+ icon_state = "mechanic"
+ worn_state = "mechanic"
+
+/obj/item/clothing/under/wardt
+ name = "\improper Ward-Takahashi jumpsuit"
+ desc = "A jumpsuit belonging to Ward-Takahashi, a Trans-Stellar in the consumer goods market."
+ icon_state = "robotics2"
+ worn_state = "robotics2"
+
+/obj/item/clothing/under/mbill
+ name = "\improper Major Bill's uniform"
+ desc = "A uniform belonging to Major Bill's Transportation, a shipping megacorporation."
+ icon_state = "mbill"
+ worn_state = "mbill"
+
+/obj/item/clothing/under/confederacy
+ name = "\improper Confederacy uniform"
+ desc = "A military uniform belonging to the Confederacy of Man, an independent human government."
+ icon_state = "confed"
+ worn_state = "confed"
+
+/obj/item/clothing/under/saare
+ name = "\improper SAARE uniform"
+ desc = "A dress uniform belonging to Stealth Assault Enterprises, a minor private military corporation."
+ icon_state = "saare"
+ worn_state = "saare"
+
+/obj/item/clothing/under/frontier
+ name = "frontier clothes"
+ desc = "A rugged flannel shirt and denim overalls. A popular style among frontier colonists."
+ icon_state = "frontier"
+ worn_state = "frontier"
+
+/obj/item/clothing/under/focal
+ name = "\improper Focal Point jumpsuit"
+ desc = "A jumpsuit belonging to Focal Point Energistics, an engineering megacorporation."
+ icon_state = "focal"
+ worn_state = "focal"
+
+/obj/item/clothing/under/hephaestus
+ name = "\improper Hephaestus jumpsuit"
+ desc = "A jumpsuit belonging to Hephaestus Industries, a Trans-Stellar best known for its arms production."
+ icon_state = "heph"
+ worn_state = "heph"
+
+/obj/item/clothing/under/rank/psych/turtleneck/sweater
+ desc = "A warm looking sweater and a pair of dark blue slacks."
+ name = "sweater"
+ icon_state = "turtleneck"
+ worn_state = "turtleneck"
diff --git a/code/modules/clothing/under/shorts.dm b/code/modules/clothing/under/shorts.dm
index 0db35dd08c..81b5b2fe24 100644
--- a/code/modules/clothing/under/shorts.dm
+++ b/code/modules/clothing/under/shorts.dm
@@ -29,6 +29,10 @@
name = "white shorts"
icon_state = "whiteshorts"
+/obj/item/clothing/under/shorts/white/female
+ name = "white short shorts"
+ icon_state = "whiteshorts_f"
+
/obj/item/clothing/under/shorts/jeans
name = "jeans shorts"
desc = "Some jeans! Just in short form!"
@@ -116,6 +120,11 @@
desc = "A skirt that is a shiny red."
icon_state = "skirt_short_red"
+/obj/item/clothing/under/skirt/denim
+ name = "short denim skirt"
+ desc = "A skirt that is made of denim."
+ icon_state = "skirt_short_denim"
+
/obj/item/clothing/under/skirt/swept
name = "swept skirt"
desc = "A skirt that is swept to one side."
diff --git a/code/modules/clothing/under/solgov.dm b/code/modules/clothing/under/solgov.dm
new file mode 100644
index 0000000000..cb5cbf27b2
--- /dev/null
+++ b/code/modules/clothing/under/solgov.dm
@@ -0,0 +1,265 @@
+//SolGov Uniforms
+
+//PT
+/obj/item/clothing/under/pt
+ name = "pt uniform"
+ desc = "Shorts! Shirt! Miami! Sexy!"
+ icon_state = "miami"
+ worn_state = "miami"
+ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ siemens_coefficient = 0.9
+ body_parts_covered = UPPER_TORSO|LOWER_TORSO
+
+/obj/item/clothing/under/pt/expeditionary
+ name = "expeditionary pt uniform"
+ desc = "A baggy shirt bearing the seal of the SCG Expeditionary Corps and some dorky looking blue shorts."
+ icon_state = "expeditionpt"
+ worn_state = "expeditionpt"
+
+/obj/item/clothing/under/pt/fleet
+ name = "fleet pt uniform"
+ desc = "A pair of black shorts and two tank tops, seems impractical. Looks good though."
+ icon_state = "fleetpt"
+ worn_state = "fleetpt"
+
+/obj/item/clothing/under/pt/marine
+ name = "marine pt uniform"
+ desc = "Does NOT leave much to the imagination."
+ icon_state = "marinept"
+ worn_state = "marinept"
+
+
+//Utility
+
+/obj/item/clothing/under/utility
+ name = "utility uniform"
+ desc = "A comfortable turtleneck and black utility trousers."
+ icon_state = "blackutility"
+ worn_state = "blackutility"
+ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ siemens_coefficient = 0.9
+
+/obj/item/clothing/under/utility/expeditionary
+ name = "expeditionary uniform"
+ desc = "The utility uniform of the SCG Expeditionary Corps, made from biohazard resistant material. This one has silver trim."
+ icon_state = "blackutility_crew"
+ worn_state = "blackutility_crew"
+ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 10)
+
+/obj/item/clothing/under/utility/expeditionary/medical
+ name = "expeditionary medical uniform"
+ desc = "The utility uniform of the SCG Expeditionary Corps, made from biohazard resistant material. This one has silver trim and blue blazes."
+ icon_state = "blackutility_med"
+ worn_state = "blackutility_med"
+
+/obj/item/clothing/under/utility/expeditionary/medical/command
+ name = "expeditionary medical command uniform"
+ desc = "The utility uniform of the SCG Expeditionary Corps, made from biohazard resistant material. This one has gold trim and blue blazes."
+ icon_state = "blackutility_medcom"
+ worn_state = "blackutility_medcom"
+
+/obj/item/clothing/under/utility/expeditionary/engineering
+ name = "expeditionary engineering uniform"
+ desc = "The utility uniform of the SCG Expeditionary Corps, made from biohazard resistant material. This one has silver trim and organge blazes."
+ icon_state = "blackutility_eng"
+ worn_state = "blackutility_eng"
+
+/obj/item/clothing/under/utility/expeditionary/engineering/command
+ name = "expeditionary engineering command uniform"
+ desc = "The utility uniform of the SCG Expeditionary Corps, made from biohazard resistant material. This one has gold trim and organge blazes."
+ icon_state = "blackutility_engcom"
+ worn_state = "blackutility_engcom"
+
+/obj/item/clothing/under/utility/expeditionary/supply
+ name = "expeditionary supply uniform"
+ desc = "The utility uniform of the SCG Expeditionary Corps, made from biohazard resistant material. This one has silver trim and brown blazes."
+ icon_state = "blackutility_sup"
+ worn_state = "blackutility_sup"
+
+/obj/item/clothing/under/utility/expeditionary/security
+ name = "expeditionary security uniform"
+ desc = "The utility uniform of the SCG Expeditionary Corps, made from biohazard resistant material. This one has silver trim and red blazes."
+ icon_state = "blackutility_sec"
+ worn_state = "blackutility_sec"
+
+/obj/item/clothing/under/utility/expeditionary/security/command
+ name = "expeditionary security command uniform"
+ desc = "The utility uniform of the SCG Expeditionary Corps, made from biohazard resistant material. This one has gold trim and red blazes."
+ icon_state = "blackutility_seccom"
+ worn_state = "blackutility_seccom"
+
+/obj/item/clothing/under/utility/expeditionary/command
+ name = "expeditionary command uniform"
+ desc = "The utility uniform of the SCG Expeditionary Corps, made from biohazard resistant material. This one has gold trim and gold blazes."
+ icon_state = "blackutility_com"
+ worn_state = "blackutility_com"
+
+
+/obj/item/clothing/under/utility/fleet
+ name = "fleet coveralls"
+ desc = "The utility uniform of the SCG Fleet, made from an insulated material."
+ icon_state = "navyutility"
+ worn_state = "navyutility"
+ armor = list(melee = 0, bullet = 0, laser = 0,energy = 10, bomb = 0, bio = 0, rad = 0)
+ siemens_coefficient = 0.7
+
+/obj/item/clothing/under/utility/fleet/medical
+ name = "fleet medical coveralls"
+ desc = "The utility uniform of the SCG Fleet, made from an insulated material. This one has blue cuffs."
+ icon_state = "navyutility_med"
+ worn_state = "navyutility_med"
+
+/obj/item/clothing/under/utility/fleet/engineering
+ name = "fleet engineering coveralls"
+ desc = "The utility uniform of the SCG Fleet, made from an insulated material. This one has orange cuffs."
+ icon_state = "navyutility_eng"
+ worn_state = "navyutility_eng"
+
+/obj/item/clothing/under/utility/fleet/supply
+ name = "fleet supply coveralls"
+ desc = "The utility uniform of the SCG Fleet, made from an insulated material. This one has brown cuffs."
+ icon_state = "navyutility_sup"
+ worn_state = "navyutility_sup"
+
+/obj/item/clothing/under/utility/fleet/security
+ name = "fleet security coveralls"
+ desc = "The utility uniform of the SCG Fleet, made from an insulated material. This one has red cuffs."
+ icon_state = "navyutility_sec"
+ worn_state = "navyutility_sec"
+
+/obj/item/clothing/under/utility/fleet/command
+ name = "fleet command coveralls"
+ desc = "The utility uniform of the SCG Fleet, made from an insulated material. This one has gold cuffs."
+ icon_state = "navyutility_com"
+ worn_state = "navyutility_com"
+
+
+/obj/item/clothing/under/utility/marine
+ name = "marine fatigues"
+ desc = "The utility uniform of the SCG Marine Corps, made from durable material."
+ icon_state = "greyutility"
+ worn_state = "greyutility"
+ armor = list(melee = 10, bullet = 0, laser = 10,energy = 0, bomb = 0, bio = 0, rad = 0)
+
+/obj/item/clothing/under/utility/marine/green
+ name = "green fatigues"
+ desc = "A green version of the SCG marine utility uniform, made from durable material."
+ icon_state = "greenutility"
+ worn_state = "greenutility"
+
+/obj/item/clothing/under/utility/marine/tan
+ name = "tan fatigues"
+ desc = "A tan version of the SCG marine utility uniform, made from durable material."
+ icon_state = "tanutility"
+ worn_state = "tanutility"
+
+/obj/item/clothing/under/utility/marine/medical
+ name = "marine medical fatigues"
+ desc = "The utility uniform of the SCG Marine Corps, made from durable material. This one has blue markings."
+ icon_state = "greyutility_med"
+ worn_state = "greyutility_med"
+
+/obj/item/clothing/under/utility/marine/engineering
+ name = "marine engineering fatigues"
+ desc = "The utility uniform of the SCG Marine Corps, made from durable material. This one has orange markings."
+ icon_state = "greyutility_eng"
+ worn_state = "greyutility_eng"
+
+/obj/item/clothing/under/utility/marine/supply
+ name = "marine supply fatigues"
+ desc = "The utility uniform of the SCG Marine Corps, made from durable material. This one has brown markings."
+ icon_state = "greyutility_sup"
+ worn_state = "greyutility_sup"
+
+/obj/item/clothing/under/utility/marine/security
+ name = "marine security fatigues"
+ desc = "The utility uniform of the SCG Marine Corps, made from durable material. This one has red markings."
+ icon_state = "greyutility_sec"
+ worn_state = "greyutility_sec"
+
+/obj/item/clothing/under/utility/marine/command
+ name = "marine command coveralls"
+ desc = "The utility uniform of the SCG Marine Corps, made from durable material. This one has gold markings."
+ icon_state = "greyutility_com"
+ worn_state = "greyutility_com"
+
+//Service
+
+/obj/item/clothing/under/service
+ name = "service uniform"
+ desc = "A service uniform of some kind."
+ icon_state = "whiteservice"
+ worn_state = "whiteservice"
+ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ siemens_coefficient = 0.9
+
+/obj/item/clothing/under/service/fleet
+ name = "fleet service uniform"
+ desc = "The service uniform of the SCG Fleet, made from immaculate white fabric."
+ icon_state = "whiteservice"
+ worn_state = "whiteservice"
+
+/obj/item/clothing/under/service/marine
+ name = "marine service uniform"
+ desc = "The service uniform of the SCG Marine Corps. Slimming."
+ icon_state = "greenservice"
+ worn_state = "greenservice"
+
+/obj/item/clothing/under/service/marine/command
+ name = "marine command service uniform"
+ desc = "The service uniform of the SCG Marine Corps. Slimming and stylish."
+ icon_state = "greenservice_com"
+ worn_state = "greenservice_com"
+
+//Dress
+/obj/item/clothing/under/dress
+ name = "dress uniform"
+ desc = "A dress uniform of some kind."
+ icon_state = "greydress"
+ worn_state = "greydress"
+ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ siemens_coefficient = 0.9
+
+/obj/item/clothing/under/dress/expeditionary
+ name = "expeditionary dress uniform"
+ desc = "The dress uniform of the SCG Expeditionary Corps in silver trim."
+ icon_state = "greydress"
+ worn_state = "greydress"
+
+/obj/item/clothing/under/dress/expeditionary/command
+ name = "expeditionary command dress uniform"
+ desc = "The dress uniform of the SCG Expeditionary Corps in gold trim."
+ icon_state = "greydress_com"
+ worn_state = "greydress_com"
+
+/obj/item/clothing/under/dress/marine
+ name = "marine dress uniform"
+ desc = "The dress uniform of the SCG Marine Corps, class given form."
+ icon_state = "blackdress"
+ worn_state = "blackdress"
+
+/obj/item/clothing/under/dress/marine/command
+ name = "marine command dress uniform"
+ desc = "The dress uniform of the SCG Marine Corps, even classier in gold."
+ icon_state = "blackdress_com"
+ worn_state = "blackdress_com"
+
+
+//Misc
+
+/obj/item/clothing/under/hazard
+ name = "hazard jumpsuit"
+ desc = "A high visibility jumpsuit made from heat and radiation resistant materials."
+ icon_state = "hazard"
+ worn_state = "hazard"
+ siemens_coefficient = 0.8
+ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 20, bio = 0, rad = 20)
+ max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE
+
+/obj/item/clothing/under/sterile
+ name = "sterile jumpsuit"
+ desc = "A sterile white jumpsuit with medical markings. Protects against all manner of biohazards."
+ icon_state = "sterile"
+ worn_state = "sterile"
+ permeability_coefficient = 0.50
+ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 30, rad = 0)
diff --git a/code/modules/events/apc_damage.dm b/code/modules/events/apc_damage.dm
index b77be8fa5d..5541d0354e 100644
--- a/code/modules/events/apc_damage.dm
+++ b/code/modules/events/apc_damage.dm
@@ -14,9 +14,10 @@
severity_range = 15
for(var/obj/machinery/power/apc/apc in range(severity_range,A))
- if(is_valid_apc(apc))
- apc.emagged = 1
- apc.update_icon()
+ if(is_valid_apc(apc)) //This event "****s up" the "id authenticator" on APCs, emagging and unlocking them.
+ apc.emagged = 1 //It used to just blue screen the APC and make it so it had to be hacked to unlock,
+ apc.locked = 0 //but most people ignored it. Now it has an actual effect on the round and opens
+ apc.update_icon() //a small possibility for traitors. To fix, remove power cell and apply multitool.
/datum/event/apc_damage/proc/acquire_random_apc()
var/list/possibleEpicentres = list()
diff --git a/code/modules/events/event_dynamic.dm b/code/modules/events/event_dynamic.dm
index 99b4855d73..9f8eca869c 100644
--- a/code/modules/events/event_dynamic.dm
+++ b/code/modules/events/event_dynamic.dm
@@ -196,13 +196,13 @@ var/list/event_last_fired = list()
if(istype(M, /mob/living/silicon/robot))
var/mob/living/silicon/robot/R = M
if(R.module)
- if(istype(R.module, /obj/item/weapon/robot_module/engineering))
+ if(istype(R.module, /obj/item/weapon/robot_module/robot/engineering))
active_with_role["Engineer"]++
- else if(istype(R.module, /obj/item/weapon/robot_module/security))
+ else if(istype(R.module, /obj/item/weapon/robot_module/robot/security))
active_with_role["Security"]++
- else if(istype(R.module, /obj/item/weapon/robot_module/medical))
+ else if(istype(R.module, /obj/item/weapon/robot_module/robot/medical))
active_with_role["Medical"]++
- else if(istype(R.module, /obj/item/weapon/robot_module/research))
+ else if(istype(R.module, /obj/item/weapon/robot_module/robot/research))
active_with_role["Scientist"]++
if(M.mind.assigned_role in engineering_positions)
diff --git a/code/modules/hydroponics/_hydro_setup.dm b/code/modules/hydroponics/_hydro_setup.dm
index 4641aa3ace..28c468aa4e 100644
--- a/code/modules/hydroponics/_hydro_setup.dm
+++ b/code/modules/hydroponics/_hydro_setup.dm
@@ -1,5 +1,6 @@
//Misc
#define DEAD_PLANT_COLOUR "#C2A180"
+#define FROZEN_PLANT_COLOUR "#CCFFFF"
// Definitions for genes (trait groupings)
#define GENE_BIOCHEMISTRY "biochemistry"
diff --git a/code/modules/hydroponics/trays/tray.dm b/code/modules/hydroponics/trays/tray.dm
index cfafd90ea2..ce48a8f11d 100644
--- a/code/modules/hydroponics/trays/tray.dm
+++ b/code/modules/hydroponics/trays/tray.dm
@@ -38,10 +38,12 @@
var/force_update // Set this to bypass the cycle time check.
var/obj/temp_chem_holder // Something to hold reagents during process_reagents()
var/labelled
+ var/frozen = 0 //Is the plant frozen? -1 is used to define trays that can't be frozen. 0 is unfrozen and 1 is frozen.
// Seed details/line data.
var/datum/seed/seed = null // The currently planted seed
+
// Reagent information for process(), consider moving this to a controller along
// with cycle information under 'mechanical concerns' at some point.
var/global/list/toxic_reagents = list(
@@ -421,7 +423,7 @@
/obj/machinery/portable_atmospherics/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
- if (O.is_open_container())
+ if(O.is_open_container())
return 0
if(istype(O, /obj/item/weapon/wirecutters) || istype(O, /obj/item/weapon/scalpel))
@@ -494,6 +496,7 @@
qdel(O)
check_health()
+ update_icon()
else
user << "\The [src] already has seeds in it!"
@@ -539,12 +542,25 @@
anchored = !anchored
user << "You [anchored ? "wrench" : "unwrench"] \the [src]."
+ else if(istype(O,/obj/item/device/multitool))
+ if(!anchored)
+ to_chat(user, "Anchor it first!")
+ return
+ if(frozen == -1)
+ to_chat(user, "You see no way to use \the [O] on [src].")
+ return
+ to_chat(user, "You [frozen ? "disable" : "enable"] the cryogenic freezing.")
+ frozen = !frozen
+ update_icon()
+ return
+
else if(O.force && seed)
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
user.visible_message("\The [seed.display_name] has been attacked by [user] with \the [O]!")
if(!dead)
health -= O.force
check_health()
+
return
/obj/machinery/portable_atmospherics/hydroponics/attack_tk(mob/user as mob)
@@ -557,7 +573,8 @@
if(istype(usr,/mob/living/silicon))
return
-
+ if(frozen == 1)
+ to_chat(user, "Disable the cryogenic freezing first!")
if(harvest)
harvest(user)
else if(dead)
@@ -587,7 +604,8 @@
usr << "The plant is dead."
else if(health <= (seed.get_trait(TRAIT_ENDURANCE)/ 2))
usr << "The plant looks unhealthy."
-
+ if(frozen == 1)
+ to_chat(usr, "It is cryogenically frozen.")
if(mechanical)
var/turf/T = loc
var/datum/gas_mixture/environment
diff --git a/code/modules/hydroponics/trays/tray_process.dm b/code/modules/hydroponics/trays/tray_process.dm
index ba89155748..44f40b74fd 100644
--- a/code/modules/hydroponics/trays/tray_process.dm
+++ b/code/modules/hydroponics/trays/tray_process.dm
@@ -1,4 +1,6 @@
/obj/machinery/portable_atmospherics/hydroponics/process()
+ if(frozen == 1)
+ return
// Handle nearby smoke if any.
for(var/obj/effect/effect/smoke/chem/smoke in view(1, src))
diff --git a/code/modules/hydroponics/trays/tray_soil.dm b/code/modules/hydroponics/trays/tray_soil.dm
index 1ad67c6d2e..d6297a6766 100644
--- a/code/modules/hydroponics/trays/tray_soil.dm
+++ b/code/modules/hydroponics/trays/tray_soil.dm
@@ -5,6 +5,7 @@
use_power = 0
mechanical = 0
tray_light = 0
+ frozen = -1
/obj/machinery/portable_atmospherics/hydroponics/soil/attackby(var/obj/item/O as obj, var/mob/user as mob)
if(istype(O,/obj/item/weapon/tank))
diff --git a/code/modules/hydroponics/trays/tray_tools.dm b/code/modules/hydroponics/trays/tray_tools.dm
index 856af9b3e8..6c6a8ddbe3 100644
--- a/code/modules/hydroponics/trays/tray_tools.dm
+++ b/code/modules/hydroponics/trays/tray_tools.dm
@@ -70,6 +70,9 @@
else if(istype(target,/obj/machinery/portable_atmospherics/hydroponics))
var/obj/machinery/portable_atmospherics/hydroponics/H = target
+ if(H.frozen == 1)
+ to_chat(user, "Disable the cryogenic freezing first!")
+ return
grown_seed = H.seed
grown_reagents = H.reagents
diff --git a/code/modules/hydroponics/trays/tray_update_icons.dm b/code/modules/hydroponics/trays/tray_update_icons.dm
index 47e6b82ba6..cf790269a2 100644
--- a/code/modules/hydroponics/trays/tray_update_icons.dm
+++ b/code/modules/hydroponics/trays/tray_update_icons.dm
@@ -42,6 +42,9 @@
overlay_stage = maturation ? max(1,round(age/maturation)) : 1
var/ikey = "[seed.get_trait(TRAIT_PLANT_ICON)]-[overlay_stage]"
var/image/plant_overlay = plant_controller.plant_icon_cache["[ikey]-[seed.get_trait(TRAIT_PLANT_COLOUR)]"]
+ if(frozen == 1)
+ plant_overlay = image('icons/obj/hydroponics_growing.dmi', "[ikey]")
+ plant_overlay.color = FROZEN_PLANT_COLOUR
if(!plant_overlay)
plant_overlay = image('icons/obj/hydroponics_growing.dmi', "[ikey]")
plant_overlay.color = seed.get_trait(TRAIT_PLANT_COLOUR)
@@ -57,6 +60,7 @@
plant_controller.plant_icon_cache["product-[ikey]-[seed.get_trait(TRAIT_PRODUCT_COLOUR)]"] = harvest_overlay
overlays |= harvest_overlay
+
//Draw the cover.
if(closed_system)
overlays += "hydrocover"
@@ -71,6 +75,8 @@
overlays += "over_alert3"
if(harvest)
overlays += "over_harvest3"
+ if(frozen)
+ overlays += "over_frozen3"
// Update bioluminescence.
if(seed)
diff --git a/code/modules/materials/material_recipes.dm b/code/modules/materials/material_recipes.dm
index 4fba3b5025..74c00c36d9 100644
--- a/code/modules/materials/material_recipes.dm
+++ b/code/modules/materials/material_recipes.dm
@@ -118,6 +118,7 @@
/material/wood/generate_recipes()
..()
recipes += new/datum/stack_recipe("wooden sandals", /obj/item/clothing/shoes/sandal, 1)
+ recipes += new/datum/stack_recipe("clipboard", /obj/item/weapon/clipboard, 1)
recipes += new/datum/stack_recipe("wood floor tile", /obj/item/stack/tile/wood, 1, 4, 20)
recipes += new/datum/stack_recipe("wooden chair", /obj/structure/bed/chair/wood, 3, time = 10, one_per_turf = 1, on_floor = 1)
recipes += new/datum/stack_recipe("crossbow frame", /obj/item/weapon/crossbowframe, 5, time = 25, one_per_turf = 0, on_floor = 0)
diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm
index 711b3a13d0..343b8e4225 100644
--- a/code/modules/mob/hear_say.dm
+++ b/code/modules/mob/hear_say.dm
@@ -215,9 +215,17 @@
return
if(say_understands(speaker, language))
- message = "[src] [verb], \"[message]\""
+ message = "[speaker] [verb], \"[message]\""
else
- message = "[src] [verb]."
+ var/adverb
+ var/length = length(message) * pick(0.8, 0.9, 1.0, 1.1, 1.2) //Adds a little bit of fuzziness
+ switch(length)
+ if(0 to 12) adverb = " briefly"
+ if(12 to 30) adverb = " a short message"
+ if(30 to 48) adverb = " a message"
+ if(48 to 90) adverb = " a lengthy message"
+ else adverb = " a very lengthy message"
+ message = "[speaker] [verb][adverb]."
if(src.status_flags & PASSEMOTES)
for(var/obj/item/weapon/holder/H in src.contents)
diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm
index 1c6e2436d4..e89dd9cacd 100644
--- a/code/modules/mob/inventory.dm
+++ b/code/modules/mob/inventory.dm
@@ -48,6 +48,8 @@ var/list/slot_equipment_priority = list( \
//set disable_warning to disable the 'you are unable to equip that' warning.
//unset redraw_mob to prevent the mob from being redrawn at the end.
/mob/proc/equip_to_slot_if_possible(obj/item/W as obj, slot, del_on_fail = 0, disable_warning = 0, redraw_mob = 1)
+ if(!W)
+ return 0
if(!W.mob_can_equip(src, slot))
if(del_on_fail)
qdel(W)
diff --git a/code/modules/mob/language/generic.dm b/code/modules/mob/language/generic.dm
index 1b07e4ed8c..8e22cd0493 100644
--- a/code/modules/mob/language/generic.dm
+++ b/code/modules/mob/language/generic.dm
@@ -113,3 +113,11 @@
"le", "me", "nd", "ne", "ng", "nt", "on", "or", "ou", "re", "se", "st", "te", "th", "ti", "to",
"ve", "wa", "all", "and", "are", "but", "ent", "era", "ere", "eve", "for", "had", "hat", "hen", "her", "hin",
"his", "ing", "ion", "ith", "not", "ome", "oul", "our", "sho", "ted", "ter", "tha", "the", "thi")
+
+/datum/language/sign
+ name = "Sign Language"
+ desc = "A sign language commonly used for those who are deaf or mute."
+ signlang_verb = list("gestures")
+ colour = "say_quote"
+ key = "s"
+ flags = SIGNLANG|NO_STUTTER|NONVERBAL
\ No newline at end of file
diff --git a/code/modules/mob/language/language.dm b/code/modules/mob/language/language.dm
index 372409b443..f3d59d3649 100644
--- a/code/modules/mob/language/language.dm
+++ b/code/modules/mob/language/language.dm
@@ -18,6 +18,7 @@
var/native // If set, non-native speakers will have trouble speaking.
var/list/syllables // Used when scrambling text for a non-speaker.
var/list/space_chance = 55 // Likelihood of getting a space in the random scramble string
+ var/machine_understands = 1 // Whether machines can parse and understand this language
/datum/language/proc/get_random_name(var/gender, name_count=2, syllable_count=4, syllable_divisor=2)
if(!syllables || !syllables.len)
@@ -202,8 +203,10 @@
if(!(L.flags & NONGLOBAL))
if(L == default_language)
dat += "[L.name] ([get_language_prefix()][L.key]) - default - reset
[L.desc]
"
- else
+ else if (can_speak(L))
dat += "[L.name] ([get_language_prefix()][L.key]) - set default
[L.desc]
"
+ else
+ dat += "[L.name] ([get_language_prefix()][L.key]) - cannot speak!
[L.desc]
"
src << browse(dat, "window=checklanguage")
diff --git a/code/modules/mob/language/outsider.dm b/code/modules/mob/language/outsider.dm
index d427dcbfb6..f8634f8f54 100644
--- a/code/modules/mob/language/outsider.dm
+++ b/code/modules/mob/language/outsider.dm
@@ -47,6 +47,7 @@
key = "f"
flags = RESTRICTED
space_chance = 100
+ machine_understands = 0
syllables = list("ire","ego","nahlizet","certum","veri","jatkaa","mgar","balaq", "karazet", "geeri", \
"orkan", "allaq", "sas'so", "c'arta", "forbici", "tarem", "n'ath", "reth", "sh'yro", "eth", "d'raggathnor", \
"mah'weyh", "pleggh", "at", "e'ntrath", "tok-lyr", "rqa'nap", "g'lt-ulotf", "ta'gh", "fara'qha", "fel", "d'amar det", \
diff --git a/code/modules/mob/language/station.dm b/code/modules/mob/language/station.dm
index 8265eb9e80..77cb8f1ad5 100644
--- a/code/modules/mob/language/station.dm
+++ b/code/modules/mob/language/station.dm
@@ -116,7 +116,9 @@
space_chance = 10
/datum/language/machine/can_speak_special(var/mob/speaker)
- return speaker.isSynthetic()
+ var/obj/item/weapon/implant/language/eal/beep = locate() in speaker
+ return ((beep && beep.implanted) || speaker.isSynthetic())
+ //thank you sweet zuhayr
/datum/language/machine/get_random_name()
if(prob(70))
diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm
index 3de8e1b6fc..5e416755e0 100644
--- a/code/modules/mob/living/carbon/alien/alien.dm
+++ b/code/modules/mob/living/carbon/alien/alien.dm
@@ -16,6 +16,9 @@
var/time_of_birth
var/language
var/death_msg = "lets out a waning guttural screech, green blood bubbling from its maw."
+ var/can_namepick_as_adult = 0
+ var/adult_name
+ var/instance_num
/mob/living/carbon/alien/New()
@@ -24,7 +27,8 @@
verbs += /mob/living/proc/ventcrawl
verbs += /mob/living/proc/hide
- name = "[initial(name)] ([rand(1, 1000)])"
+ instance_num = rand(1, 1000)
+ name = "[initial(name)] ([instance_num])"
real_name = name
regenerate_icons()
diff --git a/code/modules/mob/living/carbon/alien/diona/diona.dm b/code/modules/mob/living/carbon/alien/diona/diona.dm
index 74923ae59a..ba8932ebf9 100644
--- a/code/modules/mob/living/carbon/alien/diona/diona.dm
+++ b/code/modules/mob/living/carbon/alien/diona/diona.dm
@@ -2,6 +2,8 @@
name = "diona nymph"
voice_name = "diona nymph"
adult_form = /mob/living/carbon/human
+ can_namepick_as_adult = 1
+ adult_name = "diona gestalt"
speak_emote = list("chirrups")
icon_state = "nymph"
item_state = "nymph"
diff --git a/code/modules/mob/living/carbon/alien/progression.dm b/code/modules/mob/living/carbon/alien/progression.dm
index 1ec266e9cb..371058511b 100644
--- a/code/modules/mob/living/carbon/alien/progression.dm
+++ b/code/modules/mob/living/carbon/alien/progression.dm
@@ -28,9 +28,15 @@
adult.set_species(new_species)
show_evolution_blurb()
- adult.name = input(src,"Choose a name for yourself (please stick to any appropriate naming conventions).") as text|null
if(mind)
mind.transfer_to(adult)
+ if (can_namepick_as_adult)
+ var/newname = sanitize(input(adult, "You have become an adult. Choose a name for yourself.", "Adult Name") as null|text, MAX_NAME_LEN)
+
+ if(!newname)
+ adult.fully_replace_character_name(name, "[src.adult_name] ([instance_num])")
+ else
+ adult.fully_replace_character_name(name, newname)
else
adult.key = src.key
diff --git a/code/modules/mob/living/carbon/brain/MMI.dm b/code/modules/mob/living/carbon/brain/MMI.dm
index 3f0fa31708..40930700d1 100644
--- a/code/modules/mob/living/carbon/brain/MMI.dm
+++ b/code/modules/mob/living/carbon/brain/MMI.dm
@@ -3,6 +3,7 @@
/obj/item/device/mmi/digital/New()
src.brainmob = new(src)
src.brainmob.add_language("Robot Talk")
+ src.brainmob.add_language("Encoded Audio Language")
src.brainmob.loc = src
src.brainmob.container = src
src.brainmob.stat = 0
diff --git a/code/modules/mob/living/carbon/brain/brain.dm b/code/modules/mob/living/carbon/brain/brain.dm
index aaf947a13d..0f4db8c1eb 100644
--- a/code/modules/mob/living/carbon/brain/brain.dm
+++ b/code/modules/mob/living/carbon/brain/brain.dm
@@ -57,5 +57,8 @@
canmove = 0
return canmove
-/mob/living/carbon/brain/binarycheck()
+/mob/living/carbon/brain/isSynthetic()
return istype(loc, /obj/item/device/mmi/digital)
+
+/mob/living/carbon/brain/binarycheck()
+ return isSynthetic()
diff --git a/code/modules/mob/living/carbon/brain/robot.dm b/code/modules/mob/living/carbon/brain/robot.dm
index d870751dc1..0c21f37eea 100644
--- a/code/modules/mob/living/carbon/brain/robot.dm
+++ b/code/modules/mob/living/carbon/brain/robot.dm
@@ -10,6 +10,7 @@
..()
src.brainmob.name = "[pick(list("ADA","DOS","GNU","MAC","WIN"))]-[rand(1000, 9999)]"
src.brainmob.real_name = src.brainmob.name
+ src.name = "robotic intelligence circuit ([src.brainmob.name])"
/obj/item/device/mmi/digital/robot/transfer_identity(var/mob/living/carbon/H)
..()
@@ -17,3 +18,6 @@
brainmob.mind.assigned_role = "Robotic Intelligence"
brainmob << "You feel slightly disoriented. That's normal when you're little more than a complex circuit."
return
+
+/obj/item/device/mmi/digital/robot/attack_self(mob/user as mob)
+ return //This object is technically a brain, and should not be dumping brains out of itself like its parent object does.
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 4eaf5aa8fe..5ca686cae3 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -94,7 +94,7 @@
return
-/mob/living/carbon/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/def_zone = null)
+/mob/living/carbon/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/def_zone = null, var/stun = 1)
if(status_flags & GODMODE) return 0 //godmode
shock_damage *= siemens_coeff
if (shock_damage<1)
@@ -108,8 +108,9 @@
"\red You feel a powerful shock course through your body!", \
"\red You hear a heavy electrical crack." \
)
- Stun(10)//This should work for now, more is really silly and makes you lay there forever
- Weaken(10)
+ if(stun)
+ Stun(10)//This should work for now, more is really silly and makes you lay there forever
+ Weaken(10)
else
src.visible_message(
"\red [src] was mildly shocked by \the [source].", \
@@ -445,7 +446,7 @@
chem_effects[effect] = magnitude
/mob/living/carbon/get_default_language()
- if(default_language)
+ if(default_language && can_speak(default_language))
return default_language
if(!species)
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index adf57596dc..e613397288 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -4,6 +4,8 @@
var/skipjumpsuit = 0
var/skipshoes = 0
var/skipmask = 0
+ var/skiptie = 0
+ var/skipholster = 0
var/skipears = 0
var/skipeyes = 0
@@ -25,6 +27,14 @@
skiplegs |= 1
skipchest |= 1
skipgroin |= 1
+ skipjumpsuit |= 1
+ skiptie |= 1
+ skipholster |= 1
+ else if(wear_suit.flags_inv & HIDETIE)
+ skiptie |= 1
+ skipholster |= 1
+ else if(wear_suit.flags_inv & HIDEHOLSTER)
+ skipholster |= 1
if(wear_suit.flags_inv & HIDESHOES)
skipshoes |= 1
skipfeet |= 1
@@ -107,10 +117,17 @@
if(w_uniform && !skipjumpsuit)
//Ties
var/tie_msg
- if(istype(w_uniform,/obj/item/clothing/under))
+ if(istype(w_uniform,/obj/item/clothing/under) && !skiptie)
var/obj/item/clothing/under/U = w_uniform
if(U.accessories.len)
- tie_msg += ". Attached to it is [lowertext(english_list(U.accessories))]"
+ if(skipholster)
+ var/list/accessories_visible = new/list() //please let this fix the stupid fucking runtimes
+ for(var/obj/item/clothing/accessory/A in U.accessories)
+ if(A.concealed_holster == 0)
+ accessories_visible.Add(A)
+ if(accessories_visible.len)
+ tie_msg += ". Attached to it is [lowertext(english_list(accessories_visible))]"
+ else tie_msg += ". Attached to it is [lowertext(english_list(U.accessories))]"
if(w_uniform.blood_DNA)
msg += "[T.He] [T.is] wearing \icon[w_uniform] [w_uniform.gender==PLURAL?"some":"a"] [(w_uniform.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [w_uniform.name][tie_msg]!\n"
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index da74c73f85..c8cca9dba1 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -155,6 +155,15 @@
update |= temp.take_damage(b_loss * 0.05, f_loss * 0.05, used_weapon = weapon_message)
if(update) UpdateDamageIcon()
+/mob/living/carbon/human/proc/implant_loadout(var/datum/gear/G = new/datum/gear/utility/implant)
+ var/obj/item/weapon/implant/I = new G.path(src)
+ I.imp_in = src
+ I.implanted = 1
+ var/obj/item/organ/external/affected = src.organs_by_name[BP_HEAD]
+ affected.implants += I
+ I.part = affected
+ I.implanted(src)
+
/mob/living/carbon/human/proc/implant_loyalty(override = FALSE) // Won't override by default.
if(!config.use_loyalty_implants && !override) return // Nuh-uh.
diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm
index daaebc1760..f119ec5d6a 100644
--- a/code/modules/mob/living/carbon/human/human_attackhand.dm
+++ b/code/modules/mob/living/carbon/human/human_attackhand.dm
@@ -60,7 +60,7 @@
if (istype(H) && attempt_to_scoop(H))
return 0;
// VOREStation Edit - End
- if(istype(H) && health < config.health_threshold_crit && health > config.health_threshold_dead)
+ if(istype(H) && health < config.health_threshold_crit)
if(!H.check_has_mouth())
H << "You don't have a mouth, you cannot perform CPR!"
return
@@ -86,12 +86,14 @@
if(!do_after(H, 30))
return
- adjustOxyLoss(-(min(getOxyLoss(), 5)))
- updatehealth()
H.visible_message("\The [H] performs CPR on \the [src]!")
- src << "You feel a breath of fresh air enter your lungs. It feels good."
H << "Repeat at least every 7 seconds."
+ if(istype(H) && health > config.health_threshold_dead)
+ adjustOxyLoss(-(min(getOxyLoss(), 5)))
+ updatehealth()
+ src << "You feel a breath of fresh air enter your lungs. It feels good."
+
else if(!(M == src && apply_pressure(M, M.zone_sel.selecting)))
help_shake_act(M)
return 1
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index c3b43966c7..c529f0cfc5 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -24,6 +24,9 @@ emp_act
else // Otherwise we blocked normally and stopped all the damage.
return 0
+ if(!P.nodamage)
+ organ.add_autopsy_data("[P.name]", P.damage)
+
//Shrapnel
if(P.can_embed())
var/armor = getarmor_organ(organ, "bullet")
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 3e0d3a4b63..5cf0d752a6 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -216,11 +216,12 @@
// DNA2 - Gene processing.
// The HULK stuff that was here is now in the hulk gene.
- for(var/datum/dna/gene/gene in dna_genes)
- if(!gene.block)
- continue
- if(gene.is_active(src))
- gene.OnMobLife(src)
+ if(!isSynthetic())
+ for(var/datum/dna/gene/gene in dna_genes)
+ if(!gene.block)
+ continue
+ if(gene.is_active(src))
+ gene.OnMobLife(src)
radiation = Clamp(radiation,0,100)
@@ -343,14 +344,14 @@
else
adjustOxyLoss(HUMAN_CRIT_MAX_OXYLOSS)
- if(should_have_organ(O_LUNGS))
+ if(breath && should_have_organ(O_LUNGS))
var/obj/item/organ/internal/lungs/L = internal_organs_by_name[O_LUNGS]
if(!L.is_bruised() && prob(8))
- if(breath.total_moles)
- if(breath.total_moles < BREATH_MOLES / 5 || breath.total_moles > BREATH_MOLES * 5)
- rupture_lung()
- else
- rupture_lung()
+ rupture_lung()
+
+ if(should_have_organ("brain"))
+ if(prob(5))
+ adjustBrainLoss(0.02 * oxyloss) //2% of your current oxyloss is applied as brain damage, 50 oxyloss is 1 brain damage
oxygen_alert = max(oxygen_alert, 1)
@@ -368,6 +369,10 @@
safe_pressure_min *= 1.5
else if(L.is_bruised())
safe_pressure_min *= 1.25
+ else if(breath)
+ if(breath.total_moles < BREATH_MOLES / 10 || breath.total_moles > BREATH_MOLES * 5)
+ if (prob(8))
+ rupture_lung()
var/safe_exhaled_max = 10
var/safe_toxins_max = 0.2
diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm
index 8af22b306e..83dc3ccd57 100644
--- a/code/modules/mob/living/carbon/human/species/station/station.dm
+++ b/code/modules/mob/living/carbon/human/species/station/station.dm
@@ -159,6 +159,8 @@
min_age = 19
max_age = 80
+ darksight = 4
+
spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED
appearance_flags = HAS_HAIR_COLOR | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR
@@ -167,6 +169,15 @@
base_color = "#006666"
//reagent_tag = IS_SKRELL //VOREStation Removal
+ cold_level_1 = 280 //Default 260 - Lower is better
+ cold_level_2 = 220 //Default 200
+ cold_level_3 = 130 //Default 120
+
+ heat_level_1 = 420 //Default 360 - Higher is better
+ heat_level_2 = 480 //Default 400
+ heat_level_3 = 1100 //Default 1000
+
+ reagent_tag = IS_SKRELL
has_limbs = list(
BP_TORSO = list("path" = /obj/item/organ/external/chest),
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index 5c6868edc0..2ca8b212b0 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -110,29 +110,30 @@ Please contact me on #coderbus IRC. ~Carn x
#define DAMAGE_LAYER 2
#define SURGERY_LEVEL 3 //bs12 specific.
#define UNDERWEAR_LAYER 4
-#define UNIFORM_LAYER 5
-#define ID_LAYER 6
-#define SHOES_LAYER 7
-#define GLOVES_LAYER 8
-#define BELT_LAYER 9
-#define SUIT_LAYER 10
-#define TAIL_LAYER 11 //bs12 specific. this hack is probably gonna come back to haunt me
-#define GLASSES_LAYER 12
-#define BELT_LAYER_ALT 13
-#define SUIT_STORE_LAYER 14
-#define BACK_LAYER 15
-#define HAIR_LAYER 16 //TODO: make part of head layer?
-#define EARS_LAYER 17
-#define FACEMASK_LAYER 18
-#define HEAD_LAYER 19
-#define COLLAR_LAYER 20
-#define HANDCUFF_LAYER 21
-#define LEGCUFF_LAYER 22
-#define L_HAND_LAYER 23
-#define R_HAND_LAYER 24
-#define FIRE_LAYER 25 //If you're on fire
-#define TARGETED_LAYER 26 //BS12: Layer for the target overlay from weapon targeting system
-#define TOTAL_LAYERS 26
+#define SHOES_LAYER_ALT 5
+#define UNIFORM_LAYER 6
+#define ID_LAYER 7
+#define SHOES_LAYER 8
+#define GLOVES_LAYER 9
+#define BELT_LAYER 10
+#define SUIT_LAYER 11
+#define TAIL_LAYER 12 //bs12 specific.
+#define GLASSES_LAYER 13
+#define BELT_LAYER_ALT 14
+#define SUIT_STORE_LAYER 15
+#define BACK_LAYER 16
+#define HAIR_LAYER 17 //TODO: make part of head layer?
+#define EARS_LAYER 18
+#define FACEMASK_LAYER 19
+#define HEAD_LAYER 20
+#define COLLAR_LAYER 21
+#define HANDCUFF_LAYER 22
+#define LEGCUFF_LAYER 23
+#define L_HAND_LAYER 24
+#define R_HAND_LAYER 25
+#define FIRE_LAYER 26 //If you're on fire
+#define TARGETED_LAYER 27 //BS12: Layer for the target overlay from weapon targeting system
+#define TOTAL_LAYERS 27
//////////////////////////////////
/mob/living/carbon/human
@@ -475,7 +476,7 @@ var/global/list/damage_icon_parts = list()
//vvvvvv UPDATE_INV PROCS vvvvvv
/mob/living/carbon/human/update_inv_w_uniform(var/update_icons=1)
- if(w_uniform && istype(w_uniform, /obj/item/clothing/under) )
+ if( (w_uniform && istype(w_uniform, /obj/item/clothing/under)) && !(wear_suit && istype(wear_suit, /obj/item/clothing/suit/space) && wear_suit.flags_inv & HIDEJUMPSUIT && !istype(wear_suit, /obj/item/clothing/suit/space/rig) ))
w_uniform.screen_loc = ui_iclothing
//determine the icon to use
@@ -519,7 +520,7 @@ var/global/list/damage_icon_parts = list()
overlays_standing[UNIFORM_LAYER] = null
//hiding/revealing shoes if necessary
- update_inv_shoes(0)
+ update_inv_shoes(1)
if(update_icons)
update_icons()
@@ -647,12 +648,22 @@ var/global/list/damage_icon_parts = list()
else
standing = image("icon" = 'icons/mob/feet.dmi', "icon_state" = "[shoes.icon_state]")
+ var/shoe_layer = SHOES_LAYER
+ if(istype(shoes, /obj/item/clothing/shoes))
+ var/obj/item/clothing/shoes/ushoes = shoes
+ if(ushoes.shoes_under_pants == 1)
+ overlays_standing[SHOES_LAYER] = null
+ shoe_layer = SHOES_LAYER_ALT
+ else
+ overlays_standing[SHOES_LAYER_ALT] = null
+ shoe_layer = SHOES_LAYER
+
if(shoes.blood_DNA)
var/image/bloodsies = image("icon" = species.get_blood_mask(src), "icon_state" = "shoeblood")
bloodsies.color = shoes.blood_color
standing.overlays += bloodsies
standing.color = shoes.color
- overlays_standing[SHOES_LAYER] = standing
+ overlays_standing[shoe_layer] = standing
else
if(feet_blood_DNA)
var/image/bloodsies = image("icon" = species.get_blood_mask(src), "icon_state" = "shoeblood")
@@ -660,6 +671,7 @@ var/global/list/damage_icon_parts = list()
overlays_standing[SHOES_LAYER] = bloodsies
else
overlays_standing[SHOES_LAYER] = null
+ overlays_standing[SHOES_LAYER_ALT] = null
if(update_icons) update_icons()
/mob/living/carbon/human/update_inv_s_store(var/update_icons=1)
@@ -808,16 +820,15 @@ var/global/list/damage_icon_parts = list()
standing.overlays |= A.get_mob_overlay()
overlays_standing[SUIT_LAYER] = standing
- update_tail_showing(0)
else
overlays_standing[SUIT_LAYER] = null
- update_tail_showing(0)
+ //Hide/show other layers if necessary
update_collar(0)
-
- //hide/show shoes if necessary
+ update_inv_w_uniform(0)
update_inv_shoes(0)
+ update_tail_showing(0)
if(update_icons) update_icons()
diff --git a/code/modules/mob/living/default_language.dm b/code/modules/mob/living/default_language.dm
index eb4d3d032f..5204fb879b 100644
--- a/code/modules/mob/living/default_language.dm
+++ b/code/modules/mob/living/default_language.dm
@@ -5,6 +5,10 @@
set name = "Set Default Language"
set category = "IC"
+ if(language && !can_speak(language))
+ src << "You are unable to speak that language."
+ return
+
if(language)
src << "You will now speak [language] if you do not specify a language when speaking."
else
diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm
index 3c10a525d5..3e707b7c4c 100644
--- a/code/modules/mob/living/life.dm
+++ b/code/modules/mob/living/life.dm
@@ -17,8 +17,7 @@
//Mutations and radiation
handle_mutations_and_radiation()
- //Chemicals in the body
- handle_chemicals_in_body()
+
//Blood
handle_blood()
@@ -30,6 +29,9 @@
. = 1
+ //Chemicals in the body, this is moved over here so that blood can be added after death
+ handle_chemicals_in_body()
+
//Handle temperature/pressure differences between body and environment
if(environment)
handle_environment(environment)
diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm
index ab26507a2a..ed6ae3358c 100644
--- a/code/modules/mob/living/say.dm
+++ b/code/modules/mob/living/say.dm
@@ -177,7 +177,7 @@ proc/get_radio_key_from_channel(var/channel)
return 1
//Self explanatory.
- if(is_muzzled())
+ if(is_muzzled() && !(speaking && (speaking.flags & SIGNLANG)))
src << "You're muzzled and cannot speak!"
return
@@ -204,7 +204,7 @@ proc/get_radio_key_from_channel(var/channel)
w_not_heard = "[speaking.speech_verb] something [w_adverb]"
//For speech disorders (hulk, slurring, stuttering)
- if(!(speaking && (speaking.flags & NO_STUTTER)))
+ if(!(speaking && (speaking.flags & NO_STUTTER || speaking.flags & SIGNLANG)))
var/list/message_data = list(message, verb, whispering)
if(handle_speech_problems(message_data))
message = message_data[1]
@@ -264,6 +264,7 @@ proc/get_radio_key_from_channel(var/channel)
src.custom_emote(1, "[pick(speaking.signlang_verb)].")
if (speaking.flags & SIGNLANG)
+ log_say("[name]/[key] : SIGN: [message]")
return say_signlang(message, pick(speaking.signlang_verb), speaking)
//These will contain the main receivers of the message
diff --git a/code/modules/mob/living/silicon/robot/emote.dm b/code/modules/mob/living/silicon/robot/emote.dm
index 7f2102a860..36a7e4511d 100644
--- a/code/modules/mob/living/silicon/robot/emote.dm
+++ b/code/modules/mob/living/silicon/robot/emote.dm
@@ -220,7 +220,7 @@
m_type = 1
if("law")
- if (istype(module,/obj/item/weapon/robot_module/security))
+ if (istype(module,/obj/item/weapon/robot_module/robot/security))
message = "shows its legal authorization barcode."
playsound(src.loc, 'sound/voice/biamthelaw.ogg', 50, 0)
@@ -229,7 +229,7 @@
src << "You are not THE LAW, pal."
if("halt")
- if (istype(module,/obj/item/weapon/robot_module/security))
+ if (istype(module,/obj/item/weapon/robot_module/robot/security))
message = "[src]'s speakers skreech, \"Halt! Security!\"."
playsound(src.loc, 'sound/voice/halt.ogg', 50, 0)
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index fb69bdd672..46e426c7b2 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -827,7 +827,7 @@
. = ..()
if(module)
- if(module.type == /obj/item/weapon/robot_module/janitor)
+ if(module.type == /obj/item/weapon/robot_module/robot/janitor)
var/turf/tile = loc
if(isturf(tile))
tile.clean_blood()
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index 9dee58c29e..8b6161d049 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -1,16 +1,16 @@
var/global/list/robot_modules = list(
- "Standard" = /obj/item/weapon/robot_module/standard,
- "Service" = /obj/item/weapon/robot_module/clerical/butler,
- "Clerical" = /obj/item/weapon/robot_module/clerical/general,
- "Research" = /obj/item/weapon/robot_module/research,
- "Miner" = /obj/item/weapon/robot_module/miner,
- "Crisis" = /obj/item/weapon/robot_module/medical/crisis,
- "Surgeon" = /obj/item/weapon/robot_module/medical/surgeon,
- "Security" = /obj/item/weapon/robot_module/security/general,
- "Combat" = /obj/item/weapon/robot_module/security/combat,
- "Engineering" = /obj/item/weapon/robot_module/engineering/general,
- "Construction" = /obj/item/weapon/robot_module/engineering/construction,
- "Janitor" = /obj/item/weapon/robot_module/janitor
+ "Standard" = /obj/item/weapon/robot_module/robot/standard,
+ "Service" = /obj/item/weapon/robot_module/robot/clerical/butler,
+ "Clerical" = /obj/item/weapon/robot_module/robot/clerical/general,
+ "Research" = /obj/item/weapon/robot_module/robot/research,
+ "Miner" = /obj/item/weapon/robot_module/robot/miner,
+ "Crisis" = /obj/item/weapon/robot_module/robot/medical/crisis,
+ "Surgeon" = /obj/item/weapon/robot_module/robot/medical/surgeon,
+ "Security" = /obj/item/weapon/robot_module/robot/security/general,
+ "Combat" = /obj/item/weapon/robot_module/robot/security/combat,
+ "Engineering" = /obj/item/weapon/robot_module/robot/engineering/general,
+ "Construction" = /obj/item/weapon/robot_module/robot/engineering/construction,
+ "Janitor" = /obj/item/weapon/robot_module/robot/janitor
)
/obj/item/weapon/robot_module
@@ -149,7 +149,14 @@ var/global/list/robot_modules = list(
if(!can_be_pushed)
R.status_flags |= CANPUSH
-/obj/item/weapon/robot_module/standard
+// Cyborgs (non-drones), default loadout. This will be given to every module.
+/obj/item/weapon/robot_module/robot/New()
+ ..()
+ src.modules += new /obj/item/device/flash(src)
+ src.modules += new /obj/item/weapon/crowbar(src)
+ src.modules += new /obj/item/weapon/extinguisher(src)
+
+/obj/item/weapon/robot_module/robot/standard
name = "standard robot module"
sprites = list( "Basic" = "robot_old",
"Android" = "droid",
@@ -157,24 +164,21 @@ var/global/list/robot_modules = list(
"Drone" = "drone-standard"
)
-/obj/item/weapon/robot_module/standard/New()
- src.modules += new /obj/item/device/flash(src)
+/obj/item/weapon/robot_module/robot/standard/New()
+ ..()
src.modules += new /obj/item/weapon/melee/baton/loaded(src)
- src.modules += new /obj/item/weapon/extinguisher(src)
src.modules += new /obj/item/weapon/wrench(src)
- src.modules += new /obj/item/weapon/crowbar(src)
src.modules += new /obj/item/device/healthanalyzer(src)
src.emag = new /obj/item/weapon/melee/energy/sword(src)
- ..()
-/obj/item/weapon/robot_module/medical
+/obj/item/weapon/robot_module/robot/medical
name = "medical robot module"
channels = list("Medical" = 1)
networks = list(NETWORK_MEDICAL)
subsystems = list(/mob/living/silicon/proc/subsystem_crew_monitor)
can_be_pushed = 0
-/obj/item/weapon/robot_module/medical/surgeon
+/obj/item/weapon/robot_module/robot/medical/surgeon
name = "surgeon robot module"
sprites = list(
"Basic" = "Medbot",
@@ -184,8 +188,8 @@ var/global/list/robot_modules = list(
"Drone" = "drone-surgery"
)
-/obj/item/weapon/robot_module/medical/surgeon/New()
- src.modules += new /obj/item/device/flash(src)
+/obj/item/weapon/robot_module/robot/medical/surgeon/New()
+ ..()
src.modules += new /obj/item/device/healthanalyzer(src)
src.modules += new /obj/item/weapon/reagent_containers/borghypo(src)
src.modules += new /obj/item/weapon/scalpel(src)
@@ -198,7 +202,6 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/weapon/circular_saw(src)
src.modules += new /obj/item/weapon/surgicaldrill(src)
src.modules += new /obj/item/weapon/gripper/no_use/organ(src)
- src.modules += new /obj/item/weapon/extinguisher/mini(src)
src.emag = new /obj/item/weapon/reagent_containers/spray(src)
src.emag.reagents.add_reagent("pacid", 250)
src.emag.name = "Polyacid spray"
@@ -217,15 +220,13 @@ var/global/list/robot_modules = list(
src.modules += N
src.modules += B
- ..()
-
-/obj/item/weapon/robot_module/medical/surgeon/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
+/obj/item/weapon/robot_module/medical/robot/surgeon/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
if(src.emag)
var/obj/item/weapon/reagent_containers/spray/PS = src.emag
PS.reagents.add_reagent("pacid", 2 * amount)
..()
-/obj/item/weapon/robot_module/medical/crisis
+/obj/item/weapon/robot_module/robot/medical/crisis
name = "crisis robot module"
sprites = list(
"Basic" = "Medbot",
@@ -236,8 +237,8 @@ var/global/list/robot_modules = list(
"Drone - Chemistry" = "drone-chemistry"
)
-/obj/item/weapon/robot_module/medical/crisis/New()
- src.modules += new /obj/item/device/flash(src)
+/obj/item/weapon/robot_module/robot/medical/crisis/New()
+ ..()
src.modules += new /obj/item/borg/sight/hud/med(src)
src.modules += new /obj/item/device/healthanalyzer(src)
src.modules += new /obj/item/device/reagent_scanner/adv(src)
@@ -248,7 +249,6 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/weapon/reagent_containers/syringe(src)
src.modules += new /obj/item/weapon/gripper/no_use/organ(src)
src.modules += new /obj/item/weapon/gripper/chemistry(src)
- src.modules += new /obj/item/weapon/extinguisher/mini(src)
src.emag = new /obj/item/weapon/reagent_containers/spray(src)
src.emag.reagents.add_reagent("pacid", 250)
src.emag.name = "Polyacid spray"
@@ -272,9 +272,7 @@ var/global/list/robot_modules = list(
src.modules += B
src.modules += S
- ..()
-
-/obj/item/weapon/robot_module/medical/crisis/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
+/obj/item/weapon/robot_module/robot/medical/crisis/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
var/obj/item/weapon/reagent_containers/syringe/S = locate() in src.modules
if(S.mode == 2)
@@ -290,7 +288,7 @@ var/global/list/robot_modules = list(
..()
-/obj/item/weapon/robot_module/engineering
+/obj/item/weapon/robot_module/robot/engineering
name = "engineering robot module"
channels = list("Engineering" = 1)
networks = list(NETWORK_ENGINEERING)
@@ -303,18 +301,16 @@ var/global/list/robot_modules = list(
"Drone" = "drone-engineer"
)
-/obj/item/weapon/robot_module/engineering/construction
+/obj/item/weapon/robot_module/robot/engineering/construction
name = "construction robot module"
no_slip = 1
-/obj/item/weapon/robot_module/engineering/construction/New()
- src.modules += new /obj/item/device/flash(src)
+/obj/item/weapon/robot_module/robot/engineering/construction/New()
+ ..()
src.modules += new /obj/item/borg/sight/meson(src)
- src.modules += new /obj/item/weapon/extinguisher(src)
src.modules += new /obj/item/weapon/rcd/borg(src)
src.modules += new /obj/item/weapon/screwdriver(src)
src.modules += new /obj/item/weapon/wrench(src)
- src.modules += new /obj/item/weapon/crowbar(src)
src.modules += new /obj/item/weapon/weldingtool/largetank(src)
src.modules += new /obj/item/weapon/pickaxe/plasmacutter(src)
src.modules += new /obj/item/device/pipe_painter(src)
@@ -348,16 +344,12 @@ var/global/list/robot_modules = list(
RG.synths = list(metal, glass)
src.modules += RG
+/obj/item/weapon/robot_module/robot/engineering/general/New()
..()
-
-/obj/item/weapon/robot_module/engineering/general/New()
- src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/borg/sight/meson(src)
- src.modules += new /obj/item/weapon/extinguisher(src)
src.modules += new /obj/item/weapon/weldingtool/largetank(src)
src.modules += new /obj/item/weapon/screwdriver(src)
src.modules += new /obj/item/weapon/wrench(src)
- src.modules += new /obj/item/weapon/crowbar(src)
src.modules += new /obj/item/weapon/wirecutters(src)
src.modules += new /obj/item/device/multitool(src)
src.modules += new /obj/item/device/t_scanner(src)
@@ -405,9 +397,7 @@ var/global/list/robot_modules = list(
RG.synths = list(metal, glass)
src.modules += RG
- ..()
-
-/obj/item/weapon/robot_module/security
+/obj/item/weapon/robot_module/robot/security
name = "security robot module"
channels = list("Security" = 1)
networks = list(NETWORK_SECURITY)
@@ -415,7 +405,7 @@ var/global/list/robot_modules = list(
can_be_pushed = 0
supported_upgrades = list(/obj/item/borg/upgrade/tasercooler)
-/obj/item/weapon/robot_module/security/general
+/obj/item/weapon/robot_module/robot/security/general
sprites = list(
"Basic" = "secborg",
"Red Knight" = "Security",
@@ -425,8 +415,8 @@ var/global/list/robot_modules = list(
"Drone" = "drone-sec"
)
-/obj/item/weapon/robot_module/security/general/New()
- src.modules += new /obj/item/device/flash(src)
+/obj/item/weapon/robot_module/robot/security/general/New()
+ ..()
src.modules += new /obj/item/borg/sight/hud/sec(src)
src.modules += new /obj/item/weapon/handcuffs/cyborg(src)
src.modules += new /obj/item/weapon/melee/baton/robot(src)
@@ -434,9 +424,8 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/taperoll/police(src)
src.modules += new /obj/item/weapon/reagent_containers/spray/pepper(src)
src.emag = new /obj/item/weapon/gun/energy/laser/mounted(src)
- ..()
-/obj/item/weapon/robot_module/security/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
+/obj/item/weapon/robot_module/robot/security/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
var/obj/item/device/flash/F = locate() in src.modules
if(F.broken)
F.broken = 0
@@ -454,7 +443,7 @@ var/global/list/robot_modules = list(
if(B && B.bcell)
B.bcell.give(amount)
-/obj/item/weapon/robot_module/janitor
+/obj/item/weapon/robot_module/robot/janitor
name = "janitorial robot module"
channels = list("Service" = 1)
sprites = list(
@@ -464,8 +453,8 @@ var/global/list/robot_modules = list(
"Drone" = "drone-janitor"
)
-/obj/item/weapon/robot_module/janitor/New()
- src.modules += new /obj/item/device/flash(src)
+/obj/item/weapon/robot_module/robot/janitor/New()
+ ..()
src.modules += new /obj/item/weapon/soap/nanotrasen(src)
src.modules += new /obj/item/weapon/storage/bag/trash(src)
src.modules += new /obj/item/weapon/mop(src)
@@ -473,16 +462,15 @@ var/global/list/robot_modules = list(
src.emag = new /obj/item/weapon/reagent_containers/spray(src)
src.emag.reagents.add_reagent("lube", 250)
src.emag.name = "Lube spray"
- ..()
-/obj/item/weapon/robot_module/janitor/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
+/obj/item/weapon/robot_module/robot/janitor/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
var/obj/item/device/lightreplacer/LR = locate() in src.modules
LR.Charge(R, amount)
if(src.emag)
var/obj/item/weapon/reagent_containers/spray/S = src.emag
S.reagents.add_reagent("lube", 2 * amount)
-/obj/item/weapon/robot_module/clerical
+/obj/item/weapon/robot_module/robot/clerical
name = "service robot module"
channels = list("Service" = 1)
languages = list(
@@ -496,7 +484,7 @@ var/global/list/robot_modules = list(
LANGUAGE_SCHECHI = 1
)
-/obj/item/weapon/robot_module/clerical/butler
+/obj/item/weapon/robot_module/robot/clerical/butler
sprites = list( "Waitress" = "Service",
"Kent" = "toiletbot",
"Bro" = "Brobot",
@@ -506,8 +494,8 @@ var/global/list/robot_modules = list(
"Drone - Hydro" = "drone-hydro"
)
-/obj/item/weapon/robot_module/clerical/butler/New()
- src.modules += new /obj/item/device/flash(src)
+/obj/item/weapon/robot_module/robot/clerical/butler/New()
+ ..()
src.modules += new /obj/item/weapon/gripper/service(src)
src.modules += new /obj/item/weapon/reagent_containers/glass/bucket(src)
src.modules += new /obj/item/weapon/material/minihoe(src)
@@ -537,9 +525,8 @@ var/global/list/robot_modules = list(
R.my_atom = src.emag
R.add_reagent("beer2", 50)
src.emag.name = "Mickey Finn's Special Brew"
- ..()
-/obj/item/weapon/robot_module/clerical/general
+/obj/item/weapon/robot_module/robot/clerical/general
name = "clerical robot module"
sprites = list(
"Waitress" = "Service",
@@ -550,8 +537,8 @@ var/global/list/robot_modules = list(
"Drone" = "drone-service"
)
-/obj/item/weapon/robot_module/clerical/general/New()
- src.modules += new /obj/item/device/flash(src)
+/obj/item/weapon/robot_module/robot/clerical/general/New()
+ ..()
src.modules += new /obj/item/weapon/pen/robopen(src)
src.modules += new /obj/item/weapon/form_printer(src)
src.modules += new /obj/item/weapon/gripper/paperwork(src)
@@ -568,7 +555,7 @@ var/global/list/robot_modules = list(
var/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer/B = src.emag
B.reagents.add_reagent("beer2", 2 * amount)
-/obj/item/weapon/robot_module/miner
+/obj/item/weapon/robot_module/robot/miner
name = "miner robot module"
channels = list("Supply" = 1)
networks = list(NETWORK_MINE)
@@ -580,8 +567,8 @@ var/global/list/robot_modules = list(
)
supported_upgrades = list(/obj/item/borg/upgrade/jetpack)
-/obj/item/weapon/robot_module/miner/New()
- src.modules += new /obj/item/device/flash(src)
+/obj/item/weapon/robot_module/robot/miner/New()
+ ..()
src.modules += new /obj/item/borg/sight/material(src)
src.modules += new /obj/item/weapon/wrench(src)
src.modules += new /obj/item/weapon/screwdriver(src)
@@ -590,11 +577,9 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/weapon/storage/bag/sheetsnatcher/borg(src)
src.modules += new /obj/item/weapon/gripper/miner(src)
src.modules += new /obj/item/weapon/mining_scanner(src)
- src.modules += new /obj/item/weapon/crowbar(src)
src.emag = new /obj/item/weapon/pickaxe/plasmacutter(src)
- ..()
-/obj/item/weapon/robot_module/research
+/obj/item/weapon/robot_module/robot/research
name = "research module"
channels = list("Science" = 1)
sprites = list(
@@ -602,8 +587,8 @@ var/global/list/robot_modules = list(
"Drone" = "drone-science"
)
-/obj/item/weapon/robot_module/research/New()
- src.modules += new /obj/item/device/flash(src)
+/obj/item/weapon/robot_module/robot/research/New()
+ ..()
src.modules += new /obj/item/weapon/portable_destructive_analyzer(src)
src.modules += new /obj/item/weapon/gripper/research(src)
src.modules += new /obj/item/weapon/gripper/no_use/organ/robotics(src)
@@ -614,12 +599,10 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/weapon/weldingtool/largetank(src)
src.modules += new /obj/item/weapon/screwdriver(src)
src.modules += new /obj/item/weapon/wrench(src)
- src.modules += new /obj/item/weapon/crowbar(src)
src.modules += new /obj/item/weapon/wirecutters(src)
src.modules += new /obj/item/device/multitool(src)
src.modules += new /obj/item/weapon/scalpel(src)
src.modules += new /obj/item/weapon/circular_saw(src)
- src.modules += new /obj/item/weapon/extinguisher/mini(src)
src.modules += new /obj/item/weapon/reagent_containers/syringe(src)
src.modules += new /obj/item/weapon/reagent_containers/glass/beaker/large(src)
src.emag = new /obj/item/weapon/hand_tele(src)
@@ -639,9 +622,7 @@ var/global/list/robot_modules = list(
C.synths = list(wire)
src.modules += C
- ..()
-
-/obj/item/weapon/robot_module/syndicate
+/obj/item/weapon/robot_module/robot/syndicate
name = "illegal robot module"
hide_on_manifest = 1
languages = list(
@@ -659,9 +640,9 @@ var/global/list/robot_modules = list(
)
var/id
-/obj/item/weapon/robot_module/syndicate/New(var/mob/living/silicon/robot/R)
+/obj/item/weapon/robot_module/robot/syndicate/New(var/mob/living/silicon/robot/R)
+ ..()
loc = R
- src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/weapon/melee/energy/sword(src)
src.modules += new /obj/item/weapon/gun/energy/pulse_rifle/destroyer(src)
src.modules += new /obj/item/weapon/card/emag(src)
@@ -671,19 +652,19 @@ var/global/list/robot_modules = list(
id = R.idcard
src.modules += id
- ..()
-/obj/item/weapon/robot_module/syndicate/Destroy()
+/obj/item/weapon/robot_module/robot/syndicate/Destroy()
src.modules -= id
id = null
return ..()
-/obj/item/weapon/robot_module/security/combat
+/obj/item/weapon/robot_module/robot/security/combat
name = "combat robot module"
hide_on_manifest = 1
sprites = list("Combat Android" = "droid-combat")
-/obj/item/weapon/robot_module/security/combat/New()
+/obj/item/weapon/robot_module/robot/security/combat/New()
+ ..()
src.modules += new /obj/item/device/flash(src)
//src.modules += new /obj/item/borg/sight/thermal(src) // VOREStation Edit
src.modules += new /obj/item/weapon/gun/energy/laser/mounted(src)
@@ -691,7 +672,6 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/borg/combat/shield(src)
src.modules += new /obj/item/borg/combat/mobility(src)
src.emag = new /obj/item/weapon/gun/energy/lasercannon/mounted(src)
- ..()
/obj/item/weapon/robot_module/drone
name = "drone module"
@@ -700,6 +680,7 @@ var/global/list/robot_modules = list(
networks = list(NETWORK_ENGINEERING)
/obj/item/weapon/robot_module/drone/New(var/mob/living/silicon/robot/robot)
+ ..()
src.modules += new /obj/item/weapon/weldingtool(src)
src.modules += new /obj/item/weapon/screwdriver(src)
src.modules += new /obj/item/weapon/wrench(src)
@@ -774,8 +755,6 @@ var/global/list/robot_modules = list(
P.synths = list(plastic)
src.modules += P
- ..()
-
/obj/item/weapon/robot_module/drone/construction
name = "construction drone module"
hide_on_manifest = 1
@@ -783,8 +762,8 @@ var/global/list/robot_modules = list(
languages = list()
/obj/item/weapon/robot_module/drone/construction/New()
- src.modules += new /obj/item/weapon/rcd/borg(src)
..()
+ src.modules += new /obj/item/weapon/rcd/borg(src)
/obj/item/weapon/robot_module/drone/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
var/obj/item/device/lightreplacer/LR = locate() in src.modules
diff --git a/code/modules/mob/living/silicon/robot/syndicate.dm b/code/modules/mob/living/silicon/robot/syndicate.dm
index af46cd6fcf..acd441171b 100644
--- a/code/modules/mob/living/silicon/robot/syndicate.dm
+++ b/code/modules/mob/living/silicon/robot/syndicate.dm
@@ -20,7 +20,7 @@
laws = new /datum/ai_laws/syndicate_override
overlays.Cut()
init_id()
- new /obj/item/weapon/robot_module/syndicate(src)
+ new /obj/item/weapon/robot_module/robot/syndicate(src)
radio.keyslot = new /obj/item/device/encryptionkey/syndicate(radio)
radio.recalculateChannels()
diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm
index d2bd9210bb..f84021b26a 100644
--- a/code/modules/mob/living/silicon/silicon.dm
+++ b/code/modules/mob/living/silicon/silicon.dm
@@ -75,13 +75,13 @@
/mob/living/silicon/stun_effect_act(var/stun_amount, var/agony_amount)
return //immune
-/mob/living/silicon/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0)
+/mob/living/silicon/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 0.0)
if(shock_damage > 0)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, loc)
s.start()
- shock_damage *= 0.75 //take reduced damage
+ shock_damage *= siemens_coeff //take reduced damage
take_overall_damage(0, shock_damage)
visible_message("[src] was shocked by \the [source]!", \
"Energy pulse detected, system damaged!", \
diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm
index 68a7f8cbd3..f4de3b6054 100644
--- a/code/modules/mob/living/simple_animal/hostile/bear.dm
+++ b/code/modules/mob/living/simple_animal/hostile/bear.dm
@@ -129,7 +129,7 @@
return
custom_emote(1, pick( list("slashes at [target_mob]", "bites [target_mob]") ) )
- var/damage = rand(20,30)
+ var/damage = rand(melee_damage_lower, melee_damage_upper)
if(ishuman(target_mob))
var/mob/living/carbon/human/H = target_mob
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index a3a29a48af..a2251b1b20 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -654,6 +654,7 @@
if(.)
if(statpanel("Status") && ticker && ticker.current_state != GAME_STATE_PREGAME)
stat("Station Time", stationtime2text())
+ stat("Station Date", stationdate2text())
stat("Round Duration", roundduration2text())
if(client.holder)
diff --git a/code/modules/mob/living/carbon/brain/brain_item.dm b/code/modules/organs/internal/brain.dm
similarity index 96%
rename from code/modules/mob/living/carbon/brain/brain_item.dm
rename to code/modules/organs/internal/brain.dm
index 973e55a48b..edc6f6e47f 100644
--- a/code/modules/mob/living/carbon/brain/brain_item.dm
+++ b/code/modules/organs/internal/brain.dm
@@ -1,122 +1,122 @@
-/obj/item/organ/internal/brain
- name = "brain"
- health = 400 //They need to live awhile longer than other organs. Is this even used by organ code anymore?
- desc = "A piece of juicy meat found in a person's head."
- organ_tag = "brain"
- parent_organ = BP_HEAD
- vital = 1
- icon_state = "brain2"
- force = 1.0
- w_class = ITEMSIZE_SMALL
- throwforce = 1.0
- throw_speed = 3
- throw_range = 5
- origin_tech = list(TECH_BIO = 3)
- attack_verb = list("attacked", "slapped", "whacked")
- var/mob/living/carbon/brain/brainmob = null
-
-/obj/item/organ/internal/brain/robotize()
- replace_self_with(/obj/item/organ/internal/mmi_holder/posibrain)
-
-/obj/item/organ/internal/brain/mechassist()
- replace_self_with(/obj/item/organ/internal/mmi_holder)
-
-/obj/item/organ/internal/brain/digitize()
- replace_self_with(/obj/item/organ/internal/mmi_holder/robot)
-
-/obj/item/organ/internal/brain/proc/replace_self_with(replace_path)
- var/mob/living/carbon/human/tmp_owner = owner
- qdel(src)
- if(tmp_owner)
- tmp_owner.internal_organs_by_name[organ_tag] = new replace_path(tmp_owner, 1)
- tmp_owner = null
-
-/obj/item/organ/internal/pariah_brain
- name = "brain remnants"
- desc = "Did someone tread on this? It looks useless for cloning or cyborgification."
- organ_tag = "brain"
- parent_organ = BP_HEAD
- icon = 'icons/mob/alien.dmi'
- icon_state = "chitin"
- vital = 1
-
-/obj/item/organ/internal/brain/xeno
- name = "thinkpan"
- desc = "It looks kind of like an enormous wad of purple bubblegum."
- icon = 'icons/mob/alien.dmi'
- icon_state = "chitin"
-
-/obj/item/organ/internal/brain/New()
- ..()
- health = config.default_brain_health
- spawn(5)
- if(brainmob && brainmob.client)
- brainmob.client.screen.len = null //clear the hud
-
-/obj/item/organ/internal/brain/Destroy()
- if(brainmob)
- qdel(brainmob)
- brainmob = null
- ..()
-
-/obj/item/organ/internal/brain/proc/transfer_identity(var/mob/living/carbon/H)
-
- if(!brainmob)
- brainmob = new(src)
- brainmob.name = H.real_name
- brainmob.real_name = H.real_name
- brainmob.dna = H.dna.Clone()
- brainmob.timeofhostdeath = H.timeofdeath
-
- if(H.mind)
- H.mind.transfer_to(brainmob)
-
- brainmob << "You feel slightly disoriented. That's normal when you're just \a [initial(src.name)]."
- callHook("debrain", list(brainmob))
-
-/obj/item/organ/internal/brain/examine(mob/user) // -- TLE
- ..(user)
- if(brainmob && brainmob.client)//if thar be a brain inside... the brain.
- user << "You can feel the small spark of life still left in this one."
- else
- user << "This one seems particularly lifeless. Perhaps it will regain some of its luster later.."
-
-/obj/item/organ/internal/brain/removed(var/mob/living/user)
-
- if(name == initial(name))
- name = "\the [owner.real_name]'s [initial(name)]"
-
- var/mob/living/simple_animal/borer/borer = owner.has_brain_worms()
-
- if(borer)
- borer.detatch() //Should remove borer if the brain is removed - RR
-
- var/obj/item/organ/internal/brain/B = src
- if(istype(B) && istype(owner))
- B.transfer_identity(owner)
-
- ..()
-
-/obj/item/organ/internal/brain/replaced(var/mob/living/target)
-
- if(target.key)
- target.ghostize()
-
- if(brainmob)
- if(brainmob.mind)
- brainmob.mind.transfer_to(target)
- else
- target.key = brainmob.key
- ..()
-
-/obj/item/organ/internal/brain/slime
- name = "slime core"
- desc = "A complex, organic knot of jelly and crystalline particles."
- icon = 'icons/mob/slimes.dmi'
- icon_state = "green slime extract"
-
-/obj/item/organ/internal/brain/golem
- name = "chem"
- desc = "A tightly furled roll of paper, covered with indecipherable runes."
- icon = 'icons/obj/wizard.dmi'
- icon_state = "scroll"
+/obj/item/organ/internal/brain
+ name = "brain"
+ health = 400 //They need to live awhile longer than other organs. Is this even used by organ code anymore?
+ desc = "A piece of juicy meat found in a person's head."
+ organ_tag = "brain"
+ parent_organ = BP_HEAD
+ vital = 1
+ icon_state = "brain2"
+ force = 1.0
+ w_class = ITEMSIZE_SMALL
+ throwforce = 1.0
+ throw_speed = 3
+ throw_range = 5
+ origin_tech = list(TECH_BIO = 3)
+ attack_verb = list("attacked", "slapped", "whacked")
+ var/mob/living/carbon/brain/brainmob = null
+
+/obj/item/organ/internal/brain/robotize()
+ replace_self_with(/obj/item/organ/internal/mmi_holder/posibrain)
+
+/obj/item/organ/internal/brain/mechassist()
+ replace_self_with(/obj/item/organ/internal/mmi_holder)
+
+/obj/item/organ/internal/brain/digitize()
+ replace_self_with(/obj/item/organ/internal/mmi_holder/robot)
+
+/obj/item/organ/internal/brain/proc/replace_self_with(replace_path)
+ var/mob/living/carbon/human/tmp_owner = owner
+ qdel(src)
+ if(tmp_owner)
+ tmp_owner.internal_organs_by_name[organ_tag] = new replace_path(tmp_owner, 1)
+ tmp_owner = null
+
+/obj/item/organ/internal/pariah_brain
+ name = "brain remnants"
+ desc = "Did someone tread on this? It looks useless for cloning or cyborgification."
+ organ_tag = "brain"
+ parent_organ = BP_HEAD
+ icon = 'icons/mob/alien.dmi'
+ icon_state = "chitin"
+ vital = 1
+
+/obj/item/organ/internal/brain/xeno
+ name = "thinkpan"
+ desc = "It looks kind of like an enormous wad of purple bubblegum."
+ icon = 'icons/mob/alien.dmi'
+ icon_state = "chitin"
+
+/obj/item/organ/internal/brain/New()
+ ..()
+ health = config.default_brain_health
+ spawn(5)
+ if(brainmob && brainmob.client)
+ brainmob.client.screen.len = null //clear the hud
+
+/obj/item/organ/internal/brain/Destroy()
+ if(brainmob)
+ qdel(brainmob)
+ brainmob = null
+ ..()
+
+/obj/item/organ/internal/brain/proc/transfer_identity(var/mob/living/carbon/H)
+
+ if(!brainmob)
+ brainmob = new(src)
+ brainmob.name = H.real_name
+ brainmob.real_name = H.real_name
+ brainmob.dna = H.dna.Clone()
+ brainmob.timeofhostdeath = H.timeofdeath
+
+ if(H.mind)
+ H.mind.transfer_to(brainmob)
+
+ brainmob << "You feel slightly disoriented. That's normal when you're just \a [initial(src.name)]."
+ callHook("debrain", list(brainmob))
+
+/obj/item/organ/internal/brain/examine(mob/user) // -- TLE
+ ..(user)
+ if(brainmob && brainmob.client)//if thar be a brain inside... the brain.
+ user << "You can feel the small spark of life still left in this one."
+ else
+ user << "This one seems particularly lifeless. Perhaps it will regain some of its luster later.."
+
+/obj/item/organ/internal/brain/removed(var/mob/living/user)
+
+ if(name == initial(name))
+ name = "\the [owner.real_name]'s [initial(name)]"
+
+ var/mob/living/simple_animal/borer/borer = owner.has_brain_worms()
+
+ if(borer)
+ borer.detatch() //Should remove borer if the brain is removed - RR
+
+ var/obj/item/organ/internal/brain/B = src
+ if(istype(B) && istype(owner))
+ B.transfer_identity(owner)
+
+ ..()
+
+/obj/item/organ/internal/brain/replaced(var/mob/living/target)
+
+ if(target.key)
+ target.ghostize()
+
+ if(brainmob)
+ if(brainmob.mind)
+ brainmob.mind.transfer_to(target)
+ else
+ target.key = brainmob.key
+ ..()
+
+/obj/item/organ/internal/brain/slime
+ name = "slime core"
+ desc = "A complex, organic knot of jelly and crystalline particles."
+ icon = 'icons/mob/slimes.dmi'
+ icon_state = "green slime extract"
+
+/obj/item/organ/internal/brain/golem
+ name = "chem"
+ desc = "A tightly furled roll of paper, covered with indecipherable runes."
+ icon = 'icons/obj/wizard.dmi'
+ icon_state = "scroll"
diff --git a/code/modules/organs/internal/liver.dm b/code/modules/organs/internal/liver.dm
index ef989b7a55..c3c2ef6eac 100644
--- a/code/modules/organs/internal/liver.dm
+++ b/code/modules/organs/internal/liver.dm
@@ -23,7 +23,7 @@
if(owner.life_tick % PROCESS_ACCURACY == 0)
//High toxins levels are dangerous
- if(owner.getToxLoss() >= 60 && !owner.reagents.has_reagent("anti_toxin"))
+ if(owner.getToxLoss() >= 50 && !owner.reagents.has_reagent("anti_toxin"))
//Healthy liver suffers on its own
if (src.damage < min_broken_damage)
src.damage += 0.2 * PROCESS_ACCURACY
diff --git a/code/modules/organs/internal/organ_internal.dm b/code/modules/organs/internal/organ_internal.dm
index 100666caaa..c1bfebb673 100644
--- a/code/modules/organs/internal/organ_internal.dm
+++ b/code/modules/organs/internal/organ_internal.dm
@@ -33,4 +33,4 @@
if(istype(E)) E.internal_organs -= src
..()
-// Brain is defined in brain_item.dm.
\ No newline at end of file
+// Brain is defined in brain.dm
\ No newline at end of file
diff --git a/code/modules/organs/robolimbs.dm b/code/modules/organs/robolimbs.dm
index b0f16372ee..f46326a53e 100644
--- a/code/modules/organs/robolimbs.dm
+++ b/code/modules/organs/robolimbs.dm
@@ -175,32 +175,31 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
icon_state = "datadisk2"
var/company = ""
- //I'm normally opposed to relative pathing, but pls.
- bishop
- company = "Bishop"
-
- hesphiastos
- company = "Hesphiastos"
-
- morpheus
- company = "Morpheus"
-
- veymed
- company = "Vey-Med"
-
- wardtakahashi
- company = "Ward-Takahashi"
-
- xion
- company = "Xion"
-
- zenghu
- company = "Zeng-Hu"
-
- nanotrasen
- company = "NanoTrasen"
-
/obj/item/weapon/disk/limb/New(var/newloc)
..()
if(company)
name = "[company] [initial(name)]"
+
+/obj/item/weapon/disk/limb/bishop
+ company = "Bishop"
+
+/obj/item/weapon/disk/limb/hesphiastos
+ company = "Hesphiastos"
+
+/obj/item/weapon/disk/limb/morpheus
+ company = "Morpheus"
+
+/obj/item/weapon/disk/limb/veymed
+ company = "Vey-Med"
+
+/obj/item/weapon/disk/limb/wardtakahashi
+ company = "Ward-Takahashi"
+
+/obj/item/weapon/disk/limb/xion
+ company = "Xion"
+
+/obj/item/weapon/disk/limb/zenghu
+ company = "Zeng-Hu"
+
+/obj/item/weapon/disk/limb/nanotrasen
+ company = "NanoTrasen"
diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm
index bbaec17318..a0f81f0aee 100644
--- a/code/modules/paperwork/photography.dm
+++ b/code/modules/paperwork/photography.dm
@@ -249,13 +249,11 @@ var/global/photo_count = 0
on = 1
/obj/item/device/camera/proc/can_capture_turf(turf/T, mob/user)
- var/mob/dummy = new(T) //Go go visibility check dummy
var/viewer = user
if(user.client) //To make shooting through security cameras possible
viewer = user.client.eye
- var/can_see = (dummy in viewers(world.view, viewer))
+ var/can_see = (T in view(viewer))
- qdel(dummy)
return can_see
/obj/item/device/camera/proc/captureimage(atom/target, mob/user, flag)
@@ -264,8 +262,8 @@ var/global/photo_count = 0
var/z_c = target.z
var/list/turfs = list()
var/mobs = ""
- for(var/i = 1; i <= size; i++)
- for(var/j = 1; j <= size; j++)
+ for(var/i = 1 to size)
+ for(var/j = 1 to size)
var/turf/T = locate(x_c, y_c, z_c)
if(can_capture_turf(T, user))
turfs.Add(T)
diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm
index 8dd24186ff..036777ca15 100644
--- a/code/modules/power/apc.dm
+++ b/code/modules/power/apc.dm
@@ -1,3 +1,4 @@
+#define CRITICAL_APC_EMP_PROTECTION 10 // EMP effect duration is divided by this number if the APC has "critical" flag
//update_state
#define UPDATE_CELL_IN 1
#define UPDATE_OPENED1 2
@@ -33,7 +34,10 @@
// controls power to devices in that area
// may be opened to change power cell
// three different channels (lighting/equipment/environ) - may each be set to on, off, or auto
-
+#define POWERCHAN_OFF 0
+#define POWERCHAN_OFF_AUTO 1
+#define POWERCHAN_ON 2
+#define POWERCHAN_ON_AUTO 3
//NOTE: STUFF STOLEN FROM AIRLOCK.DM thx
@@ -69,9 +73,9 @@
var/opened = 0 //0=closed, 1=opened, 2=cover removed
var/shorted = 0
var/grid_check = FALSE
- var/lighting = 3
- var/equipment = 3
- var/environ = 3
+ var/lighting = POWERCHAN_ON_AUTO
+ var/equipment = POWERCHAN_ON_AUTO
+ var/environ = POWERCHAN_ON_AUTO
var/operating = 1
var/charging = 0
var/chargemode = 1
@@ -100,6 +104,8 @@
var/update_overlay = -1
var/is_critical = 0
var/global/status_overlays = 0
+ var/failure_timer = 0
+ var/force_update = 0
var/updating_icon = 0
var/global/list/status_overlays_lock
var/global/list/status_overlays_charging
@@ -125,20 +131,25 @@
if(drain_check)
return 1
- if(!cell)
- return 0
+ //This makes sure fully draining an APC cell won't break the cell charging.
+ charging = 0
- if(surge && !emagged)
- flick("apc-spark", src)
- emagged = 1
- locked = 0
- update_icon()
- return 0
+ var/drained_energy = 0
+ //Draws power from the grid first, if available.
+ //This is like draining from a cable, so nins and
+ //twizs can do that without having to pry floortiles.
if(terminal && terminal.powernet)
terminal.powernet.trigger_warning()
+ drained_energy += terminal.powernet.draw_power(amount)
- return cell.drain_power(drain_check, surge, amount)
+ //The grid rarely gives the full amount requested, or perhaps the grid
+ //isn't connected (wire cut), in either case we draw what we didn't get
+ //from the cell instead.
+ if((drained_energy < amount) && cell)
+ drained_energy += cell.drain_power(0, 0, (amount - drained_energy))
+
+ return drained_energy
/obj/machinery/power/apc/New(turf/loc, var/ndir, var/building=0)
..()
@@ -185,6 +196,9 @@
return ..()
+/obj/machinery/power/apc/proc/energy_fail(var/duration)
+ failure_timer = max(failure_timer, round(duration))
+
/obj/machinery/power/apc/proc/make_terminal()
// create a terminal object at the same position as original turf loc
// wires will attach to this
@@ -218,27 +232,28 @@
/obj/machinery/power/apc/examine(mob/user)
if(..(user, 1))
- user << "A control terminal for the area electrical systems."
if(stat & BROKEN)
- user << "Looks broken."
+ to_chat(user,"This APC is broken.")
return
if(opened)
if(has_electronics && terminal)
- user << "The cover is [opened==2?"removed":"open"] and the power cell is [ cell ? "installed" : "missing"]."
+ to_chat(user,"The cover is [opened==2?"removed":"open"] and [ cell ? "a power cell is installed" : "the power cell is missing"].")
else if (!has_electronics && terminal)
- user << "There are some wires but no any electronics."
+ to_chat(user,"The frame is wired, but the electronics are missing.")
else if (has_electronics && !terminal)
- user << "Electronics installed but not wired."
+ to_chat(user,"The electronics are installed, but not wired.")
else /* if (!has_electronics && !terminal) */
- user << "There is no electronics nor connected wires."
+ to_chat(user,"It's just an empty metal frame.")
else
- if (stat & MAINT)
- user << "The cover is closed. Something wrong with it: it doesn't work."
- else if (hacker)
- user << "The cover is locked."
+ if (wiresexposed)
+ to_chat(user,"The cover is closed and the wires are exposed.")
+ else if ((locked && emagged) || hacker) //Some things can cause locked && emagged. Malf AI causes hacker.
+ to_chat(user,"The cover is closed, but the panel is unresponsive.")
+ else if(!locked && emagged) //Normal emag does this.
+ to_chat(user,"The cover is closed, but the panel is flashing an error.")
else
- user << "The cover is closed."
+ to_chat(user,"The cover is closed.")
// update the APC icon to show the three base states
@@ -300,10 +315,10 @@
icon_state = "[basestate]-nocover"
else if(update_state & UPDATE_BROKE)
icon_state = "apc-b"
- else if(update_state & UPDATE_BLUESCREEN)
- icon_state = "apcemag"
else if(update_state & UPDATE_WIREEXP)
icon_state = "apcewires"
+ else if(update_state & UPDATE_BLUESCREEN)
+ icon_state = "apcemag"
if(!(update_state & UPDATE_ALLGOOD))
if(overlays.len)
@@ -355,10 +370,10 @@
update_state |= UPDATE_OPENED1
if(opened==2)
update_state |= UPDATE_OPENED2
- else if(emagged || hacker)
- update_state |= UPDATE_BLUESCREEN
else if(wiresexposed)
update_state |= UPDATE_WIREEXP
+ else if(emagged || hacker || failure_timer)
+ update_state |= UPDATE_BLUESCREEN
if(update_state <= 1)
update_state |= UPDATE_ALLGOOD
@@ -427,16 +442,16 @@
if (istype(W, /obj/item/weapon/crowbar) && opened)
if (has_electronics==1)
if (terminal)
- user << "Disconnect wires first."
+ to_chat(user,"Disconnect the wires first.")
return
playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1)
- user << "You are trying to remove the power control board..." //lpeters - fixed grammar issues
+ to_chat(user,"You begin to remove the power control board...") //lpeters - fixed grammar issues //Ner - grrrrrr
if(do_after(user, 50))
if (has_electronics==1)
has_electronics = 0
if ((stat & BROKEN))
user.visible_message(\
- "[user.name] has broken the power control board inside [src.name]!",\
+ "[user.name] has broken the charred power control board inside [src.name]!",\
"You broke the charred power control board and remove the remains.",
"You hear a crack!")
//ticker.mode:apcs-- //XSI said no and I agreed. -rastaf0
@@ -448,83 +463,83 @@
else if (opened!=2) //cover isn't removed
opened = 0
update_icon()
- else if (istype(W, /obj/item/weapon/crowbar) && !((stat & BROKEN) || hacker) )
+ else if (istype(W, /obj/item/weapon/crowbar) && !(stat & BROKEN) )
if(coverlocked && !(stat & MAINT))
- user << "The cover is locked and cannot be opened."
+ to_chat(user,"The cover is locked and cannot be opened.")
return
else
opened = 1
update_icon()
else if (istype(W, /obj/item/weapon/cell) && opened) // trying to put a cell inside
if(cell)
- user << "There is a power cell already installed."
+ to_chat(user,"The [src.name] already has a power cell installed.")
return
if (stat & MAINT)
- user << "There is no connector for your power cell."
+ to_chat(user,"You need to install the wiring and electronics first.")
return
if(W.w_class != ITEMSIZE_NORMAL)
- user << "\The [W] is too [W.w_class < 3? "small" : "large"] to fit here."
+ to_chat(user,"\The [W] is too [W.w_class < 3? "small" : "large"] to work here.")
return
user.drop_item()
W.forceMove(src)
cell = W
user.visible_message(\
- "[user.name] has inserted the power cell to [src.name]!",\
+ "[user.name] has inserted a power cell into [src.name]!",\
"You insert the power cell.")
chargecount = 0
update_icon()
else if (istype(W, /obj/item/weapon/screwdriver)) // haxing
if(opened)
if (cell)
- user << "Close the APC first." //Less hints more mystery!
+ to_chat(user,"Remove the power cell first.")
return
else
if (has_electronics==1 && terminal)
has_electronics = 2
stat &= ~MAINT
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
- user << "You screw the circuit electronics into place."
+ to_chat(user,"You screw the circuit electronics into place.")
else if (has_electronics==2)
has_electronics = 1
stat |= MAINT
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
- user << "You unfasten the electronics."
+ to_chat(user,"You unfasten the electronics.")
else /* has_electronics==0 */
- user << "There is nothing to secure."
+ to_chat(user,"There is nothing to secure.")
return
update_icon()
else
wiresexposed = !wiresexposed
- user << "The wires have been [wiresexposed ? "exposed" : "unexposed"]"
+ to_chat(user,"The wires have been [wiresexposed ? "exposed" : "unexposed"].")
update_icon()
else if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) // trying to unlock the interface with an ID card
if(emagged)
- user << "The interface is broken."
+ to_chat(user,"The panel is unresponsive.")
else if(opened)
- user << "You must close the cover to swipe an ID card."
+ to_chat(user,"You must close the cover to swipe an ID card.")
else if(wiresexposed)
- user << "You must close the panel"
+ to_chat(user,"You must close the wire panel.")
else if(stat & (BROKEN|MAINT))
- user << "Nothing happens."
+ to_chat(user,"Nothing happens.")
else if(hacker)
- user << "Access denied."
+ to_chat(user,"Access denied.")
else
if(src.allowed(usr) && !isWireCut(APC_WIRE_IDSCAN))
locked = !locked
- user << "You [ locked ? "lock" : "unlock"] the APC interface."
+ to_chat(user,"You [ locked ? "lock" : "unlock"] the APC interface.")
update_icon()
else
- user << "Access denied."
+ to_chat(user,"Access denied.")
else if (istype(W, /obj/item/stack/cable_coil) && !terminal && opened && has_electronics!=2)
var/turf/T = loc
if(istype(T) && !T.is_plating())
- user << "You must remove the floor plating in front of the APC first."
+ to_chat(user,"You must remove the floor plating in front of the APC first.")
return
var/obj/item/stack/cable_coil/C = W
if(C.get_amount() < 10)
- user << "You need ten lengths of cable for APC."
+ to_chat(user,"You need ten lengths of cable for that.")
return
user.visible_message("[user.name] adds cables to the APC frame.", \
"You start adding cables to the APC frame...")
@@ -547,9 +562,9 @@
else if (istype(W, /obj/item/weapon/wirecutters) && terminal && opened && has_electronics!=2)
var/turf/T = loc
if(istype(T) && !T.is_plating())
- user << "You must remove the floor plating in front of the APC first."
+ to_chat(user,"You must remove the floor plating in front of the APC first.")
return
- user.visible_message("[user.name] dismantles the power terminal from [src].", \
+ user.visible_message("[user.name] starts dismantling the [src]'s power terminal.", \
"You begin to cut the cables...")
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
if(do_after(user, 50))
@@ -561,7 +576,7 @@
if(usr.stunned)
return
new /obj/item/stack/cable_coil(loc,10)
- user << "You cut the cables and dismantle the power terminal."
+ to_chat(user,"You cut the cables and dismantle the power terminal.")
qdel(terminal)
else if (istype(W, /obj/item/weapon/module/power_control) && opened && has_electronics==0 && !((stat & BROKEN)))
user.visible_message("[user.name] inserts the power control board into [src].", \
@@ -570,75 +585,78 @@
if(do_after(user, 10))
if(has_electronics==0)
has_electronics = 1
- user << "You place the power control board inside the frame."
+ reboot()
+ to_chat(user,"You place the power control board inside the frame.")
qdel(W)
else if (istype(W, /obj/item/weapon/module/power_control) && opened && has_electronics==0 && ((stat & BROKEN)))
- user << "You cannot put the board inside, the frame is damaged."
+ to_chat(user,"The [src] is too broken for that. Repair it first.")
return
else if (istype(W, /obj/item/weapon/weldingtool) && opened && has_electronics==0 && !terminal)
var/obj/item/weapon/weldingtool/WT = W
if (WT.get_fuel() < 3)
- user << "You need more welding fuel to complete this task."
+ to_chat(user,"You need more welding fuel to complete this task.")
return
- user.visible_message("[user.name] welds [src].", \
+ user.visible_message("[user.name] begins cutting apart [src] with the [WT.name].", \
"You start welding the APC frame...", \
"You hear welding.")
- playsound(src.loc, 'sound/items/Welder.ogg', 50, 1)
+ playsound(src.loc, 'sound/items/Welder.ogg', 25, 1)
if(do_after(user, 50))
if(!src || !WT.remove_fuel(3, user)) return
if (emagged || (stat & BROKEN) || opened==2)
new /obj/item/stack/material/steel(loc)
user.visible_message(\
- "[src] has been cut apart by [user.name] with the weldingtool.",\
+ "[src] has been cut apart by [user.name] with the [WT.name].",\
"You disassembled the broken APC frame.",\
"You hear welding.")
else
new /obj/item/frame/apc(loc)
user.visible_message(\
- "[src] has been cut from the wall by [user.name] with the weldingtool.",\
+ "[src] has been cut from the wall by [user.name] with the [WT.name].",\
"You cut the APC frame from the wall.",\
"You hear welding.")
qdel(src)
return
- else if (istype(W, /obj/item/frame/apc) && opened && emagged)
- emagged = 0
- if (opened==2)
- opened = 1
- user.visible_message(\
- "[user.name] has replaced the damaged APC frontal panel with a new one.",\
- "You replace the damaged APC frontal panel with a new one.")
- qdel(W)
- update_icon()
- else if (istype(W, /obj/item/frame/apc) && opened && ((stat & BROKEN) || hacker))
- if (has_electronics)
- user << "You cannot repair this APC until you remove the electronics still inside."
- return
- user.visible_message("[user.name] replaces the damaged APC frame with a new one.",\
- "You begin to replace the damaged APC frame...")
- if(do_after(user, 50))
- user.visible_message(\
- "[user.name] has replaced the damaged APC frame with new one.",\
- "You replace the damaged APC frame with new one.")
- qdel(W)
- stat &= ~BROKEN
- // Malf AI, removes the APC from AI's hacked APCs list.
- if(hacker && hacker.hacked_apcs && (src in hacker.hacked_apcs))
- hacker.hacked_apcs -= src
- hacker = null
- if (opened==2)
- opened = 1
- update_icon()
+ else if (opened && ((stat & BROKEN) || hacker || emagged))
+ if (istype(W, /obj/item/frame/apc) && (stat & BROKEN))
+ if(cell)
+ to_chat(user, "You need to remove the power cell first.")
+ return
+ user.visible_message("[user.name] begins replacing the damaged APC cover with a new one.",\
+ "You begin to replace the damaged APC cover...")
+ if(do_after(user, 50))
+ user.visible_message("[user.name] has replaced the damaged APC cover with a new one.",\
+ "You replace the damaged APC cover with a new one.")
+ qdel(W)
+ stat &= ~BROKEN
+ reboot()
+ if (opened==2)
+ opened = 1
+ update_icon()
+ else if (istype(W, /obj/item/device/multitool) && (hacker || emagged))
+ if(cell)
+ to_chat(user, "You need to remove the power cell first.")
+ return
+ user.visible_message("[user.name] connects their [W.name] to the APC and begins resetting it.",\
+ "You begin resetting the APC...")
+ if(do_after(user, 50))
+ user.visible_message("[user.name] resets the APC with a beep from their [W.name].",\
+ "You finish resetting the APC.")
+ playsound(src.loc, 'sound/machines/chime.ogg', 25, 1)
+ reboot()
else
- if (((stat & BROKEN) || hacker) \
+ if ((stat & BROKEN) \
&& !opened \
&& W.force >= 5 \
- && W.w_class >= ITEMSIZE_NORMAL \
- && prob(20) )
- opened = 2
- user.visible_message("The APC cover was knocked down with the [W.name] by [user.name]!", \
- "You knock down the APC cover with your [W.name]!", \
- "You hear bang")
- update_icon()
+ && W.w_class >= ITEMSIZE_NORMAL )
+ user.visible_message("The [src.name] has been hit with the [W.name] by [user.name]!", \
+ "You hit the [src.name] with your [W.name]!", \
+ "You hear a bang!")
+ if(prob(20))
+ opened = 2
+ user.visible_message("The APC cover was knocked down with the [W.name] by [user.name]!", \
+ "You knock down the APC cover with your [W.name]!", \
+ "You hear a bang!")
+ update_icon()
else
if (istype(user, /mob/living/silicon))
return src.attack_hand(user)
@@ -646,30 +664,29 @@
(istype(W, /obj/item/device/multitool) || \
istype(W, /obj/item/weapon/wirecutters) || istype(W, /obj/item/device/assembly/signaler)))
return src.attack_hand(user)
- user.visible_message("The [src.name] has been hit with the [W.name] by [user.name]!", \
- "You hit the [src.name] with your [W.name]!", \
- "You hear bang")
+ //Placeholder until someone can do take_damage() for APCs or something.
+ to_chat(user,"The [src.name] looks too sturdy to bash open.")
// attack with hand - remove cell (if cover open) or interact with the APC
/obj/machinery/power/apc/emag_act(var/remaining_charges, var/mob/user)
if (!(emagged || hacker)) // trying to unlock with an emag card
if(opened)
- user << "You must close the cover to swipe an ID card."
+ to_chat(user,"You must close the cover to do that.")
else if(wiresexposed)
- user << "You must close the panel first"
+ to_chat(user,"You must close the wire panel first.")
else if(stat & (BROKEN|MAINT))
- user << "Nothing happens."
+ to_chat(user,"The [src] isn't working.")
else
flick("apc-spark", src)
if (do_after(user,6))
if(prob(50))
emagged = 1
locked = 0
- user << "You emag the APC interface."
+ to_chat(user,"You emag the APC interface.")
update_icon()
else
- user << "You fail to [ locked ? "unlock" : "lock"] the APC interface."
+ to_chat(user,"The APC interface refused to unlock.")
return 1
/obj/machinery/power/apc/attack_hand(mob/user)
@@ -684,7 +701,7 @@
var/mob/living/carbon/human/H = user
if(H.species.can_shred(H))
- user.visible_message("\red [user.name] slashes at the [src.name]!", "\blue You slash at the [src.name]!")
+ user.visible_message("[user.name] slashes at the [src.name]!", "You slash at the [src.name]!")
playsound(src.loc, 'sound/weapons/slash.ogg', 100, 1)
var/allcut = wires.IsAllCut()
@@ -692,12 +709,12 @@
if(beenhit >= pick(3, 4) && wiresexposed != 1)
wiresexposed = 1
src.update_icon()
- src.visible_message("\red The [src.name]'s cover flies open, exposing the wires!")
+ src.visible_message("The [src.name]'s cover flies open, exposing the wires!")
else if(wiresexposed == 1 && allcut == 0)
wires.CutAll()
src.update_icon()
- src.visible_message("\red The [src.name]'s wires are shredded!")
+ src.visible_message("The [src.name]'s wires are shredded!")
else
beenhit += 1
return
@@ -711,7 +728,6 @@
src.cell = null
user.visible_message("[user.name] removes the power cell from [src.name]!",\
"You remove the power cell.")
- //user << "You remove the power cell."
charging = 0
src.update_icon()
return
@@ -726,6 +742,7 @@
if(wiresexposed && !istype(user, /mob/living/silicon/ai))
wires.Interact(user)
+ return //The panel is visibly dark when the wires are exposed, so we shouldn't be able to interact with it.
return ui_interact(user)
@@ -735,7 +752,8 @@
return
var/list/data = list(
- "locked" = (locked && !emagged) ? 1 : 0,
+ "locked" = locked,
+ "emagged" = emagged,
"isOperating" = operating,
"externalPower" = main_status,
"powerCellStatus" = cell ? cell.percent() : null,
@@ -743,6 +761,8 @@
"chargingStatus" = charging,
"totalLoad" = round(lastused_total),
"totalCharging" = round(lastused_charging),
+ "failTime" = failure_timer * 2,
+ "gridCheck" = grid_check,
"coverLocked" = coverlocked,
"siliconUser" = issilicon(user) || isobserver(user), //I add observer here so admins can have more control, even if it makes 'siliconUser' seem inaccurate.
@@ -797,10 +817,10 @@
return "[area.name] : [equipment]/[lighting]/[environ] ([lastused_equip+lastused_light+lastused_environ]) : [cell? cell.percent() : "N/C"] ([charging])"
/obj/machinery/power/apc/proc/update()
- if(operating && !shorted && !grid_check)
- area.power_light = (lighting > 1)
- area.power_equip = (equipment > 1)
- area.power_environ = (environ > 1)
+ if(operating && !shorted && !grid_check && !failure_timer)
+ area.power_light = (lighting >= POWERCHAN_ON)
+ area.power_equip = (equipment >= POWERCHAN_ON)
+ area.power_environ = (environ >= POWERCHAN_ON)
// if (area.name == "AI Chamber")
// spawn(10)
// world << " [area.name] [area.power_equip]"
@@ -822,17 +842,16 @@
if(isobserver(user) && is_admin(user) ) //This is to allow nanoUI interaction by ghost admins.
return 1
if (user.stat)
- user << "You must be conscious to use [src]!"
return 0
if(inoperable())
return 0
if(!user.IsAdvancedToolUser())
return 0
if(user.restrained())
- user << "You must have free hands to use [src]."
+ to_chat(user,"Your hands must be free to use [src].")
return 0
if(user.lying)
- user << "You must stand to use [src]!"
+ to_chat(user,"You must stand to use [src]!")
return 0
autoflag = 5
if (istype(user, /mob/living/silicon))
@@ -847,14 +866,14 @@
if(aidisabled && !permit)
if(!loud)
- user << "\The [src] have AI control disabled!"
+ to_chat(user,"\The AI control for [src] has been disabled!")
return 0
else
if (!in_range(src, user) || !istype(src.loc, /turf))
return 0
var/mob/living/carbon/human/H = user
if (istype(H) && prob(H.getBrainLoss()))
- user << "You momentarily forget how to use [src]."
+ to_chat(user,"You momentarily forget how to use [src].")
return 0
return 1
@@ -869,15 +888,20 @@
if(isobserver(usr) )
var/mob/observer/dead/O = usr //Added to allow admin nanoUI interactions.
if(!O.can_admin_interact() ) //NanoUI /should/ make this not needed, but better safe than sorry.
- usr << "Try as you might, your ghostly fingers can't press the buttons."
+ to_chat(usr,"Try as you might, your ghostly fingers can't press the buttons.")
return 1
else
- usr << "You must unlock the panel to use this!"
+ to_chat(usr,"You must unlock the panel to use this!")
return 1
if (href_list["lock"])
coverlocked = !coverlocked
+ else if (href_list["reboot"])
+ failure_timer = 0
+ update_icon()
+ update()
+
else if (href_list["breaker"])
toggle_breaker()
@@ -912,10 +936,10 @@
else if (href_list["toggleaccess"])
if(istype(usr, /mob/living/silicon))
if(emagged || (stat & (BROKEN|MAINT)))
- usr << "The APC does not respond to the command."
- else
- locked = !locked
- update_icon()
+ to_chat(usr,"The APC does not respond to the command.")
+ return
+ locked = !locked
+ update_icon()
return 0
@@ -924,6 +948,8 @@
src.update()
update_icon()
+//This isn't used for now, so might as well disable it
+/*
/obj/machinery/power/apc/proc/ion_act()
if(prob(3))
src.locked = 1
@@ -940,7 +966,7 @@
s.start()
visible_message("The [src.name] suddenly lets out a blast of smoke and some sparks!", \
"You hear sizzling electronics.")
-
+*/
/obj/machinery/power/apc/surplus()
if(terminal)
@@ -976,6 +1002,12 @@
return
if(!area.requires_power)
return
+ if(failure_timer)
+ update()
+ queue_icon_update()
+ failure_timer--
+ force_update = 1
+ return
lastused_light = area.usage(LIGHT)
lastused_equip = area.usage(EQUIP)
@@ -1075,7 +1107,8 @@
autoflag = 0
// update icon & area power if anything changed
- if(last_lt != lighting || last_eq != equipment || last_en != environ)
+ if(last_lt != lighting || last_eq != equipment || last_en != environ || force_update)
+ force_update = 0
queue_icon_update()
update()
else if (last_ch != charging)
@@ -1119,43 +1152,41 @@
// val 0=off, 1=off(auto) 2=on 3=on(auto)
// on 0=off, 1=on, 2=autooff
+// defines a state machine, returns the new state
+obj/machinery/power/apc/proc/autoset(var/cur_state, var/on)
+ switch(cur_state)
+ if(POWERCHAN_OFF); //autoset will never turn on a channel set to off
+ if(POWERCHAN_OFF_AUTO)
+ if(on == 1)
+ return POWERCHAN_ON_AUTO
+ if(POWERCHAN_ON)
+ if(on == 0)
+ return POWERCHAN_OFF
+ if(POWERCHAN_ON_AUTO)
+ if(on == 0 || on == 2)
+ return POWERCHAN_OFF_AUTO
-obj/machinery/power/apc/proc/autoset(var/val, var/on)
- if(on==0)
- if(val==2) // if on, return off
- return 0
- else if(val==3) // if auto-on, return auto-off
- return 1
-
- else if(on==1)
- if(val==1) // if auto-off, return auto-on
- return 3
-
- else if(on==2)
- if(val==3) // if auto-on, return auto-off
- return 1
-
- return val
+ return cur_state //leave unchanged
// damage and destruction acts
/obj/machinery/power/apc/emp_act(severity)
+ // Fail for 8-12 minutes (divided by severity)
+ // Division by 2 is required, because machinery ticks are every two seconds. Without it we would fail for 16-24 minutes.
if(is_critical)
- severity += 2
- if(cell)
- cell.emp_act(severity)
+ // Critical APCs are considered EMP shielded and will be offline only for about half minute. Prevents AIs being one-shot disabled by EMP strike.
+ // Critical APCs are also more resilient to cell corruption/power drain.
+ energy_fail(rand(240, 360) / severity / CRITICAL_APC_EMP_PROTECTION)
+ if(cell)
+ cell.emp_act(severity+2)
+ else
+ // Regular APCs fail for normal time.
+ energy_fail(rand(240, 360) / severity)
+ //Cells are partially shielded by the APC frame.
+ if(cell)
+ cell.emp_act(severity+1)
- lighting = 0
- if(!is_critical)
- equipment = 0
- environ = 0
- update()
update_icon()
-
- spawn(600)
- update_channels()
- update()
- update_icon()
..()
/obj/machinery/power/apc/ex_act(severity)
@@ -1186,9 +1217,8 @@ obj/machinery/power/apc/proc/autoset(var/val, var/on)
/obj/machinery/power/apc/proc/set_broken()
// Aesthetically much better!
- src.visible_message("[src]'s screen flickers with warnings briefly!")
spawn(rand(2,5))
- src.visible_message("[src]'s screen suddenly explodes in rain of sparks and small debris!")
+ src.visible_message("[src]'s screen flickers suddenly, then explodes in a rain of sparks and small debris!")
stat |= BROKEN
operating = 0
update_icon()
@@ -1226,6 +1256,33 @@ obj/machinery/power/apc/proc/autoset(var/val, var/on)
update_icon()
return 1
+/obj/machinery/power/apc/proc/reboot()
+ //reset various counters so that process() will start fresh
+ charging = initial(charging)
+ chargecount = initial(chargecount)
+ autoflag = initial(autoflag)
+ longtermpower = initial(longtermpower)
+ failure_timer = initial(failure_timer)
+
+ //start with main breaker off, chargemode in the default state and all channels on auto upon reboot
+ operating = 0
+ chargemode = initial(chargemode)
+ power_alarm.clearAlarm(loc, src)
+
+ lighting = POWERCHAN_ON_AUTO
+ equipment = POWERCHAN_ON_AUTO
+ environ = POWERCHAN_ON_AUTO
+
+ //If malf AI had this APC before, they don't now.
+ if(hacker && hacker.hacked_apcs && (src in hacker.hacked_apcs))
+ hacker.hacked_apcs -= src
+ hacker = null
+
+ emagged = initial(emagged) //Resets emagging, too.
+
+ update_icon()
+ update()
+
/obj/machinery/power/apc/overload(var/obj/machinery/power/source)
if(is_critical)
return
diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm
index 7409f86e38..7697fdf6a4 100644
--- a/code/modules/power/power.dm
+++ b/code/modules/power/power.dm
@@ -322,8 +322,9 @@
//power_source is a source of electricity, can be powercell, area, apc, cable, powernet or null
//source is an object caused electrocuting (airlock, grille, etc)
//No animations will be performed by this proc.
-/proc/electrocute_mob(mob/living/carbon/M as mob, var/power_source, var/obj/source, var/siemens_coeff = 1.0)
+/proc/electrocute_mob(mob/living/M as mob, var/power_source, var/obj/source, var/siemens_coeff = 1.0)
if(istype(M.loc,/obj/mecha)) return 0 //feckin mechs are dumb
+ if(issilicon(M)) return 0 //No more robot shocks from machinery
var/area/source_area
if(istype(power_source,/area))
source_area = power_source
diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm
index 608f8c283c..ecdfc0841e 100644
--- a/code/modules/power/singularity/singularity.dm
+++ b/code/modules/power/singularity/singularity.dm
@@ -82,7 +82,7 @@
dissipate()
check_energy()
- if (current_size >= STAGE_THREE)
+ if (current_size >= STAGE_TWO)
move()
pulse()
@@ -148,7 +148,7 @@
pixel_y = -32
grav_pull = 6
consume_range = 1
- dissipate_delay = 5
+ dissipate_delay = 10
dissipate_track = 0
dissipate_strength = 5
overlays = 0
@@ -169,7 +169,7 @@
pixel_y = -64
grav_pull = 8
consume_range = 2
- dissipate_delay = 4
+ dissipate_delay = 10
dissipate_track = 0
dissipate_strength = 20
overlays = 0
@@ -192,7 +192,7 @@
consume_range = 3
dissipate_delay = 10
dissipate_track = 0
- dissipate_strength = 10
+ dissipate_strength = 8
overlays = 0
if(chained)
overlays = "chain_s7"
diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm
index 1d0c1ee7fb..12076ac499 100644
--- a/code/modules/power/smes.dm
+++ b/code/modules/power/smes.dm
@@ -308,7 +308,10 @@
data["chargeMode"] = input_attempt
data["chargeLevel"] = round(input_level/1000, 0.1)
data["chargeMax"] = round(input_level_max/1000)
- data["chargeLoad"] = round(terminal.powernet.avail/1000, 0.1)
+ if (terminal && terminal.powernet)
+ data["chargeLoad"] = round(terminal.powernet.avail/1000, 0.1)
+ else
+ data["chargeLoad"] = 0
data["outputOnline"] = output_attempt
data["outputLevel"] = round(output_level/1000, 0.1)
data["outputMax"] = round(output_level_max/1000)
diff --git a/code/modules/projectiles/ammunition/boxes.dm b/code/modules/projectiles/ammunition/boxes.dm
index b1cb0964d1..2ca770dff5 100644
--- a/code/modules/projectiles/ammunition/boxes.dm
+++ b/code/modules/projectiles/ammunition/boxes.dm
@@ -53,6 +53,10 @@
name = "magazine (.45 flash)"
ammo_type = /obj/item/ammo_casing/c45f
+/obj/item/ammo_magazine/c45m/ap
+ name = "magazine (.45 AP)"
+ ammo_type = /obj/item/ammo_casing/c45ap
+
/obj/item/ammo_magazine/c45uzi
name = "stick magazine (.45)"
icon_state = "uzi45"
@@ -75,6 +79,10 @@
caliber = ".45"
max_ammo = 20
+/obj/item/ammo_magazine/tommymag/ap
+ name = "tommygun magazine (.45 AP)"
+ ammo_type = /obj/item/ammo_casing/c45ap
+
/obj/item/ammo_magazine/tommymag/empty
initial_ammo = 0
@@ -88,6 +96,10 @@
caliber = ".45"
max_ammo = 50
+/obj/item/ammo_magazine/tommydrum/ap
+ name = "tommygun drum magazine (.45 AP)"
+ ammo_type = /obj/item/ammo_casing/c45ap
+
/obj/item/ammo_magazine/tommydrum/empty
initial_ammo = 0
diff --git a/code/modules/projectiles/ammunition/bullets.dm b/code/modules/projectiles/ammunition/bullets.dm
index 51652c4ccf..2fca9a3ffd 100644
--- a/code/modules/projectiles/ammunition/bullets.dm
+++ b/code/modules/projectiles/ammunition/bullets.dm
@@ -63,6 +63,12 @@
caliber = ".45"
projectile_type = /obj/item/projectile/bullet/pistol/medium
+/obj/item/ammo_casing/c45ap
+ desc = "A .45 Armor-Piercing bullet casing."
+ caliber = ".45"
+ icon_state = "r-casing"
+ projectile_type = /obj/item/projectile/bullet/pistol/medium/ap
+
/obj/item/ammo_casing/c45p
desc = "A .45 practice bullet casing."
caliber = ".45"
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index b026950f69..98dd1f987c 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -284,7 +284,10 @@
if(one_handed_penalty >= 2)
user << "You struggle to keep \the [src] pointed at the correct position with just one hand!"
- admin_attack_log(usr, attacker_message="Fired [src]", admin_message="fired a gun ([src]) (MODE: [src.mode_name]) [reflex ? "by reflex" : "manually"].")
+ if(reflex)
+ admin_attack_log(user, target, attacker_message = "fired [src] by reflex.", victim_message = "triggered a reflex shot from [src].", admin_message = "shot [target], who triggered gunfire ([src]) by reflex)")
+ else
+ admin_attack_log(usr, attacker_message="Fired [src]", admin_message="fired a gun ([src]) (MODE: [src.mode_name]) [reflex ? "by reflex" : "manually"].")
//update timing
user.setClickCooldown(DEFAULT_QUICK_COOLDOWN)
diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm
index 90da6cac49..520333c242 100644
--- a/code/modules/projectiles/guns/projectile/shotgun.dm
+++ b/code/modules/projectiles/guns/projectile/shotgun.dm
@@ -90,10 +90,11 @@
if(istype(A, /obj/item/weapon/circular_saw) || istype(A, /obj/item/weapon/melee/energy) || istype(A, /obj/item/weapon/pickaxe/plasmacutter))
user << "You begin to shorten the barrel of \the [src]."
if(loaded.len)
- for(var/i in 1 to max_shells)
- afterattack(user, user) //will this work? //it will. we call it twice, for twice the FUN
- playsound(user, fire_sound, 50, 1)
+ var/burstsetting = burst
+ burst = 2
user.visible_message("The shotgun goes off!", "The shotgun goes off in your face!")
+ Fire_userless(user)
+ burst = burstsetting
return
if(do_after(user, 30)) //SHIT IS STEALTHY EYYYYY
icon_state = "sawnshotgun"
diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm
index f713f1cf1f..29d130612f 100644
--- a/code/modules/projectiles/projectile/bullets.dm
+++ b/code/modules/projectiles/projectile/bullets.dm
@@ -127,12 +127,16 @@
damage = 20
/obj/item/projectile/bullet/pistol/ap
- damage = 20
+ damage = 15
armor_penetration = 30
/obj/item/projectile/bullet/pistol/medium
damage = 25
+/obj/item/projectile/bullet/pistol/medium/ap
+ damage = 20
+ armor_penetration = 15
+
/obj/item/projectile/bullet/pistol/strong //revolvers and matebas
damage = 60
diff --git a/code/modules/projectiles/targeting/targeting_triggers.dm b/code/modules/projectiles/targeting/targeting_triggers.dm
index 9fd2208a35..2544fae913 100644
--- a/code/modules/projectiles/targeting/targeting_triggers.dm
+++ b/code/modules/projectiles/targeting/targeting_triggers.dm
@@ -26,4 +26,4 @@
owner.visible_message("\The [owner] pulls the trigger reflexively!")
var/obj/item/weapon/gun/G = aiming_with
if(istype(G))
- G.Fire(aiming_at, owner)
+ G.Fire(aiming_at, owner, reflex = 1)
diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm
index 96aa1c238d..cf2f7f7968 100644
--- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm
@@ -5,6 +5,7 @@
reagent_state = LIQUID
metabolism = REM * 5
mrate_static = TRUE
+ affects_dead = 1 //so you can pump blood into someone before defibbing them
color = "#C80000"
glass_name = "tomato juice"
@@ -162,7 +163,7 @@
/datum/reagent/fuel/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(issmall(M)) removed *= 2
- M.adjustToxLoss(2 * removed)
+ M.adjustToxLoss(4 * removed)
/datum/reagent/fuel/touch_mob(var/mob/living/L, var/amount)
if(istype(L))
diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm
index 33f42c3eb0..e166fb12eb 100644
--- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm
@@ -288,6 +288,12 @@
var/eyes_covered = 0
var/mouth_covered = 0
var/obj/item/safe_thing = null
+
+ var/effective_strength = 5
+
+ if(alien == IS_SKRELL) //Larger eyes means bigger targets.
+ effective_strength = 8
+
if(istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
if(!H.can_feel_pain())
@@ -316,19 +322,19 @@
return
else if(eyes_covered)
M << "Your [safe_thing] protect you from most of the pepperspray!"
- M.eye_blurry = max(M.eye_blurry, 15)
- M.eye_blind = max(M.eye_blind, 5)
+ M.eye_blurry = max(M.eye_blurry, effective_strength * 3)
+ M.eye_blind = max(M.eye_blind, effective_strength)
M.Stun(5)
M.Weaken(5)
return
else if (mouth_covered) // Mouth cover is better than eye cover
M << "Your [safe_thing] protects your face from the pepperspray!"
- M.eye_blurry = max(M.eye_blurry, 5)
+ M.eye_blurry = max(M.eye_blurry, effective_strength)
return
else // Oh dear :D
M << "You're sprayed directly in the eyes with pepperspray!"
- M.eye_blurry = max(M.eye_blurry, 25)
- M.eye_blind = max(M.eye_blind, 10)
+ M.eye_blurry = max(M.eye_blurry, effective_strength * 5)
+ M.eye_blind = max(M.eye_blind, effective_strength * 2)
M.Stun(5)
M.Weaken(5)
return
diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm
index 3f6a499ee0..8bbb4ac950 100644
--- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm
@@ -311,23 +311,6 @@
var/mob/living/carbon/human/H = M
H.update_mutations()
-/datum/reagent/hyperzine
- name = "Hyperzine"
- id = "hyperzine"
- description = "Hyperzine is a highly effective, long lasting, muscle stimulant."
- reagent_state = LIQUID
- color = "#FF3300"
- metabolism = REM * 0.3
- mrate_static = TRUE
- overdose = REAGENTS_OVERDOSE * 0.5
-
-/datum/reagent/hyperzine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
- if(alien == IS_DIONA)
- return
- if(prob(5))
- M.emote(pick("twitch", "blink_r", "shiver"))
- M.add_chemical_effect(CE_SPEEDBOOST, 1)
-
/datum/reagent/ethylredoxrazine
name = "Ethylredoxrazine"
id = "ethylredoxrazine"
diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm
index dd31ac05e4..6122f474da 100644
--- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm
@@ -79,6 +79,39 @@
M.adjustOxyLoss(20 * removed)
M.sleeping += 1
+/datum/reagent/toxin/hyperzine
+ name = "Hyperzine"
+ id = "hyperzine"
+ description = "Hyperzine is a highly effective, long lasting, muscle stimulant."
+ reagent_state = LIQUID
+ color = "#FF3300"
+ overdose = REAGENTS_OVERDOSE * 0.5
+ strength = 2
+
+/datum/reagent/toxin/hyperzine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
+ ..()
+ if(prob(5))
+ M.emote(pick("twitch", "blink_r", "shiver"))
+ M.add_chemical_effect(CE_SPEEDBOOST, 1)
+
+/datum/reagent/toxin/stimm //Homemade Hyperzine
+ name = "Stimm"
+ id = "stimm"
+ description = "A homemade stimulant with some serious side-effects."
+ color = "#d0583a"
+ metabolism = REM * 3
+ overdose = 10
+ strength = 3
+
+/datum/reagent/toxin/stimm/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
+ ..()
+ if(prob(15))
+ M.emote(pick("twitch", "blink_r", "shiver"))
+ if(prob(15))
+ M.visible_message("[M] shudders violently.", "You shudder uncontrollably, it hurts.")
+ M.take_organ_damage(6 * removed, 0)
+ M.add_chemical_effect(CE_SPEEDBOOST, 1)
+
/datum/reagent/toxin/potassium_chloride
name = "Potassium Chloride"
id = "potassium_chloride"
@@ -213,9 +246,14 @@
/datum/reagent/lexorin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
return
- M.take_organ_damage(3 * removed, 0)
- if(M.losebreath < 15)
- M.losebreath++
+ if(alien == IS_SKRELL)
+ M.take_organ_damage(2.4 * removed, 0)
+ if(M.losebreath < 10)
+ M.losebreath++
+ else
+ M.take_organ_damage(3 * removed, 0)
+ if(M.losebreath < 15)
+ M.losebreath++
/datum/reagent/mutagen
name = "Unstable mutagen"
@@ -281,16 +319,20 @@
if(alien == IS_DIONA)
return
+ var/threshold = 1
+ if(alien == IS_SKRELL)
+ threshold = 1.2
+
var/effective_dose = dose
if(issmall(M))
effective_dose *= 2
- if(effective_dose < 1)
+ if(effective_dose < 1 * threshold)
if(effective_dose == metabolism * 2 || prob(5))
M.emote("yawn")
- else if(effective_dose < 1.5)
+ else if(effective_dose < 1.5 * threshold)
M.eye_blurry = max(M.eye_blurry, 10)
- else if(effective_dose < 5)
+ else if(effective_dose < 5 * threshold)
if(prob(50))
M.Weaken(2)
M.drowsyness = max(M.drowsyness, 20)
@@ -311,6 +353,10 @@
if(alien == IS_DIONA)
return
+ var/threshold = 1
+ if(alien == IS_SKRELL)
+ threshold = 1.2
+
var/effective_dose = dose
if(issmall(M))
effective_dose *= 2
@@ -318,13 +364,13 @@
if(effective_dose == metabolism)
M.confused += 2
M.drowsyness += 2
- else if(effective_dose < 2)
+ else if(effective_dose < 2 * threshold)
M.Weaken(30)
M.eye_blurry = max(M.eye_blurry, 10)
else
M.sleeping = max(M.sleeping, 30)
- if(effective_dose > 1)
+ if(effective_dose > 1 * threshold)
M.adjustToxLoss(removed)
/datum/reagent/chloralhydrate/beer2 //disguised as normal beer for use by emagged brobots
@@ -350,7 +396,12 @@
/datum/reagent/space_drugs/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
return
- M.druggy = max(M.druggy, 15)
+
+ var/drug_strength = 15
+ if(alien == IS_SKRELL)
+ drug_strength = drug_strength * 0.8
+
+ M.druggy = max(M.druggy, drug_strength)
if(prob(10) && isturf(M.loc) && !istype(M.loc, /turf/space) && M.canmove && !M.restrained())
step(M, pick(cardinal))
if(prob(7))
@@ -384,8 +435,11 @@
/datum/reagent/cryptobiolin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
return
- M.make_dizzy(4)
- M.confused = max(M.confused, 20)
+ var/drug_strength = 4
+ if(alien == IS_SKRELL)
+ drug_strength = drug_strength * 0.8
+ M.make_dizzy(drug_strength)
+ M.confused = max(M.confused, drug_strength * 5)
/datum/reagent/impedrezene
name = "Impedrezene"
@@ -418,7 +472,11 @@
/datum/reagent/mindbreaker/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
return
- M.hallucination = max(M.hallucination, 100)
+
+ var/drug_strength = 100
+ if(alien == IS_SKRELL)
+ drug_strength *= 0.8
+ M.hallucination = max(M.hallucination, drug_strength)
/datum/reagent/psilocybin
name = "Psilocybin"
@@ -431,16 +489,21 @@
/datum/reagent/psilocybin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
return
+
+ var/threshold = 1
+ if(alien == IS_SKRELL)
+ threshold = 1.2
+
M.druggy = max(M.druggy, 30)
var/effective_dose = dose
if(issmall(M)) effective_dose *= 2
- if(effective_dose < 1)
+ if(effective_dose < 1 * threshold)
M.apply_effect(3, STUTTER)
M.make_dizzy(5)
if(prob(5))
M.emote(pick("twitch", "giggle"))
- else if(effective_dose < 2)
+ else if(effective_dose < 2 * threshold)
M.apply_effect(3, STUTTER)
M.make_jittery(5)
M.make_dizzy(5)
diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm
index 081be5d54a..4d7d13e5b3 100644
--- a/code/modules/reagents/Chemistry-Recipes.dm
+++ b/code/modules/reagents/Chemistry-Recipes.dm
@@ -356,6 +356,14 @@
required_reagents = list("sugar" = 1, "phosphorus" = 1, "sulfur" = 1)
result_amount = 3
+/datum/chemical_reaction/stimm
+ name = "Stimm"
+ id = "stimm"
+ result = "stimm"
+ required_reagents = list("sugar" = 1, "fuel" = 1)
+ catalysts = list("fuel" = 5)
+ result_amount = 2
+
/datum/chemical_reaction/ryetalyn
name = "Ryetalyn"
id = "ryetalyn"
diff --git a/code/modules/reagents/dispenser/cartridge_presets.dm b/code/modules/reagents/dispenser/cartridge_presets.dm
index 0aecdc7600..ab82dc53f4 100644
--- a/code/modules/reagents/dispenser/cartridge_presets.dm
+++ b/code/modules/reagents/dispenser/cartridge_presets.dm
@@ -59,6 +59,7 @@
orange spawn_reagent = "orangejuice"
lime spawn_reagent = "limejuice"
watermelon spawn_reagent = "watermelonjuice"
+ lemon spawn_reagent = "lemonjuice"
// Bar, coffee
coffee spawn_reagent = "coffee"
diff --git a/code/modules/reagents/dispenser/dispenser_presets.dm b/code/modules/reagents/dispenser/dispenser_presets.dm
index f23885795c..63f65335f4 100644
--- a/code/modules/reagents/dispenser/dispenser_presets.dm
+++ b/code/modules/reagents/dispenser/dispenser_presets.dm
@@ -82,7 +82,8 @@
/obj/item/weapon/reagent_containers/chem_disp_cartridge/sugar,
/obj/item/weapon/reagent_containers/chem_disp_cartridge/orange,
/obj/item/weapon/reagent_containers/chem_disp_cartridge/lime,
- /obj/item/weapon/reagent_containers/chem_disp_cartridge/watermelon
+ /obj/item/weapon/reagent_containers/chem_disp_cartridge/watermelon,
+ /obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon
)
/obj/machinery/chemical_dispenser/bar_alc
diff --git a/code/modules/reagents/dispenser/supply.dm b/code/modules/reagents/dispenser/supply.dm
index 0487e8f401..3b82e79776 100644
--- a/code/modules/reagents/dispenser/supply.dm
+++ b/code/modules/reagents/dispenser/supply.dm
@@ -101,7 +101,8 @@
/obj/item/weapon/reagent_containers/chem_disp_cartridge/sugar,
/obj/item/weapon/reagent_containers/chem_disp_cartridge/orange,
/obj/item/weapon/reagent_containers/chem_disp_cartridge/lime,
- /obj/item/weapon/reagent_containers/chem_disp_cartridge/watermelon
+ /obj/item/weapon/reagent_containers/chem_disp_cartridge/watermelon,
+ /obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon
)
cost = 50
containertype = /obj/structure/closet/crate
@@ -222,6 +223,7 @@ PACK(sodawater, /obj/item/weapon/reagent_containers/chem_disp_cartridge/sodawat
PACK(lemon_lime, /obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon_lime, "Reagent refill - Lemon-Lime Juice", "lemon-lime juice reagent cartridge crate", 15)
PACK(orange, /obj/item/weapon/reagent_containers/chem_disp_cartridge/orange, "Reagent refill - Orange Juice", "orange juice reagent cartridge crate", 15)
PACK(lime, /obj/item/weapon/reagent_containers/chem_disp_cartridge/lime, "Reagent refill - Lime Juice", "lime juice reagent cartridge crate", 15)
+PACK(lemon, /obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon, "Reagent refill - Lemon Juice", "lemon juice reagent cartridge crate", 15)
PACK(watermelon, /obj/item/weapon/reagent_containers/chem_disp_cartridge/watermelon, "Reagent refill - Watermelon Juice", "watermelon juice reagent cartridge crate", 15)
PACK(coffee, /obj/item/weapon/reagent_containers/chem_disp_cartridge/coffee, "Reagent refill - Coffee", "coffee reagent cartridge crate", 15)
PACK(cafe_latte, /obj/item/weapon/reagent_containers/chem_disp_cartridge/cafe_latte, "Reagent refill - Cafe Latte", "cafe latte reagent cartridge crate", 15)
diff --git a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm
index a8a8bca6d3..0045769d74 100644
--- a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm
+++ b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm
@@ -421,6 +421,18 @@
..()
reagents.add_reagent("orangejuice", 100)
+/obj/item/weapon/reagent_containers/food/drinks/bottle/milk
+ name = "Large Milk Carton"
+ desc = "It's milk. This carton's large enough to serve your biggest milk drinkers."
+ icon_state = "milk"
+ item_state = "carton"
+ center_of_mass = list("x"=16, "y"=9)
+ isGlass = 0
+
+/obj/item/weapon/reagent_containers/food/drinks/bottle/milk/New()
+ ..()
+ reagents.add_reagent("milk", 100)
+
/obj/item/weapon/reagent_containers/food/drinks/bottle/cream
name = "Milk Cream"
desc = "It's cream. Made from milk. What else did you think you'd find in there?"
@@ -457,6 +469,18 @@
..()
reagents.add_reagent("limejuice", 100)
+/obj/item/weapon/reagent_containers/food/drinks/bottle/lemonjuice
+ name = "Lemon Juice"
+ desc = "Sweet-sour goodness. Minus the sweet."
+ icon_state = "lemonjuice"
+ item_state = "carton"
+ center_of_mass = list("x"=16, "y"=8)
+ isGlass = 0
+
+/obj/item/weapon/reagent_containers/food/drinks/bottle/lemonjuice/New()
+ ..()
+ reagents.add_reagent("lemonjuice", 100)
+
//Small bottles
/obj/item/weapon/reagent_containers/food/drinks/bottle/small
volume = 50
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index 4bf97175d1..bbb0b3e8ad 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -57,7 +57,6 @@
return 0
if(user.a_intent != I_HELP) //in case it is ever used as a surgery tool
return ..()
- afterattack(M, user, 1)
return 1
/obj/item/weapon/reagent_containers/syringe/afterattack(obj/target, mob/user, proximity)
@@ -105,8 +104,13 @@
if(H.species && !H.should_have_organ(O_HEART))
H.reagents.trans_to_obj(src, amount)
else
+ if(ismob(H) && H != user)
+ if(!do_mob(user, target, time))
+ return
B = T.take_blood(src, amount)
else
+ if(!do_mob(user, target, time))
+ return
B = T.take_blood(src,amount)
if (B)
diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm
index 39004b3e95..49d251d311 100644
--- a/code/modules/reagents/reagent_dispenser.dm
+++ b/code/modules/reagents/reagent_dispenser.dm
@@ -212,8 +212,8 @@
cups = 10
/obj/structure/reagent_dispensers/water_cooler/New()
+ ..()
if(bottle)
- ..()
reagents.add_reagent("water",120)
update_icon()
diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm
index 13656d833a..fe440c0c53 100644
--- a/code/modules/recycling/disposal.dm
+++ b/code/modules/recycling/disposal.dm
@@ -106,6 +106,16 @@
update()
return
+ if(istype(I, /obj/item/weapon/material/ashtray))
+ var/obj/item/weapon/material/ashtray/A = I
+ if(A.contents.len > 0)
+ user.visible_message("\The [user] empties \the [A.name] into [src].")
+ for(var/obj/item/O in A.contents)
+ O.forceMove(src)
+ A.update_icon()
+ update()
+ return
+
var/obj/item/weapon/grab/G = I
if(istype(G)) // handle grabbed mob
if(ismob(G.affecting))
diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm
index 1c72024342..38f3022c9c 100644
--- a/code/modules/research/designs.dm
+++ b/code/modules/research/designs.dm
@@ -349,6 +349,7 @@ other types of metals and chemistry for reagents).
materials = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 1000, "diamond" = 2000)
build_path = /obj/item/weapon/pickaxe/diamonddrill
sort_string = "KAAAE"
+
///////////////////////////////////
/////////Shield Generators/////////
///////////////////////////////////
@@ -731,6 +732,14 @@ other types of metals and chemistry for reagents).
build_path = /obj/item/weapon/storage/box/syndie_kit/chameleon
sort_string = "VASBA"
+/datum/design/item/experimental_welder
+ name = "Expiermental Welding Tool"
+ desc = "A welding tool that generate fuel for itself."
+ id = "expwelder"
+ req_tech = list(TECH_ENGINEERING = 4, TECH_PHORON = 3, TECH_MATERIAL = 4)
+ materials = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 120, "phoron" = 100)
+ build_path = /obj/item/weapon/weldingtool/experimental
+ sort_string = "VASCA"
/*
CIRCUITS BELOW
*/
diff --git a/code/modules/research/prosfab_designs.dm b/code/modules/research/prosfab_designs.dm
index d59c2af609..43e933c00c 100644
--- a/code/modules/research/prosfab_designs.dm
+++ b/code/modules/research/prosfab_designs.dm
@@ -44,6 +44,7 @@
H.real_name = "Synthmorph #[rand(100,999)]"
H.name = H.real_name
H.dir = 2
+ H.add_language("Encoded Audio Language")
return H
//////////////////// Prosthetics ////////////////////
diff --git a/code/modules/research/rdmachines.dm b/code/modules/research/rdmachines.dm
index 2bcf7ef66e..cacdefae23 100644
--- a/code/modules/research/rdmachines.dm
+++ b/code/modules/research/rdmachines.dm
@@ -36,19 +36,20 @@
/obj/machinery/r_n_d/proc/getMaterialName(var/type)
switch(type)
- if(/obj/item/stack/material/steel)
+ //50-stacks weren't working despite being a subtype of the others, let's just force it in
+ if(/obj/item/stack/material/steel, /obj/item/stack/material/steel/fifty)
return DEFAULT_WALL_MATERIAL
- if(/obj/item/stack/material/glass)
+ if(/obj/item/stack/material/glass, /obj/item/stack/material/glass/fifty)
return "glass"
- if(/obj/item/stack/material/gold)
+ if(/obj/item/stack/material/gold, /obj/item/stack/material/gold/fifty)
return "gold"
- if(/obj/item/stack/material/silver)
+ if(/obj/item/stack/material/silver, /obj/item/stack/material/silver/fifty)
return "silver"
- if(/obj/item/stack/material/phoron)
+ if(/obj/item/stack/material/phoron, /obj/item/stack/material/phoron/fifty)
return "phoron"
- if(/obj/item/stack/material/uranium)
+ if(/obj/item/stack/material/uranium, /obj/item/stack/material/uranium/fifty)
return "uranium"
- if(/obj/item/stack/material/diamond)
+ if(/obj/item/stack/material/diamond, /obj/item/stack/material/diamond/fifty)
return "diamond"
/obj/machinery/r_n_d/proc/eject(var/material, var/amount)
diff --git a/code/modules/supermatter/supermatter.dm b/code/modules/supermatter/supermatter.dm
index 4e80282daa..bf147afd7e 100644
--- a/code/modules/supermatter/supermatter.dm
+++ b/code/modules/supermatter/supermatter.dm
@@ -83,17 +83,10 @@
//How much hallucination should it produce per unit of power?
var/config_hallucination_power = 0.1
- var/obj/item/device/radio/radio
-
var/debug = 0
-/obj/machinery/power/supermatter/New()
- . = ..()
- radio = new /obj/item/device/radio{channels=list("Engineering")}(src)
-
/obj/machinery/power/supermatter/Destroy()
- qdel(radio)
. = ..()
/obj/machinery/power/supermatter/proc/explode()
@@ -146,13 +139,13 @@
else
alert_msg = null
if(alert_msg)
- radio.autosay(alert_msg, "Supermatter Monitor", "Engineering")
+ global_announcer.autosay(alert_msg, "Supermatter Monitor", "Engineering")
//Public alerts
if((damage > emergency_point) && !public_alert)
- radio.autosay("WARNING: SUPERMATTER CRYSTAL DELAMINATION IMMINENT!", "Supermatter Monitor")
+ global_announcer.autosay("WARNING: SUPERMATTER CRYSTAL DELAMINATION IMMINENT!", "Supermatter Monitor")
public_alert = 1
else if(safe_warned && public_alert)
- radio.autosay(alert_msg, "Supermatter Monitor")
+ global_announcer.autosay(alert_msg, "Supermatter Monitor")
public_alert = 0
diff --git a/code/modules/surgery/face.dm b/code/modules/surgery/face.dm
index 744b1d56dd..dc1c0ab31c 100644
--- a/code/modules/surgery/face.dm
+++ b/code/modules/surgery/face.dm
@@ -5,6 +5,7 @@
/datum/surgery_step/face
priority = 2
+ req_open = 0
can_infect = 0
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
if (!hasorgans(target))
diff --git a/code/modules/surgery/generic.dm b/code/modules/surgery/generic.dm
index e6dc9d9860..f08d677f6a 100644
--- a/code/modules/surgery/generic.dm
+++ b/code/modules/surgery/generic.dm
@@ -29,6 +29,7 @@
/obj/item/weapon/melee/energy/sword = 5
)
priority = 2
+ req_open = 0
min_duration = 90
max_duration = 110
@@ -67,6 +68,7 @@
/obj/item/weapon/scalpel/manager = 100
)
priority = 2
+ req_open = 0
min_duration = 80
max_duration = 120
@@ -108,6 +110,7 @@
/obj/item/weapon/material/knife = 75, \
/obj/item/weapon/material/shard = 50, \
)
+ req_open = 0
min_duration = 90
max_duration = 110
@@ -273,6 +276,7 @@
/obj/item/weapon/circular_saw = 100, \
/obj/item/weapon/material/hatchet = 75
)
+ req_open = 0
min_duration = 110
max_duration = 160
diff --git a/code/modules/surgery/limb_reattach.dm b/code/modules/surgery/limb_reattach.dm
index 8e6e8da21f..3b6be3b9eb 100644
--- a/code/modules/surgery/limb_reattach.dm
+++ b/code/modules/surgery/limb_reattach.dm
@@ -5,6 +5,7 @@
/datum/surgery_step/limb/
priority = 3 // Must be higher than /datum/surgery_step/internal
+ req_open = 0
can_infect = 0
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
if (!hasorgans(target))
diff --git a/code/modules/surgery/organs_internal.dm b/code/modules/surgery/organs_internal.dm
index ccb90c20d6..f476f7b948 100644
--- a/code/modules/surgery/organs_internal.dm
+++ b/code/modules/surgery/organs_internal.dm
@@ -78,6 +78,8 @@
I.damage = 0
if(I.organ_tag == O_EYES)
target.sdisabilities &= ~BLIND
+ if(I.organ_tag == O_LUNGS)
+ target.losebreath = 0
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
diff --git a/code/modules/surgery/other.dm b/code/modules/surgery/other.dm
index d0ba959111..4362dc969f 100644
--- a/code/modules/surgery/other.dm
+++ b/code/modules/surgery/other.dm
@@ -175,6 +175,7 @@
/obj/item/weapon/circular_saw = 60,
/obj/item/weapon/pickaxe/plasmacutter = 100
)
+ req_open = 0
can_infect = 0
blood_level = 0
diff --git a/code/modules/surgery/robotics.dm b/code/modules/surgery/robotics.dm
index 17729a6304..544ddbbcfe 100644
--- a/code/modules/surgery/robotics.dm
+++ b/code/modules/surgery/robotics.dm
@@ -27,6 +27,7 @@
/obj/item/weapon/coin = 50,
/obj/item/weapon/material/kitchen/utensil/knife = 50
)
+ req_open = 0
min_duration = 90
max_duration = 110
diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm
index 109da96b69..38b919823f 100644
--- a/code/modules/surgery/surgery.dm
+++ b/code/modules/surgery/surgery.dm
@@ -3,6 +3,8 @@
/datum/surgery_step
var/priority = 0 //steps with higher priority would be attempted first
+ var/req_open = 1 //1 means the part must be cut open, 0 means it doesn't
+
// type path referencing tools that can be used for this step, and how well are they suited for it
var/list/allowed_tools = null
// type paths referencing races that this step applies to.
@@ -77,6 +79,20 @@
E.germ_level = max(germ_level,E.germ_level) //as funny as scrubbing microbes out with clean gloves is - no.
+
+/obj/item/proc/can_do_surgery(mob/living/carbon/M, mob/living/user)
+ if(M == user)
+ return 0
+ if(!ishuman(M))
+ return 1
+ var/mob/living/carbon/human/H = M
+ var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting)
+ if(affected)
+ for(var/datum/surgery_step/S in surgery_steps)
+ if(!affected.open && S.req_open)
+ return 0
+ return 0
+
/obj/item/proc/do_surgery(mob/living/carbon/M, mob/living/user)
if(!istype(M))
return 0
@@ -107,10 +123,6 @@
var/mob/living/carbon/human/H = M
H.update_surgery()
return 1 //don't want to do weapony things after surgery
-
- if (user.a_intent == I_HELP)
- user << "You can't see any useful way to use [src] on [M]."
- return 1
return 0
/proc/sort_surgeries()
diff --git a/code/modules/ventcrawl/ventcrawl.dm b/code/modules/ventcrawl/ventcrawl.dm
index 9b2b83d3e7..5c2db9f3de 100644
--- a/code/modules/ventcrawl/ventcrawl.dm
+++ b/code/modules/ventcrawl/ventcrawl.dm
@@ -81,7 +81,7 @@ var/list/ventcrawl_machinery = list(
var/atom/pipe
var/list/pipes = list()
for(var/obj/machinery/atmospherics/unary/U in range(1))
- if(is_type_in_list(U,ventcrawl_machinery) && Adjacent(U))
+ if(is_type_in_list(U,ventcrawl_machinery) && Adjacent(U) && !U.welded)
pipes |= U
if(!pipes || !pipes.len)
to_chat(src, "There are no pipes that you can ventcrawl into within range!")
diff --git a/code/modules/xenoarcheaology/tools/equipment.dm b/code/modules/xenoarcheaology/tools/equipment.dm
index 2913c1bbac..1c2b1f9773 100644
--- a/code/modules/xenoarcheaology/tools/equipment.dm
+++ b/code/modules/xenoarcheaology/tools/equipment.dm
@@ -19,6 +19,7 @@
item_state = "cespace_suit"
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 100)
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit)
+ slowdown = 1
/obj/item/clothing/head/helmet/space/anomaly
name = "Excavation hood"
diff --git a/code/modules/xenobio2/mob/xeno procs.dm b/code/modules/xenobio2/mob/xeno procs.dm
index f4c0f31781..b72b1567fb 100644
--- a/code/modules/xenobio2/mob/xeno procs.dm
+++ b/code/modules/xenobio2/mob/xeno procs.dm
@@ -64,6 +64,9 @@ Procs for targeting
reagent_response = chemreact[R.id]
+ if(!reagent_response)
+ continue // just skip this reagent, rather than clearing the whole thing
+
if(reagent_response["toxic"])
adjustToxLoss(reagent_response["toxic"] * reagent_total)
diff --git a/code/unit_tests/loadout_tests.dm b/code/unit_tests/loadout_tests.dm
index 7ca778655a..aba7184229 100644
--- a/code/unit_tests/loadout_tests.dm
+++ b/code/unit_tests/loadout_tests.dm
@@ -9,7 +9,7 @@
if(!initial(G.display_name))
log_unit_test("[G]: Loadout - Missing display name.")
failed = 1
- else if(!initial(G.cost))
+ else if(isnull(initial(G.cost)))
log_unit_test("[G]: Loadout - Missing cost.")
failed = 1
else if(!initial(G.path))
diff --git a/code/world.dm b/code/world.dm
index 4fab455736..6ee4bec7b3 100644
--- a/code/world.dm
+++ b/code/world.dm
@@ -227,6 +227,19 @@ var/world_topic_spam_protect_time = world.timeofday
positions["misc"] = list()
positions["misc"][name] = rank
+ // Synthetics don't have actual records, so we will pull them from here.
+ for(var/mob/living/silicon/ai/ai in mob_list)
+ if(!positions["bot"])
+ positions["bot"] = list()
+ positions["bot"][ai.name] = "Artificial Intelligence"
+ for(var/mob/living/silicon/robot/robot in mob_list)
+ // No combat/syndicate cyborgs, no drones.
+ if(robot.module && robot.module.hide_on_manifest)
+ continue
+ if(!positions["bot"])
+ positions["bot"] = list()
+ positions["bot"][robot.name] = "[robot.modtype] [robot.braintype]"
+
for(var/k in positions)
positions[k] = list2params(positions[k]) // converts positions["heads"] = list("Bob"="Captain", "Bill"="CMO") into positions["heads"] = "Bob=Captain&Bill=CMO"
diff --git a/html/changelog.html b/html/changelog.html
index 7a6bdf04c3..1165018c4a 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -53,6 +53,178 @@
-->
+
01 December 2016
+
Anewbe updated:
+
+ - Adult Diona should be able to name themselves properly now. Tweaked from a Baystation PR by FTangSteve.
+ - Lightning spells and bioelectrogenesis will no longer stun outright.
+ - FBPs should no longer get mutations from radiation.
+ - Observe warning should properly show how long you have before you can join.
+ - Adds a Toggle Shoe Layer verb to shoes, that let them be worn over the uniform (ie tucking your pants into your shoes).
+ - Shoes now properly check if they can hold knives or not.
+ - Sign language can now be used while muzzled.
+
+
Datraen updated:
+
+ - Skrell are now more resistant to various chemicals, more susceptible to pepperspray.
+
+
ForFoxSake updated:
+
+ - Fixed a possible href exploit allowing any living player to speak any language.
+ - Organic beings can no longer speak Encoded Audio Language, although they can still understand it just fine.
+ - Positronic brains can now speak Encoded Audio Language.
+ - Station manufactured Full Body Prosthetics can now speak Encoded Audio Language.
+
+
MagmaRam updated:
+
+ - Corpses will now process a select few chemicals, meaning you can now add blood into people who bled out before defibbing them.
+ - Defibrilators fixed again.
+ - R&D machines will now accept stacks of metal and glass from Cargo orders properly.
+
+
N3X15 updated:
+
+ - Electrical storms no longer affect only cargo. If you're not cargo, your lights are no longer safe.
+
+
Nerezza updated:
+
+ - APCs now have a new EMP behavior. Regular APCs shut off for a few minutes, critical APCs (engine and AI) shut off for 30ish seconds. Medbay will now not be permanently disabled by EMPs if no engineers are available to fix their APCs.
+ - Bay's timed reboot interface for APCs has been ported for EMPed APCs.
+ - APCs affected by grid checks say so on their nanoUI now.
+ - APCs damaged by the apc_damage random event are now effectively emagged APCs. Anyone can operate their interface.
+ - Emagged APCs can now be repaired by removing their power cell and using a multitool to 'reboot' them manually.
+ - Nin and twiz no longer **** up APCs if they drain the battery completely.
+ - Nin and twiz drain power from the wire an APC is connected to first, then drain from the power cell to fill the drain's 'quota'. Because the amount of power given from the power net is random, this means the battery will still drain but this also means you don't need to crowbar tiles in a room if the APC is empty.
+ - Bluescreened APC wire panels now visibly open like they should.
+ - Bashing APCs open was only effective under certain circumstances, but would spam everyone anyway. This has been changed to only spam the user and to be more indicative of when you can bash the cover off.
+ - Full grammar pass on APCs.
+ - Hazard shutters animate slightly and play a sound so players can more readily identify where shutters are being pried.
+ - Two people can't pry the same shutter simultaneously anymore.
+ - Fixed a bug causing shutters to immediately pry open when people didn't want the shutter open.
+ - Inflatables can be deflated using ctrl-click.
+ - Inflatables can be deployed on adjacent tiles by clicking them.
+ - Bumping into closed inflatable doors will no longer freeze them for a few moments.
+
+
Yoshax updated:
+
+ - All Heads of Staff now get multi-color pens in their office.
+ - Doors that do not have an access requirement can now be opened when handcuffed.
+
+
+
21 November 2016
+
Anewbe updated:
+
+ - Drawing blood with a syringe now takes a moment.
+ - Communicators no longer have a loadout cost.
+ - Having more than 50 tox will now cause liver damage, rather than 60.
+ - Adds Stimm, a homemade hyperzine made of sugar and welding fuel.
+ - Hyperzine is now toxic.
+
+
Nerezza updated:
+
+ - Space suits now hide jumpsuits, so excessively bulky jumpsuits no longer peek through.
+ - Teshari wearing webbing now have the correct sprite overlay. More accessories need sprites, however.
+ - Teshari sprites no longer show the majority of suit accessories, anyone who wants to pitch in to fix this are invited to do so!
+ - Windoors can now be disassembled. Apply crowbar when open.
+ - Engiborgs and drons can name door and windoor assemblines now. Click an adjacent assembly with no modules active.
+ - Windoors now know how to name themselves. In addition, unnamed windoors now spawn with their default name instead of null.
+
+
RedStryker updated:
+
+ - Added a colorable hairflower to the loadout.
+ - Added a taqiyah to the loadout that can be colored with the color datum.
+ - Fixed the sprite for the red Security Hat backwards sprite so that the 'N' on it is no longer backwards.
+
+
Yoshax updated:
+
+ - All robots now get crowbars, flashes and fire extinguishers.
+ - IV Drips are no longer dense, meaning they can be walked through like chairs.
+ - Robots can now use the toggle lock verb on crates and lockers.
+ - There is now an experimental welding tool, it regenerates its fuel on its own! One is given to the Chief Engineer, produced in Research, or found in Syndicate toolboxes.
+
+
+
20 November 2016
+
Datraen updated:
+
+ - Global announcer now has access to engineering channel.
+ - Supermatter now uses the global announcer.
+
+
Nerezza updated:
+
+ - Digital FBP/Cyborg brains no longer drop brains.
+ - Digital FBP/Cyborg brains are tagged with their designation now.
+ - All cyborgs can now unbuckle people from beds/chairs. Just attack the structure with no module selected.
+ - Added the current station date to the Status tab. Ported from Baystation.
+
+
Yoshax updated:
+
+ - Adds the ability for Hydroponics Trays to enter cryogenic stasis. You can do this by using a multitool on one. Wheh in stasis the plant will be frozen in time, it will neither grow nor die. Now you can have a life!
+
+
+
18 November 2016
+
Anewbe updated:
+
+ - Added .45 and tommygun AP ammo to the uplink.
+ - CPR can be performed on corpses, doesn't actually help them.
+
+
Datraen updated:
+
+ - Makes cameras faster, removing a large chunk of bloat relating to taking pictures. Specifically for taking pictures of angry cheetos.
+
+
MagmaRam updated:
+
+ - Slimes will now properly process chems that have zero effect on them (that is, they'll get rid of them instead of clogging up their metabolism forever).
+
+
Nerezza updated:
+
+ - Added Lemon Juice to soda dispensers across the station. Reagent cartridge refills can be ordered via cargo.
+ - Added Lemon Juice and Milk Cartons to the bar's Booze-o-Mat. You can now order milkshakes and not get shot (maybe).
+
+
Yoshax updated:
+
+ - Being unable to breathe and having oxyloss will now cause brain damage that scales with the amount of oxyloss you have. Without oxygen, the brain takes damage and will EVENTUALLY die (but you would most likely die of actual oxyloss before that point.)
+
+
+
17 November 2016
+
Anewbe updated:
+
+ - Slowdown in armor sets moved to chest and legs, rather than arms and legs.
+ - Bullets and lasers will now show up on Autopsy Reports.
+ - Fixed all ERT calls being silent, regardless of selected option.
+ - Flashlights can now fit in rechargers.
+ - Added flashlights, maglights, and the secHUD sunglasses (Sec only) to the loadout.
+
+
TheGreyWolf updated:
+
+ - Added Sign language, which can be selected from character setup.
+
+
+
13 November 2016
+
Anewbe updated:
+
+ - Adds a list to prevent certain jobs from being certain roundstart antags, rather than outright preventing them.
+ - Surplus crates won't make more surplus crates.
+ - Random buys from uplinks will no longer buy anything out of the Badassery tab.
+ - Loincloth now has an on-mob sprite.
+ - Ported Bay's tape recorders (which actually work).
+
+
Broseph Stylin updated:
+
+ - Added HUD aviators to the loadout. They're restricted to security, and can toggle between HUD and flash protection modes, but won't offer both at once.
+
+
MagmaRam updated:
+
+ - Holsters can be concealed by some suit-slot items, others conceal all accessories.
+ - Fixed certain suit-slot items not hiding jumpsuits properly.
+
+
RedStryker updated:
+
+ - Adds a Guy Fawkes mask.
+
+
Yoshax updated:
+
+ - Clipboards can now be made out of wood.
+
+
25 October 2016
Anewbe updated:
@@ -74,15 +246,12 @@
- Supply department icons are now brown.
- Chemist icon is now white and red, like the rest of medical.
- Using a roll of tape on a person requires the same level of grip as handcuffs.
+ - The disclocation chance when using disarm intent with a weapon has had its' formula changed, meaning the threshold for always disclocatiing is now higher, and no longer 15 force. Meaning weapons will dislocate limbs less often and will also do less damage.
MagmaRam updated:
- Rates of blood loss now depend on the type of wound inflicted and where the wound is inflicted, as well as the damage.
-
Anewbe updated:
-
- - The disclocation chance when using disarm intent with a weapon has had its' formula changed, meaning the threshold for always disclocatiing is now higher, and no longer 15 force. Meaning weapons will dislocate limbs less often and will also do less damage.
-
Neerti updated:
- Changes how the grid check event works. A new machine called the grid checker exists in engineering, near the engineering substation. The actual event now involves a power spike originating from the engine, which the grid checker will activate upon sensing it, and causing a blackout. Engineering can restore power faster if they hack the grid checker correctly. A piece of paper left in the substation has more details.
diff --git a/html/changelogs/AtomicWorm-toggle-sechud.yml b/html/changelogs/Anewbe - EVA Gauntlets.yml
similarity index 87%
rename from html/changelogs/AtomicWorm-toggle-sechud.yml
rename to html/changelogs/Anewbe - EVA Gauntlets.yml
index c5da55dea4..167d6716cf 100644
--- a/html/changelogs/AtomicWorm-toggle-sechud.yml
+++ b/html/changelogs/Anewbe - EVA Gauntlets.yml
@@ -22,7 +22,7 @@
#################################
# Your name.
-author: Broseph Stylin
+author: Anewbe
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
delete-after: True
@@ -33,4 +33,4 @@ delete-after: True
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
changes:
- - rscadd: "Added HUD aviators to the loadout. They're restricted to security, and can toggle between HUD and flash protection modes, but won't offer both at once."
\ No newline at end of file
+ - bugfix: "EVA rig now has insulated gauntlets."
\ No newline at end of file
diff --git a/html/changelogs/ForFoxSake-AtmosTweaks.yml b/html/changelogs/ForFoxSake-AtmosTweaks.yml
new file mode 100644
index 0000000000..40100f11c7
--- /dev/null
+++ b/html/changelogs/ForFoxSake-AtmosTweaks.yml
@@ -0,0 +1,8 @@
+author: ForFoxSake
+
+delete-after: True
+
+changes:
+ - tweak: "Digital Valve pipes can now be made and moved."
+ - tweak: "Air Vents can now have their direction changed."
+ - maptweak: "Atmospherics is now a little less cluttered."
\ No newline at end of file
diff --git a/html/changelogs/MagmaRam - Implant.yml b/html/changelogs/MagmaRam - Implant.yml
new file mode 100644
index 0000000000..51c44d87c5
--- /dev/null
+++ b/html/changelogs/MagmaRam - Implant.yml
@@ -0,0 +1,36 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+#################################
+
+# Your name.
+author: MagmaRam
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - rscadd: "Added a nice implant that allows humans to speak EAL."
diff --git a/icons/mob/feet.dmi b/icons/mob/feet.dmi
index 8dde62588c..a3a7f4ed91 100644
Binary files a/icons/mob/feet.dmi and b/icons/mob/feet.dmi differ
diff --git a/icons/mob/hands.dmi b/icons/mob/hands.dmi
index dce4027b61..c95e588ba5 100644
Binary files a/icons/mob/hands.dmi and b/icons/mob/hands.dmi differ
diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi
index d3aca8ff63..8799515814 100644
Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ
diff --git a/icons/mob/human.dmi b/icons/mob/human.dmi
index 236f614eba..b629d862b8 100644
Binary files a/icons/mob/human.dmi and b/icons/mob/human.dmi differ
diff --git a/icons/mob/human_face.dmi b/icons/mob/human_face.dmi
index 731d48431a..0530d0ca29 100644
Binary files a/icons/mob/human_face.dmi and b/icons/mob/human_face.dmi differ
diff --git a/icons/mob/items/lefthand_hats.dmi b/icons/mob/items/lefthand_hats.dmi
index 6560a6b2f2..620da132c0 100644
Binary files a/icons/mob/items/lefthand_hats.dmi and b/icons/mob/items/lefthand_hats.dmi differ
diff --git a/icons/mob/items/lefthand_suits.dmi b/icons/mob/items/lefthand_suits.dmi
index e39f73ffca..6d335ccdbc 100644
Binary files a/icons/mob/items/lefthand_suits.dmi and b/icons/mob/items/lefthand_suits.dmi differ
diff --git a/icons/mob/items/righthand_hats.dmi b/icons/mob/items/righthand_hats.dmi
index 8697b80ba2..be3ed9b8ee 100644
Binary files a/icons/mob/items/righthand_hats.dmi and b/icons/mob/items/righthand_hats.dmi differ
diff --git a/icons/mob/items/righthand_suits.dmi b/icons/mob/items/righthand_suits.dmi
index 76734e1d42..f3310d2f77 100644
Binary files a/icons/mob/items/righthand_suits.dmi and b/icons/mob/items/righthand_suits.dmi differ
diff --git a/icons/mob/mask.dmi b/icons/mob/mask.dmi
index bb8e6b9461..8e84c82060 100644
Binary files a/icons/mob/mask.dmi and b/icons/mob/mask.dmi differ
diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi
index 9c6fcf25d9..1278a3e34a 100644
Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ
diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi
index 62a74c1486..faf2c6bb2e 100644
Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ
diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi
index 36eddb54dc..ae2c3ee288 100644
Binary files a/icons/obj/clothing/gloves.dmi and b/icons/obj/clothing/gloves.dmi differ
diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi
index a1b7ad85de..1fdc351f6b 100644
Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ
diff --git a/icons/obj/clothing/masks.dmi b/icons/obj/clothing/masks.dmi
index 3c65628900..ad962d394c 100644
Binary files a/icons/obj/clothing/masks.dmi and b/icons/obj/clothing/masks.dmi differ
diff --git a/icons/obj/clothing/shoes.dmi b/icons/obj/clothing/shoes.dmi
index b8e4b7b1c7..2db6cc7814 100644
Binary files a/icons/obj/clothing/shoes.dmi and b/icons/obj/clothing/shoes.dmi differ
diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi
index 0063c2b5a5..5f562d64da 100644
Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ
diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi
index 21b41a9955..f1d94ddb0e 100644
Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ
diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi
index 41da2fe40a..8714d670a1 100644
Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ
diff --git a/icons/obj/doors/DoorHazard.dmi b/icons/obj/doors/DoorHazard.dmi
index 35f4c474bf..d32526b388 100644
Binary files a/icons/obj/doors/DoorHazard.dmi and b/icons/obj/doors/DoorHazard.dmi differ
diff --git a/icons/obj/doors/DoorHazardGlass.dmi b/icons/obj/doors/DoorHazardGlass.dmi
index c8bb83ec59..d1b8c79efc 100644
Binary files a/icons/obj/doors/DoorHazardGlass.dmi and b/icons/obj/doors/DoorHazardGlass.dmi differ
diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi
index d2808954ab..c70873ccc7 100644
Binary files a/icons/obj/drinks.dmi and b/icons/obj/drinks.dmi differ
diff --git a/icons/obj/electronic_assemblies.dmi b/icons/obj/electronic_assemblies.dmi
index ab83834d66..c46a47ebbd 100644
Binary files a/icons/obj/electronic_assemblies.dmi and b/icons/obj/electronic_assemblies.dmi differ
diff --git a/icons/obj/hydroponics_machines.dmi b/icons/obj/hydroponics_machines.dmi
index 3373d03152..ed1bcf868a 100644
Binary files a/icons/obj/hydroponics_machines.dmi and b/icons/obj/hydroponics_machines.dmi differ
diff --git a/icons/obj/pipe-item.dmi b/icons/obj/pipe-item.dmi
index 1ad833316d..52abce03b2 100644
Binary files a/icons/obj/pipe-item.dmi and b/icons/obj/pipe-item.dmi differ
diff --git a/icons/obj/rig_modules.dmi b/icons/obj/rig_modules.dmi
index af2cf3aeb7..6ce7962fb7 100644
Binary files a/icons/obj/rig_modules.dmi and b/icons/obj/rig_modules.dmi differ
diff --git a/icons/turf/areas.dmi b/icons/turf/areas.dmi
index 46a14253bd..fd66266434 100755
Binary files a/icons/turf/areas.dmi and b/icons/turf/areas.dmi differ
diff --git a/maps/polaris-1.dmm b/maps/polaris-1.dmm
index 4b6bc788f9..1b8b6f6515 100644
--- a/maps/polaris-1.dmm
+++ b/maps/polaris-1.dmm
@@ -19,7 +19,7 @@
"aas" = (/obj/machinery/cryopod{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/cryo/station)
"aat" = (/obj/effect/landmark{name = "JoinLateCryo"},/obj/machinery/requests_console{department = "Crew Quarters"; pixel_y = 30},/turf/simulated/shuttle/floor,/area/shuttle/cryo/station)
"aau" = (/obj/machinery/computer/cryopod{density = 0; pixel_y = 32},/turf/simulated/shuttle/floor,/area/shuttle/cryo/station)
-"aav" = (/obj/effect/landmark{name = "JoinLateCryo"},/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{frequency = 1380; id_tag = "cryostorage_shuttle"; name = "cryostorage controller"; pixel_x = 0; pixel_y = 26; tag_door = "cryostorage_shuttle_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/cryo/station)
+"aav" = (/obj/random/contraband,/obj/random/maintenance/security,/obj/random/maintenance/security,/turf/simulated/floor,/area/maintenance/locker)
"aaw" = (/obj/machinery/cryopod,/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/cryo/station)
"aax" = (/obj/structure/cryofeed,/turf/simulated/shuttle/floor,/area/shuttle/cryo/station)
"aay" = (/obj/machinery/cryopod{dir = 4},/turf/simulated/shuttle/floor,/area/shuttle/cryo/station)
@@ -71,7 +71,7 @@
"abs" = (/obj/item/stack/material/glass/reinforced,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/locker)
"abt" = (/turf/simulated/floor,/area/maintenance/locker)
"abu" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/effect/floor_decal/industrial/warning,/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Solar - Fore Starboard"},/turf/simulated/floor,/area/maintenance/auxsolarstarboard)
-"abv" = (/obj/structure/closet/wardrobe/grey,/obj/item/weapon/storage/backpack,/obj/item/weapon/storage/backpack,/turf/simulated/floor/plating,/area/maintenance/locker)
+"abv" = (/obj/structure/closet/crate,/obj/random/action_figure,/obj/random/action_figure,/obj/random/action_figure,/obj/random/action_figure,/obj/random/maintenance/clean,/obj/random/toy,/turf/simulated/floor,/area/maintenance/library)
"abw" = (/obj/structure/closet/emcloset,/turf/simulated/floor,/area/maintenance/library)
"abx" = (/obj/machinery/power/tracker,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/airless,/area/solar/auxstarboard)
"aby" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/airless,/area/solar/auxstarboard)
@@ -91,7 +91,7 @@
"abM" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/obj/effect/decal/cleanable/dirt,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "solar_chapel_airlock"; name = "interior access button"; pixel_x = -26; pixel_y = 26; req_access = list(11,13)},/turf/simulated/floor,/area/maintenance/auxsolarstarboard)
"abN" = (/obj/machinery/door/airlock/engineering{icon_state = "door_closed"; locked = 0; name = "Fore Port Solar Access"; req_access = list(11)},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/maintenance/auxsolarstarboard)
"abO" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/maintenance/auxsolarstarboard)
-"abP" = (/obj/structure/closet/crate,/obj/random/action_figure,/obj/random/action_figure,/obj/random/action_figure,/obj/random/action_figure,/turf/simulated/floor,/area/maintenance/library)
+"abP" = (/obj/structure/table/rack,/obj/random/maintenance/clean,/obj/random/maintenance/cargo,/turf/simulated/floor,/area/maintenance/library)
"abQ" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/maintenance/library)
"abR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard)
"abS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_fore)
@@ -112,7 +112,7 @@
"ach" = (/turf/simulated/mineral/floor/ignore_mapgen,/turf/simulated/shuttle/wall{icon_state = "swall_c"; dir = 2; layer = 2},/area/shuttle/cryo/station)
"aci" = (/obj/machinery/lapvend,/turf/simulated/floor/tiled,/area/crew_quarters/locker)
"acj" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/structure/inflatable/door,/turf/simulated/floor,/area/maintenance/locker)
-"ack" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor,/area/maintenance/library)
+"ack" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/random/maintenance/cargo,/obj/structure/closet/crate,/obj/random/maintenance/cargo,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/library)
"acl" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/maintenance/library)
"acm" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1; icon_state = "map"; tag = "icon-manifold-f (NORTH)"},/turf/simulated/floor,/area/maintenance/library)
"acn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/maintenance/library)
@@ -135,7 +135,7 @@
"acE" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/maintenance/library)
"acF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/maintenance/library)
"acG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor,/area/maintenance/library)
-"acH" = (/obj/structure/girder,/turf/simulated/floor,/area/maintenance/locker)
+"acH" = (/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{frequency = 1380; id_tag = "cryostorage_shuttle"; name = "cryostorage controller"; pixel_x = 0; pixel_y = 26; tag_door = "cryostorage_shuttle_hatch"},/turf/simulated/shuttle/wall,/area/shuttle/cryo/station)
"acI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/turf/simulated/floor,/area/maintenance/library)
"acJ" = (/obj/item/weapon/stool/padded,/turf/simulated/floor/tiled,/area/crew_quarters/locker)
"acK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/library)
@@ -152,15 +152,15 @@
"acV" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/simulated/floor,/area/maintenance/library)
"acW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/turf/simulated/floor/plating,/area/maintenance/library)
"acX" = (/obj/machinery/atmospherics/valve{dir = 4},/obj/effect/decal/cleanable/spiderling_remains,/turf/simulated/floor,/area/maintenance/library)
-"acY" = (/obj/structure/closet,/obj/item/device/flashlight,/obj/effect/decal/cleanable/cobweb2,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating,/area/maintenance/library)
+"acY" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/lights/mixed,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/turf/simulated/floor/plating,/area/maintenance/library)
"acZ" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/maintenance/library)
"ada" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/maintenance/locker)
"adb" = (/obj/machinery/photocopier,/turf/simulated/floor/lino,/area/chapel/office)
"adc" = (/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/tiled/dark,/area/chapel/chapel_morgue)
"add" = (/turf/simulated/wall,/area/maintenance/library)
"ade" = (/obj/machinery/light,/turf/simulated/floor/wood,/area/library)
-"adf" = (/obj/structure/closet,/obj/item/weapon/towel/random,/obj/item/weapon/towel/random,/obj/item/weapon/towel/random,/obj/item/weapon/towel/random,/turf/simulated/floor,/area/maintenance/pool)
-"adg" = (/obj/structure/table/rack,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/plating,/area/maintenance/library)
+"adf" = (/obj/random/obstruction,/turf/simulated/floor,/area/maintenance/locker)
+"adg" = (/obj/item/weapon/storage/toolbox/syndicate,/obj/structure/closet,/obj/random/contraband,/obj/random/maintenance/clean,/obj/random/maintenance/cargo,/turf/simulated/floor,/area/maintenance/locker)
"adh" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/maintenance/library)
"adi" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/maintenance/library)
"adj" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor,/area/maintenance/library)
@@ -185,8 +185,8 @@
"adC" = (/obj/machinery/door/airlock/glass{name = "Locker Room"},/obj/machinery/door/firedoor/glass,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/crew_quarters/locker)
"adD" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_fore)
"adE" = (/obj/structure/disposalpipe/segment,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_fore)
-"adF" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/tank/oxygen,/obj/item/weapon/storage/belt/utility,/obj/item/clothing/mask/breath,/turf/simulated/floor/plating,/area/maintenance/security_starboard)
-"adG" = (/obj/structure/closet/wardrobe/grey,/obj/item/weapon/storage/backpack,/obj/item/weapon/storage/backpack,/turf/simulated/floor/plating,/area/maintenance/security_starboard)
+"adF" = (/obj/structure/closet,/obj/item/device/flashlight,/obj/effect/decal/cleanable/cobweb2,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/cargo,/turf/simulated/floor/plating,/area/maintenance/library)
+"adG" = (/obj/structure/table/rack,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/clothing/glasses/sunglasses,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/library)
"adH" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/extinguisher,/turf/simulated/floor/plating,/area/maintenance/security_starboard)
"adI" = (/obj/structure/mirror{pixel_y = 25},/turf/simulated/floor,/area/maintenance/security_starboard)
"adJ" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/mime,/obj/item/weapon/pen/crayon/mime,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor,/area/maintenance/security_starboard)
@@ -204,10 +204,10 @@
"adV" = (/turf/simulated/floor,/area/maintenance/library)
"adW" = (/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor,/area/maintenance/substation/civilian)
"adX" = (/obj/structure/table/steel,/turf/simulated/floor,/area/maintenance/security_starboard)
-"adY" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/maintenance/library)
+"adY" = (/obj/machinery/light/small{dir = 8},/obj/item/weapon/storage/bible,/obj/structure/table/rack,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/locker)
"adZ" = (/obj/structure/table/rack{dir = 1},/obj/item/weapon/extinguisher,/obj/item/clothing/head/hardhat/red,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/library)
"aea" = (/obj/effect/decal/cleanable/generic,/turf/simulated/floor/plating,/area/maintenance/library)
-"aeb" = (/obj/structure/closet,/obj/random/contraband,/obj/random/contraband,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor,/area/maintenance/library)
+"aeb" = (/obj/structure/closet/wardrobe/grey,/obj/item/weapon/storage/backpack,/obj/item/weapon/storage/backpack,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/turf/simulated/floor/plating,/area/maintenance/locker)
"aec" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/light{dir = 8},/turf/simulated/floor/wood,/area/library)
"aed" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/bed/chair/comfy/black{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/carpet,/area/library)
"aee" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/carpet,/area/library)
@@ -301,7 +301,7 @@
"afO" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/tiled,/area/hallway/secondary/escape/fore_escape_pod_hallway)
"afP" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/locker/locker_toilet)
"afQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/locker/locker_toilet)
-"afR" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/camera/network/civilian{c_tag = "Civ - Locker Room Restroom"; dir = 8},/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/locker/locker_toilet)
+"afR" = (/obj/machinery/light,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/recreation_area_restroom)
"afS" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/wood,/area/library_conference_room)
"afT" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/wood,/area/library_conference_room)
"afU" = (/obj/structure/bed/chair/office/dark{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/wood,/area/library_conference_room)
@@ -428,7 +428,7 @@
"ail" = (/obj/structure/bed/chair/comfy/green{dir = 8},/turf/simulated/floor/carpet,/area/library)
"aim" = (/obj/structure/table/glass,/obj/machinery/status_display{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/tiled/dark,/area/hallway/secondary/civilian_hallway_fore)
"ain" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/library)
-"aio" = (/obj/structure/table/glass,/obj/item/weapon/storage/firstaid/regular,/obj/effect/floor_decal/corner/paleblue{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/newscaster{pixel_x = -31; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/medical/first_aid_station_starboard)
+"aio" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/tank/oxygen,/obj/item/weapon/storage/belt/utility,/obj/item/clothing/mask/breath,/obj/random/maintenance/security,/obj/random/maintenance/security,/obj/random/maintenance/security,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/security_starboard)
"aip" = (/obj/effect/floor_decal/corner/paleblue{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/medical/first_aid_station_starboard)
"aiq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/first_aid_station_starboard)
"air" = (/obj/structure/bed/roller,/obj/effect/floor_decal/corner/paleblue/full{dir = 4},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green,/obj/machinery/light_switch{pixel_x = 12; pixel_y = -24},/turf/simulated/floor/tiled/white,/area/medical/first_aid_station_starboard)
@@ -445,7 +445,7 @@
"aiC" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass{name = "Library"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/library)
"aiD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/library)
"aiE" = (/obj/structure/table/glass,/obj/item/device/radio{anchored = 1; broadcasting = 0; canhear_range = 1; frequency = 1487; icon = 'icons/obj/items.dmi'; icon_state = "red_phone"; listening = 1; name = "Medical Emergency Phone"},/obj/effect/floor_decal/corner/paleblue/full,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/medical/first_aid_station_starboard)
-"aiF" = (/obj/effect/floor_decal/corner/paleblue/full{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled/white,/area/medical/first_aid_station_starboard)
+"aiF" = (/obj/structure/closet/wardrobe/grey,/obj/item/weapon/storage/backpack,/obj/item/weapon/storage/backpack,/obj/random/maintenance/security,/obj/random/maintenance/security,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/security_starboard)
"aiG" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/red{dir = 5},/obj/machinery/recharger,/turf/simulated/floor/tiled,/area/security/main)
"aiH" = (/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_fore)
"aiI" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_fore)
@@ -464,7 +464,7 @@
"aiV" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_aft)
"aiW" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_aft)
"aiX" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor,/area/maintenance/locker)
-"aiY" = (/obj/item/weapon/storage/toolbox/syndicate,/obj/structure/closet,/turf/simulated/floor,/area/maintenance/locker)
+"aiY" = (/obj/structure/closet,/obj/random/contraband,/obj/random/contraband,/obj/machinery/light/small{dir = 4; pixel_y = 0},/obj/random/maintenance/security,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/library)
"aiZ" = (/turf/simulated/wall,/area/chapel/chapel_morgue)
"aja" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_aft)
"ajb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/carpet,/area/library)
@@ -502,7 +502,7 @@
"ajH" = (/turf/simulated/floor/tiled/dark,/area/chapel/chapel_morgue)
"ajI" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/wood,/area/vacant/vacant_site)
"ajJ" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen/invisible,/obj/item/clothing/under/suit_jacket/red,/obj/machinery/light,/obj/item/weapon/barcodescanner,/turf/simulated/floor/carpet,/area/library)
-"ajK" = (/obj/structure/table/woodentable,/obj/item/device/taperecorder{pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/newscaster{pixel_x = 0; pixel_y = -28},/obj/item/device/retail_scanner/civilian{tag = "icon-retail_idle (NORTH)"; icon_state = "retail_idle"; dir = 1},/obj/item/device/camera,/turf/simulated/floor/carpet,/area/library)
+"ajK" = (/obj/structure/closet/crate,/obj/random/maintenance/security,/obj/random/maintenance/security,/obj/random/maintenance/security,/turf/simulated/floor,/area/maintenance/security_starboard)
"ajL" = (/obj/machinery/libraryscanner,/turf/simulated/floor/wood,/area/library)
"ajM" = (/obj/machinery/librarycomp{pixel_y = 0},/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/library)
"ajN" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/turf/simulated/floor/wood,/area/library)
@@ -522,7 +522,7 @@
"akb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/library)
"akc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/library)
"akd" = (/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/obj/structure/closet/jcloset,/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled,/area/janitor)
-"ake" = (/obj/structure/girder,/turf/simulated/floor,/area/maintenance/pool)
+"ake" = (/obj/structure/table/rack,/obj/random/maintenance/security,/obj/random/maintenance/security,/obj/random/maintenance/security,/turf/simulated/floor,/area/maintenance/security_starboard)
"akf" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass{name = "Library"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/library)
"akg" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled,/area/janitor)
"akh" = (/obj/machinery/button/remote/driver{id = "chapelgun"; name = "Chapel Mass Driver"; pixel_x = 32; pixel_y = 4},/turf/simulated/floor/tiled/dark,/area/chapel/chapel_morgue)
@@ -535,8 +535,8 @@
"ako" = (/obj/structure/mopbucket,/obj/item/weapon/mop,/obj/item/weapon/reagent_containers/glass/bucket,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled,/area/janitor)
"akp" = (/obj/structure/mopbucket,/obj/item/weapon/mop,/obj/item/weapon/reagent_containers/glass/bucket,/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -26},/turf/simulated/floor/tiled,/area/janitor)
"akq" = (/obj/effect/floor_decal/spline/plain,/obj/machinery/vending/fitness,/turf/simulated/floor/carpet,/area/crew_quarters/recreation_area)
-"akr" = (/obj/machinery/alarm{dir = 1; pixel_y = -25},/turf/simulated/floor,/area/maintenance/holodeck)
-"aks" = (/obj/structure/closet,/obj/item/weapon/beach_ball,/turf/simulated/floor,/area/maintenance/pool)
+"akr" = (/obj/structure/table/woodentable,/obj/item/device/taperecorder{pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/newscaster{pixel_x = 0; pixel_y = -28},/obj/item/device/retail_scanner/civilian{tag = "icon-retail_idle (NORTH)"; icon_state = "retail_idle"; dir = 1},/obj/item/device/camera,/obj/item/device/tape,/turf/simulated/floor/carpet,/area/library)
+"aks" = (/obj/random/drinkbottle,/obj/structure/closet/crate,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/drinkbottle,/turf/simulated/floor/wood,/area/vacant/vacant_site)
"akt" = (/obj/structure/closet/toolcloset,/turf/simulated/floor/tiled,/area/storage/tools)
"aku" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/random/tech_supply,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/storage/tools)
"akv" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area_hallway)
@@ -625,17 +625,17 @@
"ama" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister/empty,/turf/simulated/floor/tiled,/area/maintenance/engineering/pumpstation)
"amb" = (/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6},/turf/simulated/floor/tiled,/area/maintenance/engineering/pumpstation)
"amc" = (/obj/machinery/atmospherics/pipe/simple/hidden/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/tiled,/area/maintenance/engineering/pumpstation)
-"amd" = (/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/engineering{name = "Pump Station"; req_one_access = list(11,24)},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/maintenance/engineering/pumpstation)
+"amd" = (/obj/structure/table,/obj/item/stack/material/steel{amount = 2},/obj/random/maintenance/engineering,/turf/simulated/floor,/area/vacant/vacant_site)
"ame" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/plating,/area/maintenance/engineering/pumpstation)
"amf" = (/turf/simulated/floor/tiled/dark,/area/chapel/main)
-"amg" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/structure/table/steel_reinforced,/obj/random/tech_supply,/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/turf/simulated/floor/tiled,/area/maintenance/engineering/pumpstation)
+"amg" = (/obj/structure/table/glass,/obj/item/weapon/storage/firstaid/regular,/obj/effect/floor_decal/corner/paleblue{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/newscaster{pixel_x = -31; pixel_y = 0},/obj/random/medical/lite,/turf/simulated/floor/tiled/white,/area/medical/first_aid_station_starboard)
"amh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/tiled,/area/maintenance/engineering/pumpstation)
"ami" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp{pixel_y = 10},/obj/machinery/camera/network/civilian{c_tag = "CIV - Chapel Office"; dir = 4},/turf/simulated/floor/lino,/area/chapel/office)
"amj" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen/blue{pixel_x = 5; pixel_y = 5},/turf/simulated/floor/lino,/area/chapel/office)
"amk" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/fancy/crayons,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/lino,/area/chapel/office)
"aml" = (/turf/simulated/floor/lino,/area/chapel/office)
"amm" = (/obj/structure/closet/wardrobe/chaplain_black,/obj/machinery/light{dir = 4},/turf/simulated/floor/lino,/area/chapel/office)
-"amn" = (/obj/machinery/light/small{dir = 8},/obj/item/weapon/storage/bible,/obj/structure/table/rack,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/locker)
+"amn" = (/obj/effect/floor_decal/corner/paleblue/full{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/structure/table/glass,/obj/item/device/defib_kit,/turf/simulated/floor/tiled/white,/area/medical/first_aid_station_starboard)
"amo" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/locker)
"amp" = (/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor/tiled/dark,/area/chapel/chapel_morgue)
"amq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled/dark,/area/chapel/chapel_morgue)
@@ -750,16 +750,16 @@
"aov" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled/neutral,/area/crew_quarters/cafeteria)
"aow" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atm{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/tiled/neutral,/area/crew_quarters/cafeteria)
"aox" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor,/area/vacant/vacant_site)
-"aoy" = (/obj/structure/table,/obj/item/stack/material/steel{amount = 2},/turf/simulated/floor,/area/vacant/vacant_site)
+"aoy" = (/obj/structure/table/gamblingtable,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/random/toy,/turf/simulated/floor/wood,/area/vacant/vacant_site)
"aoz" = (/obj/item/stack/material/wood{amount = 24},/turf/simulated/floor/wood,/area/vacant/vacant_site)
"aoA" = (/obj/structure/table/gamblingtable,/turf/simulated/floor/wood,/area/vacant/vacant_site)
"aoB" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/tiled,/area/hallway/secondary/medical_emergency_hallway)
"aoC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/structure/disposalpipe/sortjunction{dir = 4; icon_state = "pipe-j1s"; name = "Primary Tool Storage"; sortType = "Primary Tool Storage"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/maintenance/cargo)
"aoD" = (/turf/simulated/floor/tiled,/area/storage/primary)
"aoE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/hallway/secondary/medical_emergency_hallway)
-"aoF" = (/obj/effect/decal/cleanable/generic,/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/floor/plating,/area/maintenance/cargo)
+"aoF" = (/obj/structure/table/rack,/obj/random/maintenance/clean,/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/chapel)
"aoG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/maintenance/cargo)
-"aoH" = (/obj/structure/closet/crate,/obj/item/weapon/tank/emergency_oxygen/engi,/obj/item/weapon/tank/emergency_oxygen/double,/turf/simulated/floor/plating,/area/maintenance/cargo)
+"aoH" = (/obj/effect/floor_decal/corner/blue/full{dir = 8},/obj/structure/table/rack,/obj/item/clothing/gloves/arm_guard/laserproof,/obj/item/clothing/shoes/leg_guard/laserproof,/obj/item/clothing/suit/armor/laserproof{pixel_x = 0; pixel_y = 0},/obj/item/clothing/head/helmet/laserproof,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/brigdoor/southleft{name = "Laser Armor"; req_access = list(1)},/turf/simulated/floor/tiled/dark,/area/security/armoury)
"aoI" = (/obj/machinery/newscaster{pixel_x = -30},/turf/simulated/floor/tiled/dark,/area/chapel/main)
"aoJ" = (/obj/effect/floor_decal/chapel{tag = "icon-chapel (WEST)"; icon_state = "chapel"; dir = 8},/turf/simulated/floor/tiled/dark,/area/chapel/main)
"aoK" = (/obj/effect/floor_decal/chapel,/turf/simulated/floor/tiled/dark,/area/chapel/main)
@@ -910,7 +910,7 @@
"arz" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled,/area/hallway/secondary/cargo_hallway)
"arA" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
"arB" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
-"arC" = (/obj/structure/closet/crate,/obj/item/weapon/bedsheet/orange,/obj/item/weapon/bedsheet/orange,/obj/item/weapon/bedsheet/yellow,/obj/item/weapon/bedsheet/purple,/obj/item/weapon/bedsheet/red,/obj/item/weapon/bedsheet/brown,/obj/item/weapon/bedsheet/green,/obj/effect/floor_decal/corner/white/diagonal{tag = "icon-corner_white_diagonal (EAST)"; icon_state = "corner_white_diagonal"; dir = 4},/obj/effect/floor_decal/corner/blue,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_laundry)
+"arC" = (/obj/effect/floor_decal/corner/blue/full{dir = 1},/obj/structure/table/rack,/obj/item/clothing/gloves/arm_guard/laserproof,/obj/item/clothing/shoes/leg_guard/laserproof,/obj/item/clothing/suit/armor/laserproof{pixel_x = 0; pixel_y = 0},/obj/item/clothing/head/helmet/laserproof,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/machinery/door/window/brigdoor/southright{name = "Laser Armor"},/turf/simulated/floor/tiled/dark,/area/security/armoury)
"arD" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/camera/network/engineering{c_tag = "ENG - Chief Engineer's Office"; dir = 1},/turf/simulated/floor/tiled,/area/crew_quarters/heads/chief)
"arE" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled/dark,/area/chapel/main)
"arF" = (/obj/effect/floor_decal/chapel{tag = "icon-chapel (WEST)"; icon_state = "chapel"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/dark,/area/chapel/main)
@@ -1079,7 +1079,7 @@
"auM" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor/tiled/freezer,/area/security/security_bathroom)
"auN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/security_starboard)
"auO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/hallway/secondary/escape/fore_escape_pod_hallway)
-"auP" = (/obj/structure/bed/chair,/turf/simulated/floor,/area/crew_quarters/locker/locker_toilet)
+"auP" = (/obj/structure/closet,/obj/item/clothing/glasses/welding,/obj/item/weapon/weldingtool,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/security,/obj/random/maintenance/security,/turf/simulated/floor/plating,/area/maintenance/security_starboard)
"auQ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/storage/primary)
"auR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/storage/primary)
"auS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/chapel/main)
@@ -1176,7 +1176,7 @@
"awF" = (/obj/structure/closet{name = "Evidence Closet"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/security/evidence_storage)
"awG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/tiled/dark,/area/security/evidence_storage)
"awH" = (/obj/structure/closet{name = "Evidence Closet"},/obj/machinery/light/small{dir = 4; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/security/evidence_storage)
-"awI" = (/obj/machinery/newscaster/security_unit{pixel_x = -30},/obj/machinery/camera/network/security{c_tag = "SEC - HoS' Office"; dir = 4},/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/folder/red_hos,/obj/item/weapon/pen,/turf/simulated/floor/tiled/dark,/area/crew_quarters/heads/hos)
+"awI" = (/obj/machinery/newscaster/security_unit{pixel_x = -30},/obj/machinery/camera/network/security{c_tag = "SEC - HoS' Office"; dir = 4},/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/folder/red_hos,/obj/item/weapon/pen/multi,/turf/simulated/floor/tiled/dark,/area/crew_quarters/heads/hos)
"awJ" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled/dark,/area/crew_quarters/heads/hos)
"awK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/heads/hos)
"awL" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/bed/chair,/turf/simulated/floor/carpet,/area/crew_quarters/heads/hos)
@@ -1244,7 +1244,7 @@
"axV" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_aft)
"axW" = (/obj/structure/table/standard,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled,/area/holodeck_control)
"axX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/recreation_area_restroom)
-"axY" = (/obj/item/weapon/soap/nanotrasen,/obj/item/weapon/soap/nanotrasen,/obj/structure/table/standard,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/recreation_area_restroom)
+"axY" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled/dark,/area/security/armoury)
"axZ" = (/obj/structure/mirror{pixel_x = 28},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/recreation_area_restroom)
"aya" = (/obj/structure/table/standard,/obj/machinery/light{dir = 8},/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled,/area/holodeck_control)
"ayb" = (/obj/structure/table/standard,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/machinery/light_switch{pixel_x = -12; pixel_y = -24},/obj/effect/floor_decal/corner/purple/diagonal,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/item/weapon/soap/nanotrasen,/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/white,/area/rnd/research_restroom)
@@ -1357,7 +1357,7 @@
"aAe" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "security_lockdown"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor,/area/maintenance/security_starboard)
"aAf" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor,/area/maintenance/security_starboard)
"aAg" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor,/area/maintenance/security_starboard)
-"aAh" = (/obj/structure/closet,/obj/item/clothing/glasses/welding,/obj/item/weapon/weldingtool,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/security_starboard)
+"aAh" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/item/weapon/gun/energy/gun{pixel_x = 3; pixel_y = 3},/obj/item/weapon/gun/energy/gun,/obj/effect/floor_decal/corner/blue/full{dir = 8},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 8},/obj/machinery/door/window/eastleft{name = "Energy"; req_access = list(1)},/turf/simulated/floor/tiled/dark,/area/security/armoury)
"aAi" = (/obj/structure/closet/emcloset,/turf/simulated/floor/tiled/dark,/area/hallway/secondary/civilian_hallway_aft)
"aAj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_aft)
"aAk" = (/obj/machinery/door/firedoor/glass,/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_aft)
@@ -1384,13 +1384,13 @@
"aAF" = (/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_6)
"aAG" = (/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_11)
"aAH" = (/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_12)
-"aAI" = (/obj/machinery/camera/network/civilian{c_tag = "CIV - Visitor Room 5"; dir = 1},/obj/structure/bed/chair/comfy/beige{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_5)
+"aAI" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/carpet,/area/crew_quarters/captain)
"aAJ" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/chapel)
"aAK" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 0; pixel_y = -32},/obj/structure/table/standard,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_5)
"aAL" = (/turf/simulated/wall/r_wall,/area/security/armoury)
"aAM" = (/obj/structure/closet/bombclosetsecurity,/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/window/reinforced,/turf/simulated/floor/tiled,/area/security/security_equiptment_storage)
"aAN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/security/security_equiptment_storage)
-"aAO" = (/obj/machinery/computer/prisoner,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/security/warden)
+"aAO" = (/obj/machinery/light{dir = 4},/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 26},/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/security/armoury)
"aAP" = (/obj/structure/filingcabinet/chestdrawer,/obj/effect/floor_decal/industrial/outline/grey,/obj/item/device/radio/intercom{broadcasting = 0; dir = 1; frequency = 1475; icon_state = "intercom"; listening = 1; name = "Station Intercom (Security)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor/tiled/dark,/area/security/warden)
"aAQ" = (/obj/structure/table/reinforced,/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 26},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/camera/network/security{c_tag = "SEC - Warden's Office"},/obj/item/weapon/crowbar,/obj/item/device/radio/off,/obj/item/weapon/wrench,/obj/item/device/retail_scanner/security,/turf/simulated/floor/tiled/dark,/area/security/warden)
"aAR" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/light_switch{pixel_x = 14; pixel_y = 24},/obj/machinery/photocopier,/turf/simulated/floor/tiled/dark,/area/security/warden)
@@ -1446,7 +1446,7 @@
"aBP" = (/obj/structure/table/standard,/obj/item/device/flashlight/lamp,/turf/simulated/floor/tiled,/area/security/security_processing)
"aBQ" = (/obj/structure/bed/chair,/turf/simulated/floor/tiled,/area/security/security_processing)
"aBR" = (/obj/effect/floor_decal/corner/red{dir = 4},/obj/item/device/radio/intercom{broadcasting = 0; dir = 4; frequency = 1475; icon_state = "intercom"; listening = 1; name = "Station Intercom (Security)"; pixel_x = 21; pixel_y = 0},/turf/simulated/floor/tiled,/area/security/security_processing)
-"aBS" = (/obj/structure/table/standard,/obj/item/device/healthanalyzer,/obj/item/stack/medical/bruise_pack{pixel_x = -4; pixel_y = 3},/obj/item/stack/medical/bruise_pack{pixel_x = 10},/obj/item/stack/medical/ointment{pixel_y = 10},/obj/machinery/alarm{pixel_y = 22},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled/white,/area/security/security_aid_station)
+"aBS" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled/dark,/area/security/armoury)
"aBT" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/syringe/inaprovaline,/obj/item/weapon/reagent_containers/syringe/inaprovaline{pixel_x = -2; pixel_y = 5},/obj/item/weapon/reagent_containers/syringe/inaprovaline{pixel_y = 10},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/machinery/light_switch{pixel_x = 14; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/tiled/white,/area/security/security_aid_station)
"aBU" = (/obj/structure/table/standard,/obj/item/bodybag/cryobag{pixel_x = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = 5; pixel_y = 5},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled/white,/area/security/security_aid_station)
"aBV" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/security/security_aid_station)
@@ -1475,7 +1475,7 @@
"aCs" = (/obj/effect/floor_decal/corner/mauve{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/tiled/white,/area/medical/genetics_cloning)
"aCt" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/genetics_cloning)
"aCu" = (/obj/effect/floor_decal/corner/mauve{dir = 5},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/genetics_cloning)
-"aCv" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/tiled,/area/security/security_equiptment_storage)
+"aCv" = (/obj/machinery/computer/prisoner,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/dark,/area/security/warden)
"aCw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/security/security_equiptment_storage)
"aCx" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/tiled,/area/security/security_equiptment_storage)
"aCy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/security/security_equiptment_storage)
@@ -1527,7 +1527,7 @@
"aDs" = (/obj/structure/disposalpipe/segment,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 26},/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area_hallway)
"aDt" = (/turf/simulated/wall,/area/maintenance/pool)
"aDu" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/pool)
-"aDv" = (/obj/structure/closet/crate,/obj/item/weapon/tank/emergency_oxygen/engi,/obj/item/weapon/tank/emergency_oxygen/double,/obj/effect/decal/cleanable/cobweb2,/obj/effect/landmark{name = "blobstart"},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/plating,/area/maintenance/pool)
+"aDv" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/item/weapon/gun/energy/ionrifle{pixel_y = -3},/obj/item/weapon/gun/energy/ionrifle{pixel_x = -2; pixel_y = -5},/obj/effect/floor_decal/corner/blue/full,/obj/machinery/door/window/brigdoor/eastright{name = "Energy"},/turf/simulated/floor/tiled/dark,/area/security/armoury)
"aDw" = (/obj/effect/floor_decal/corner/mauve/full{dir = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/disposal,/turf/simulated/floor/tiled/white,/area/medical/genetics_cloning)
"aDx" = (/turf/simulated/floor/tiled/dark,/area/security/armoury)
"aDy" = (/obj/machinery/door/airlock/highsecurity{name = "Secure Armoury Section"; req_access = list(3)},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled/dark,/area/security/armoury)
@@ -1585,7 +1585,7 @@
"aEy" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/blue{dir = 1},/obj/effect/floor_decal/corner/white{dir = 4},/obj/machinery/camera/network/civilian{c_tag = "CIV - Visitor's Dinning"; dir = 2},/obj/item/weapon/storage/laundry_basket,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_laundry)
"aEz" = (/obj/structure/closet/secure_closet/warden,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/security/warden)
"aEA" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/table/steel,/obj/item/device/communicator,/obj/item/device/communicator,/obj/item/device/communicator,/obj/item/device/communicator,/obj/item/device/radio/headset,/obj/item/device/radio/headset,/obj/item/device/radio/headset,/obj/item/device/radio/headset,/turf/simulated/floor/tiled,/area/security/prison)
-"aEB" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/tiled/dark,/area/security/armoury)
+"aEB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/dark,/area/security/armoury)
"aEC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/security_equiptment_storage)
"aED" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/security_equiptment_storage)
"aEE" = (/obj/machinery/door/airlock/security{name = "Equipment Storage"; req_access = list(2)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled,/area/security/security_equiptment_storage)
@@ -1595,7 +1595,7 @@
"aEI" = (/obj/machinery/disposal,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/disposalpipe/trunk,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/security/warden)
"aEJ" = (/obj/structure/table/standard,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_3)
"aEK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/security_equiptment_storage)
-"aEL" = (/obj/machinery/computer/security{pixel_y = 0},/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/security/warden)
+"aEL" = (/obj/structure/table/standard,/obj/item/device/healthanalyzer,/obj/item/stack/medical/bruise_pack{pixel_x = -4; pixel_y = 3},/obj/item/stack/medical/bruise_pack{pixel_x = 10},/obj/item/stack/medical/ointment{pixel_y = 10},/obj/machinery/alarm{pixel_y = 22},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/random/medical/lite,/turf/simulated/floor/tiled/white,/area/security/security_aid_station)
"aEM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/security/warden)
"aEN" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/corner/red{dir = 9},/turf/simulated/floor/tiled,/area/security/brig)
"aEO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/corner/red{dir = 6},/turf/simulated/floor/tiled,/area/security/brig)
@@ -1726,7 +1726,7 @@
"aHj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/corner/red{dir = 1},/turf/simulated/floor/tiled,/area/security/brig)
"aHk" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/security/brig)
"aHl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/corner/red{dir = 4},/turf/simulated/floor/tiled,/area/security/brig)
-"aHm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/corner/red{dir = 5},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/security/brig)
+"aHm" = (/obj/random/obstruction,/turf/simulated/floor,/area/maintenance/security_starboard)
"aHn" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 26},/obj/effect/floor_decal/corner/red{dir = 1},/turf/simulated/floor/tiled,/area/security/brig)
"aHo" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/security/brig)
"aHp" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/security/brig)
@@ -1994,7 +1994,7 @@
"aMr" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/security/prison)
"aMs" = (/obj/machinery/flasher{id = "permflash"; name = "Floor mounted flash"; pixel_x = 0},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/security/prison)
"aMt" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled,/area/security/prison)
-"aMu" = (/obj/structure/closet/crate,/obj/item/clothing/glasses/meson/prescription,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/maintenance/security_starboard)
+"aMu" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/item/weapon/gun/projectile/shotgun/pump{pixel_x = -3; pixel_y = 3},/obj/item/weapon/gun/projectile/shotgun/pump,/obj/effect/floor_decal/corner/green/full,/obj/machinery/door/window/brigdoor/eastright{name = "Ballistics"},/turf/simulated/floor/tiled/dark,/area/security/armoury)
"aMv" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_aft)
"aMw" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_aft)
"aMx" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_aft)
@@ -2013,7 +2013,7 @@
"aMK" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area_hallway)
"aML" = (/obj/machinery/door/airlock/glass{name = "Recreation Area"},/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area_hallway)
"aMM" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area)
-"aMN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area)
+"aMN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor/carpet,/area/library)
"aMO" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area)
"aMP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area)
"aMQ" = (/obj/machinery/door/airlock/glass{name = "Pool"},/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/crew_quarters/pool)
@@ -2036,11 +2036,11 @@
"aNh" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/obj/item/weapon/gun/energy/laser/practice,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/security/range)
"aNi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled,/area/security/range)
"aNj" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled,/area/security/range)
-"aNk" = (/obj/structure/table/reinforced,/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled,/area/security/range)
+"aNk" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = -30},/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/security/armoury)
"aNl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/security/lobby)
"aNm" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/camera/network/security{c_tag = "SEC - Lobby"; dir = 4},/obj/effect/floor_decal/corner/red{dir = 9},/turf/simulated/floor/tiled,/area/security/lobby)
"aNn" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/security/lobby)
-"aNo" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/corner/red{dir = 6},/turf/simulated/floor/tiled,/area/security/lobby)
+"aNo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area)
"aNp" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/lobby)
"aNq" = (/obj/structure/table/reinforced,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/window/brigdoor/southleft{name = "Secure Door"},/obj/effect/floor_decal/corner/red{dir = 10},/turf/simulated/floor/tiled,/area/security/lobby)
"aNr" = (/obj/structure/table/reinforced,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/window/brigdoor/southright{name = "Secure Door"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/corner/red{dir = 10},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor/tiled,/area/security/lobby)
@@ -2059,12 +2059,12 @@
"aNE" = (/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/floor/tiled,/area/security/prison)
"aNF" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/machinery/light,/turf/simulated/floor/tiled,/area/security/prison)
"aNG" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor/tiled,/area/security/prison)
-"aNH" = (/obj/structure/table/rack,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/weapon/storage/belt/utility,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/security_starboard)
+"aNH" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/tiled,/area/security/security_equiptment_storage)
"aNI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/security_starboard)
"aNJ" = (/turf/simulated/wall,/area/storage/art)
"aNK" = (/obj/structure/table/standard,/obj/item/weapon/storage/fancy/crayons,/obj/item/weapon/storage/fancy/crayons,/turf/simulated/floor/tiled,/area/storage/art)
"aNL" = (/obj/structure/table/standard,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/turf/simulated/floor/tiled,/area/storage/art)
-"aNM" = (/obj/structure/table/standard,/obj/item/weapon/hand_labeler,/obj/item/weapon/hand_labeler,/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/tiled,/area/storage/art)
+"aNM" = (/obj/structure/table/rack,/obj/random/maintenance/clean,/obj/random/maintenance/security,/turf/simulated/floor,/area/maintenance/security_starboard)
"aNN" = (/obj/structure/table/standard,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/machinery/atmospherics/unary/vent_pump/on,/obj/item/device/taperecorder,/obj/item/device/taperecorder,/turf/simulated/floor/tiled,/area/storage/art)
"aNO" = (/obj/structure/table/standard,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled,/area/storage/art)
"aNP" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/storage/art)
@@ -2150,9 +2150,9 @@
"aPr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/pool)
"aPs" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/pool)
"aPt" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/pool)
-"aPu" = (/obj/structure/closet/secure_closet/paramedic,/obj/item/clothing/accessory/storage/black_vest,/turf/simulated/floor/tiled/white,/area/medical/medbay_emt_bay)
+"aPu" = (/obj/structure/closet/crate,/obj/item/weapon/tank/emergency_oxygen/engi,/obj/item/weapon/tank/emergency_oxygen/double,/obj/effect/decal/cleanable/cobweb2,/obj/effect/landmark{name = "blobstart"},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/pool)
"aPv" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_inner"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1)
-"aPw" = (/obj/structure/table/rack,/obj/effect/floor_decal/corner/blue{dir = 10},/obj/structure/window/reinforced,/obj/random/energy,/obj/random/energy,/obj/machinery/door/window/brigdoor/northleft{name = "Energy"; req_access = list(1)},/turf/simulated/floor/tiled/dark,/area/security/armoury)
+"aPw" = (/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/window/brigdoor/northright{name = "Ammo"},/obj/structure/table/rack,/obj/effect/floor_decal/corner/red/full{dir = 4},/obj/item/weapon/storage/box/flashshells,/obj/item/weapon/storage/box/beanbags,/obj/item/weapon/storage/box/beanbags,/obj/item/weapon/storage/box/stunshells,/obj/item/weapon/storage/box/stunshells,/turf/simulated/floor/tiled/dark,/area/security/armoury)
"aPx" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/security/range)
"aPy" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled,/area/security/range)
"aPz" = (/obj/effect/floor_decal/industrial/warning/corner,/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled,/area/security/range)
@@ -2188,7 +2188,7 @@
"aQd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/storage/art)
"aQe" = (/obj/machinery/door/airlock/glass{name = "Art Storage"},/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/storage/art)
"aQf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_aft)
-"aQg" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_aft)
+"aQg" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/corner/red{dir = 6},/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor/tiled,/area/security/lobby)
"aQh" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/camera/network/northern_star{c_tag = "Hall - Civilian Primary Aft 1"; dir = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_aft)
"aQi" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/floor/tiled/dark,/area/lawoffice)
"aQj" = (/obj/machinery/firealarm{dir = 4; pixel_x = 26},/obj/structure/table/reinforced,/obj/machinery/computer/skills,/turf/simulated/floor/tiled/dark,/area/lawoffice)
@@ -2311,7 +2311,7 @@
"aSw" = (/obj/structure/shuttle/engine/propulsion{dir = 4},/turf/space,/area/shuttle/large_escape_pod2/station)
"aSx" = (/turf/simulated/wall/r_wall,/area/maintenance/substation/security)
"aSy" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/maintenance/security_port)
-"aSz" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/turf/simulated/floor,/area/maintenance/security_port)
+"aSz" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/red/full,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/machinery/door/window/brigdoor/northleft{name = "Ammo"; req_access = list(2)},/turf/simulated/floor/tiled/dark,/area/security/armoury)
"aSA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/central_one)
"aSB" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
"aSC" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
@@ -2320,11 +2320,11 @@
"aSF" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/maintenance/security_starboard)
"aSG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/civilian_hallway_aft)
"aSH" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/maintenance/holodeck)
-"aSI" = (/obj/structure/closet,/obj/item/clothing/suit/storage/toggle/labcoat/genetics,/obj/item/weapon/storage/backpack/genetics,/turf/simulated/floor,/area/maintenance/holodeck)
+"aSI" = (/obj/machinery/camera/network/security{c_tag = "SEC - Secure Armory Fore"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/dark,/area/security/armoury)
"aSJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area_hallway)
"aSK" = (/obj/machinery/door/airlock{name = "Unit 2"},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/recreation_area_restroom)
"aSL" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/recreation_area_restroom)
-"aSM" = (/obj/machinery/camera/network/civilian{c_tag = "CIV - Recreation Rest Room"; dir = 1},/obj/machinery/light,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/recreation_area_restroom)
+"aSM" = (/obj/structure/bed/chair/comfy/beige{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_5)
"aSN" = (/obj/machinery/washing_machine,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/recreation_area_restroom)
"aSO" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/light,/obj/item/weapon/bikehorn/rubberducky,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/recreation_area_restroom)
"aSP" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/pool)
@@ -2362,7 +2362,7 @@
"aTv" = (/obj/structure/bed/chair{dir = 1},/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = -28; pixel_y = 0},/obj/structure/closet/walllocker/emerglocker{pixel_x = 0; pixel_y = -32},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/large_escape_pod2/station)
"aTw" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/large_escape_pod2/station)
"aTx" = (/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{frequency = 1380; id_tag = "large_escape_pod_2"; pixel_x = 26; pixel_y = -26; tag_door = "large_escape_pod_2_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod2/station)
-"aTy" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/obj/item/weapon/extinguisher,/obj/item/weapon/crowbar,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/large_escape_pod2/station)
+"aTy" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/tiled,/area/security/security_equiptment_storage)
"aTz" = (/obj/structure/bed/chair{dir = 1},/obj/structure/closet/walllocker/emerglocker{pixel_x = 0; pixel_y = -32},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/large_escape_pod2/station)
"aTA" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/large_escape_pod2/station)
"aTB" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/maintenance/substation/security)
@@ -2422,7 +2422,7 @@
"aUD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/crew_quarters/recreation_area_hallway)
"aUE" = (/obj/machinery/door/airlock/glass{name = "Recreation Area"},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area_hallway)
"aUF" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/pool)
-"aUG" = (/obj/effect/decal/cleanable/dirt,/obj/structure/closet/crate,/obj/item/weapon/reagent_containers/food/drinks/bottle/wine,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/pool)
+"aUG" = (/obj/structure/table/rack,/obj/effect/floor_decal/corner/red/full{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/item/clothing/gloves/arm_guard/riot,/obj/item/clothing/shoes/leg_guard/riot,/obj/item/clothing/suit/armor/riot/alt,/obj/item/clothing/head/helmet/riot,/obj/item/weapon/shield/riot,/obj/item/weapon/melee/baton/loaded,/obj/machinery/door/window/eastleft{name = "Riot Armor"; req_access = list(1)},/turf/simulated/floor/tiled/dark,/area/security/armoury)
"aUH" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "large_escape_pod_2_berth_hatch"; locked = 1; name = "Large Escape Pod 2"; req_access = list(13)},/turf/simulated/floor,/area/hallway/secondary/escape/fore_port_escape_pod_hallway)
"aUI" = (/turf/simulated/wall,/area/hallway/secondary/escape/fore_port_escape_pod_hallway)
"aUJ" = (/obj/machinery/computer/arcade,/turf/simulated/floor/tiled/dark,/area/hallway/secondary/escape/fore_port_escape_pod_hallway)
@@ -2445,7 +2445,7 @@
"aVa" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/dark,/area/hallway/primary/central_one)
"aVb" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/structure/disposalpipe/segment{dir = 4},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
"aVc" = (/turf/simulated/floor/tiled/dark,/area/hallway/primary/central_one)
-"aVd" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j1"; dir = 4},/obj/machinery/newscaster{pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
+"aVd" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/tiled/dark,/area/security/armoury)
"aVe" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
"aVf" = (/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
"aVg" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = 28},/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
@@ -2469,7 +2469,7 @@
"aVy" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area_hallway)
"aVz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area_hallway)
"aVA" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area_hallway)
-"aVB" = (/obj/structure/table/rack,/obj/item/weapon/flame/lighter/random,/obj/item/weapon/storage/fancy/cigarettes/dromedaryco,/turf/simulated/floor/plating,/area/maintenance/pool)
+"aVB" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/handcuffs{pixel_x = 8; pixel_y = 6},/obj/item/weapon/storage/box/chemimp{pixel_x = 4; pixel_y = 3},/obj/item/weapon/storage/box/trackimp,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/security/armoury)
"aVC" = (/turf/simulated/floor,/area/maintenance/pool)
"aVD" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 9},/turf/simulated/floor/tiled,/area/hallway/secondary/escape/fore_port_escape_pod_hallway)
"aVE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/escape/fore_port_escape_pod_hallway)
@@ -2600,7 +2600,7 @@
"aXZ" = (/obj/structure/sign/directions/science{dir = 8; pixel_y = -32; pixel_z = 8},/obj/structure/sign/directions/medical{dir = 8; pixel_y = -32},/obj/structure/sign/directions/evac{dir = 8; pixel_y = -32; pixel_z = -8},/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area_hallway)
"aYa" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area_hallway)
"aYb" = (/obj/machinery/atmospherics/pipe/simple/hidden/red{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/machinery/light_switch{pixel_x = 12; pixel_y = -24},/obj/structure/cable,/turf/simulated/floor/tiled,/area/maintenance/engineering/pumpstation)
-"aYc" = (/obj/structure/closet,/obj/item/clothing/head/ushanka,/turf/simulated/floor/plating,/area/maintenance/pool)
+"aYc" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/empslite{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/flashbangs{pixel_x = -2; pixel_y = -2},/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/security/armoury)
"aYd" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor,/area/maintenance/pool)
"aYe" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/maintenance/pool)
"aYf" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/machinery/light,/obj/structure/closet/emcloset,/turf/simulated/floor/tiled,/area/hallway/secondary/escape/fore_port_escape_pod_hallway)
@@ -2731,7 +2731,7 @@
"baA" = (/obj/structure/extinguisher_cabinet{pixel_x = 25},/obj/machinery/atm{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/tiled/dark,/area/hallway/primary/central_two)
"baB" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/structure/flora/pottedplant,/obj/effect/floor_decal/corner/brown/full{dir = 8},/turf/simulated/floor/tiled/white,/area/crew_quarters/coffee_shop)
"baC" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 6},/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/glass/bucket,/obj/machinery/light{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/grass,/area/hydroponics/garden)
-"baD" = (/obj/structure/table/rack,/obj/effect/floor_decal/corner/blue/full,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/gun/energy/ionrifle,/obj/item/weapon/gun/energy/ionrifle{pixel_x = -2; pixel_y = -2},/obj/machinery/door/window/brigdoor/northleft{name = "Energy"; req_access = list(1)},/turf/simulated/floor/tiled/dark,/area/security/armoury)
+"baD" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/security/armoury)
"baE" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/tiled,/area/hydroponics/garden)
"baF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/hydroponics/garden)
"baG" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/hydroponics/garden)
@@ -2756,7 +2756,7 @@
"baZ" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/crew_quarters/coffee_shop)
"bba" = (/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/corner/yellow/full{tag = "icon-corner_white_full (WEST)"; icon_state = "corner_white_full"; dir = 8},/turf/simulated/floor/tiled/white,/area/crew_quarters/coffee_shop)
"bbb" = (/obj/machinery/light/small{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/medbay_fore)
-"bbc" = (/obj/structure/closet,/obj/item/weapon/storage/backpack,/turf/simulated/floor/plating,/area/maintenance/medbay_fore)
+"bbc" = (/obj/machinery/computer/security{pixel_y = 0},/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/light,/turf/simulated/floor/tiled/dark,/area/security/warden)
"bbd" = (/turf/space,/area/skipjack_station/northwest_solars)
"bbe" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/structure/closet/firecloset,/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/obj/machinery/camera/network/research{c_tag = "SCI - Research Auxiliary Access"; dir = 4},/turf/simulated/floor/tiled/white,/area/rnd/research_foyer_auxiliary)
"bbf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/rnd/research_foyer_auxiliary)
@@ -2807,7 +2807,7 @@
"bbY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/crew_quarters/coffee_shop)
"bbZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/tiled/white,/area/crew_quarters/coffee_shop)
"bca" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/floor_decal/corner/brown{dir = 6},/turf/simulated/floor/tiled/white,/area/crew_quarters/coffee_shop)
-"bcb" = (/obj/structure/table/rack{dir = 1},/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/floor/plating,/area/maintenance/medbay_fore)
+"bcb" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/brigdoor/eastright{name = "Riot Armor"},/obj/item/clothing/gloves/arm_guard/riot,/obj/item/clothing/shoes/leg_guard/riot,/obj/item/clothing/suit/armor/riot/alt,/obj/item/clothing/head/helmet/riot,/obj/item/weapon/shield/riot,/obj/item/weapon/melee/baton/loaded,/obj/effect/floor_decal/corner/red/full,/obj/structure/window/reinforced,/turf/simulated/floor/tiled/dark,/area/security/armoury)
"bcc" = (/obj/structure/closet/l3closet/scientist,/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor/tiled/white,/area/rnd/research_foyer_auxiliary)
"bcd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/rnd/research_foyer_auxiliary)
"bce" = (/obj/structure/curtain/open/shower,/obj/machinery/shower{icon_state = "shower"; dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled/freezer,/area/rnd/research_foyer_auxiliary)
@@ -2897,7 +2897,7 @@
"bdK" = (/obj/structure/closet/crate/freezer,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled/freezer,/area/medical/surgery_storage)
"bdL" = (/obj/machinery/iv_drip,/turf/simulated/floor/tiled/freezer,/area/medical/surgery_storage)
"bdM" = (/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "medbayquar"; name = "Medbay Emergency Lockdown Shutters"; opacity = 0},/turf/simulated/floor,/area/maintenance/medbay_fore)
-"bdN" = (/obj/random/powercell,/obj/random/powercell,/obj/random/powercell,/obj/random/powercell,/obj/random/toolbox,/obj/effect/decal/cleanable/molten_item,/obj/structure/closet/crate,/turf/simulated/floor,/area/maintenance/medbay_fore)
+"bdN" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/dark,/area/security/armoury)
"bdO" = (/turf/simulated/floor,/area/maintenance/medbay_fore)
"bdP" = (/turf/simulated/wall/r_wall,/area/rnd/research_storage)
"bdQ" = (/obj/effect/floor_decal/corner/purple{dir = 9},/obj/machinery/ai_status_display{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/rnd/research)
@@ -2933,8 +2933,8 @@
"beu" = (/turf/simulated/mineral/ignore_mapgen,/area/mine/unexplored/upper_level)
"bev" = (/turf/simulated/floor/tiled/freezer,/area/medical/surgery_storage)
"bew" = (/obj/structure/closet/emcloset,/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/floor/tiled/dark,/area/gateway)
-"bex" = (/obj/structure/closet/crate,/obj/item/weapon/coin/silver,/obj/effect/decal/cleanable/cobweb2{tag = "icon-cobweb1"; icon_state = "cobweb1"},/turf/simulated/floor/plating,/area/maintenance/medbay_fore)
-"bey" = (/obj/structure/closet/crate,/obj/item/clothing/shoes/combat,/obj/item/weapon/tank/air,/obj/item/weapon/tank/air,/obj/item/weapon/tank/air,/obj/item/clothing/mask/gas,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/medbay_fore)
+"bex" = (/obj/item/weapon/stool,/turf/simulated/floor/tiled/dark,/area/security/armoury)
+"bey" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/item/clothing/gloves/arm_guard/riot,/obj/item/clothing/shoes/leg_guard/riot,/obj/item/clothing/suit/armor/riot/alt,/obj/item/clothing/head/helmet/riot,/obj/item/weapon/shield/riot,/obj/item/weapon/melee/baton/loaded,/obj/effect/floor_decal/corner/red/full{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window/eastleft{name = "Riot Armor"; req_access = list(1)},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled/dark,/area/security/armoury)
"bez" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor,/area/maintenance/medbay_fore)
"beA" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/maintenance/medbay_fore)
"beB" = (/obj/machinery/floodlight,/turf/simulated/floor,/area/rnd/research_storage)
@@ -2963,7 +2963,7 @@
"beY" = (/obj/structure/disposalpipe/segment,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/tiled,/area/hallway/primary/central_two)
"beZ" = (/turf/simulated/wall,/area/medical/surgeryobs)
"bfa" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/cups{pixel_x = 0; pixel_y = 0},/turf/simulated/floor/tiled,/area/medical/surgeryobs)
-"bfb" = (/obj/structure/table/rack,/obj/effect/floor_decal/corner/blue{dir = 10},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/item/weapon/gun/energy/gun{pixel_x = 3; pixel_y = 3},/obj/item/weapon/gun/energy/gun,/obj/machinery/door/window/brigdoor/northleft{name = "Energy"; req_access = list(1)},/turf/simulated/floor/tiled/dark,/area/security/armoury)
+"bfb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/tiled/dark,/area/security/armoury)
"bfc" = (/obj/structure/table/standard,/obj/item/weapon/hemostat,/obj/item/weapon/cautery,/obj/effect/floor_decal/corner/pink/full{dir = 8},/obj/machinery/button/remote/blast_door{id = "surgeryobs2"; name = "Privacy Shutters"; pixel_x = -26; pixel_y = 0},/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/tiled/white,/area/medical/surgery2)
"bfd" = (/obj/structure/table/standard,/obj/item/stack/medical/advanced/bruise_pack,/obj/item/weapon/retractor,/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/tiled/white,/area/medical/surgery2)
"bfe" = (/obj/structure/table/standard,/obj/item/weapon/circular_saw{pixel_y = 8},/obj/item/weapon/scalpel,/obj/effect/floor_decal/corner/pink{dir = 5},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled/white,/area/medical/surgery2)
@@ -2971,7 +2971,7 @@
"bfg" = (/obj/structure/closet/secure_closet/medical2,/obj/effect/floor_decal/corner/pink/full{dir = 1},/turf/simulated/floor/tiled/white,/area/medical/surgery2)
"bfh" = (/turf/simulated/wall,/area/medical/surgery2)
"bfi" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/tiled/white,/area/medical/surgery_hallway)
-"bfj" = (/obj/structure/table/standard,/obj/item/device/radio{anchored = 1; broadcasting = 0; canhear_range = 7; frequency = 1487; icon = 'icons/obj/items.dmi'; icon_state = "red_phone"; listening = 1; name = "Surgery Emergency Phone"},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/white,/area/medical/surgery_hallway)
+"bfj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/dark,/area/security/armoury)
"bfk" = (/obj/structure/bed/chair/wood{dir = 4},/obj/effect/floor_decal/corner/brown{dir = 10},/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/tiled/white,/area/crew_quarters/coffee_shop)
"bfl" = (/obj/machinery/door/airlock/maintenance{name = "Operating Theatre Maintenance Access"; req_access = list(45)},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled/freezer,/area/medical/surgery_storage)
"bfm" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor,/area/maintenance/medbay_fore)
@@ -3111,7 +3111,7 @@
"bhQ" = (/obj/structure/table/standard,/obj/machinery/computer/med_data/laptop,/obj/effect/floor_decal/corner/pink/full{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/exam_room)
"bhR" = (/obj/structure/table/standard,/obj/item/weapon/paper_bin,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/obj/effect/floor_decal/corner/pink{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/exam_room)
"bhS" = (/obj/structure/filingcabinet/medical{desc = "A large cabinet with hard copy medical records."; name = "Medical Records"},/obj/machinery/camera/network/medbay{c_tag = "MED - Examination Room"},/obj/effect/floor_decal/corner/pink{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/exam_room)
-"bhT" = (/obj/structure/closet/secure_closet/medical1,/obj/effect/floor_decal/corner/pink/full{dir = 1},/turf/simulated/floor/tiled/white,/area/medical/exam_room)
+"bhT" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/tiled/dark,/area/security/armoury)
"bhU" = (/obj/item/weapon/wrench,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 7; pixel_y = 1},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -4; pixel_y = 0},/obj/structure/table/glass,/obj/effect/floor_decal/corner/pink/full{dir = 8},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/cryo)
"bhV" = (/obj/machinery/atmospherics/unary/cryo_cell,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/medical/cryo)
"bhW" = (/obj/machinery/atmospherics/unary/freezer{dir = 2; icon_state = "freezer"},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/medical/cryo)
@@ -3121,7 +3121,7 @@
"bia" = (/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
"bib" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/medical_restroom)
"bic" = (/obj/structure/undies_wardrobe,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/medical_restroom)
-"bid" = (/obj/structure/table/standard,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/item/weapon/soap,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/medical_restroom)
+"bid" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/corner/red{dir = 5},/turf/simulated/floor/tiled,/area/security/brig)
"bie" = (/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"},/obj/structure/urinal{pixel_y = 32},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/medical_restroom)
"bif" = (/obj/structure/bed/padded,/turf/simulated/floor/tiled/white,/area/medical/virology)
"big" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/black,/turf/simulated/floor/tiled/white,/area/medical/virology)
@@ -3169,7 +3169,7 @@
"biW" = (/obj/machinery/vending/wallmed1{pixel_y = -32},/obj/machinery/camera/network/medbay{c_tag = "MED - Operating Theatre 2"; dir = 1},/turf/simulated/floor/tiled/white,/area/medical/surgery2)
"biX" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1380; id_tag = "trade_shuttle_dock_pump"},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "trade_shuttle_dock_sensor"; pixel_x = 30; pixel_y = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1)
"biY" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/turf/simulated/floor/tiled/white,/area/medical/surgery_hallway)
-"biZ" = (/obj/structure/table/standard,/obj/item/weapon/cane,/obj/item/weapon/cane{pixel_x = -3; pixel_y = 2},/obj/item/weapon/storage/box/rxglasses,/obj/effect/floor_decal/corner/pink{dir = 9},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/medical/exam_room)
+"biZ" = (/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/security_starboard)
"bja" = (/obj/structure/bed/chair/office/light{dir = 1},/turf/simulated/floor/tiled/white,/area/medical/exam_room)
"bjb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled/white,/area/medical/exam_room)
"bjc" = (/obj/effect/floor_decal/corner/pink{dir = 6},/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = 25; pixel_y = 16},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/exam_room)
@@ -3180,7 +3180,7 @@
"bjh" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
"bji" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
"bjj" = (/obj/item/weapon/stool/padded,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
-"bjk" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/drinks/britcup,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
+"bjk" = (/obj/structure/closet,/obj/item/stack/material/steel{amount = 4},/obj/item/stack/rods{amount = 2},/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/turf/simulated/floor,/area/maintenance/pool)
"bjl" = (/obj/machinery/light{dir = 1},/obj/machinery/camera/network/civilian{c_tag = "CIV - Park Center"; dir = 9},/turf/simulated/floor/tiled,/area/hydroponics/garden)
"bjm" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/item/weapon/stool/padded,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
"bjn" = (/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/network/medbay{c_tag = "MED - Break Room"; dir = 8},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
@@ -3245,8 +3245,8 @@
"bku" = (/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = -25; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
"bkv" = (/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
"bkw" = (/obj/item/weapon/stool/padded,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
-"bkx" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/drinks/britcup,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
-"bky" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/drinks/britcup,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
+"bkx" = (/obj/random/obstruction,/turf/simulated/floor,/area/maintenance/pool)
+"bky" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/tiled/dark,/area/security/armoury)
"bkz" = (/obj/item/weapon/stool/padded,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
"bkA" = (/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
"bkB" = (/obj/machinery/door/airlock/medical{name = "Rest Room"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/medical_restroom)
@@ -3328,7 +3328,7 @@
"blZ" = (/obj/machinery/light_switch{pixel_x = -26; pixel_y = 0},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/medical_restroom)
"bma" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/medical_restroom)
"bmb" = (/obj/machinery/door/airlock{name = "Medical Restroom"},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/medical_restroom)
-"bmc" = (/obj/structure/closet/crate/medical,/obj/item/weapon/storage/firstaid/regular{empty = 1; name = "First-Aid (empty)"},/obj/item/weapon/reagent_containers/syringe,/turf/simulated/floor,/area/maintenance/medbay_fore)
+"bmc" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/dark,/area/security/armoury)
"bmd" = (/obj/item/roller,/obj/effect/floor_decal/corner/lime{dir = 6},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled/white,/area/medical/virology)
"bme" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/monkeycubes,/obj/effect/floor_decal/corner/lime{dir = 1},/obj/item/weapon/extinguisher,/turf/simulated/floor/tiled/white,/area/medical/virology)
"bmf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/black,/turf/simulated/floor/tiled/white,/area/medical/virology)
@@ -3402,7 +3402,7 @@
"bnv" = (/obj/machinery/shower{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/window/northleft{name = "Shower"; req_access = list()},/obj/structure/curtain/open/shower/medical,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/medical_restroom)
"bnw" = (/obj/machinery/shower{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/northright{dir = 1; name = "Shower"; req_access = list()},/obj/structure/curtain/open/shower/medical,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/medical_restroom)
"bnx" = (/obj/structure/toilet{dir = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/medical_restroom)
-"bny" = (/obj/structure/table/rack,/obj/item/clothing/glasses/sunglasses,/obj/item/clothing/suit/storage/hazardvest,/obj/item/device/radio,/turf/simulated/floor/plating,/area/maintenance/medbay_fore)
+"bny" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/button/remote/blast_door{id = "Armoury"; name = "Armoury Access"; pixel_x = 28; pixel_y = -28; req_access = list(3)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/security/armoury)
"bnz" = (/obj/structure/table/standard,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/effect/floor_decal/corner/lime{dir = 9},/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/virology)
"bnA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/black{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/virology)
"bnB" = (/obj/effect/floor_decal/corner/lime{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/black{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/virology)
@@ -3460,7 +3460,7 @@
"boB" = (/obj/effect/floor_decal/corner/pink{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/turf/simulated/floor/tiled/white,/area/medical/surgery)
"boC" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/medical/surgery)
"boD" = (/turf/simulated/floor/tiled/white,/area/medical/surgery_hallway)
-"boE" = (/obj/machinery/button/remote/airlock{desc = "A remote control-switch for Surgery."; id = "Surgery"; name = "Surgery"; pixel_x = 24; pixel_y = -8},/obj/structure/closet/secure_closet/medical3,/turf/simulated/floor/tiled/white,/area/medical/surgery_hallway)
+"boE" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/dark,/area/security/armoury)
"boF" = (/obj/structure/grille,/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced/polarized{dir = 8; id = "exam_window_tint"},/obj/structure/window/reinforced/polarized{dir = 4; id = "exam_window_tint"},/obj/structure/window/reinforced/polarized{dir = 2; id = "exam_window_tint"},/obj/structure/window/reinforced/polarized{dir = 1; id = "exam_window_tint"},/turf/simulated/floor/plating,/area/medical/exam_room)
"boG" = (/obj/machinery/door/airlock/medical{name = "Examination Room"; req_access = list(5)},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/medical/exam_room)
"boH" = (/obj/machinery/door/firedoor/glass,/turf/simulated/floor/tiled/white,/area/medical/cryo)
@@ -3493,7 +3493,7 @@
"bpi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/hallway/secondary/escape/fore_port_escape_pod_hallway)
"bpj" = (/turf/simulated/wall,/area/maintenance/research_shuttle)
"bpk" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/secondary/escape/fore_port_escape_pod_hallway)
-"bpl" = (/obj/structure/closet,/obj/item/clothing/glasses/welding,/obj/item/weapon/weldingtool,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/research_shuttle)
+"bpl" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/mask/breath,/obj/item/clothing/suit/space/void/security,/obj/item/clothing/head/helmet/space/void/security,/obj/item/device/suit_cooling_unit,/obj/item/weapon/tank/oxygen,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/white{tag = "icon-corner_white (NORTH)"; icon_state = "corner_white"; dir = 1},/obj/effect/floor_decal/corner/blue{dir = 8},/obj/machinery/door/window/brigdoor/eastright{name = "EVA Suit"},/turf/simulated/floor/tiled/dark,/area/security/armoury)
"bpm" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/research_shuttle)
"bpn" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/maintenance/research_shuttle)
"bpo" = (/turf/simulated/floor,/area/maintenance/research_shuttle)
@@ -3549,7 +3549,7 @@
"bqm" = (/obj/effect/floor_decal/corner/paleblue{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/sleeper)
"bqn" = (/obj/machinery/recharge_station,/obj/effect/floor_decal/corner/paleblue{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/sleeper)
"bqo" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/bodybags{pixel_x = 1; pixel_y = 2},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/effect/floor_decal/corner/mauve{dir = 5},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/obj/machinery/light_switch{pixel_x = -36; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/medical/genetics_cloning)
-"bqp" = (/obj/machinery/camera/network/security{c_tag = "SEC - Secure Armory Armor"; dir = 8},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/tiled/dark,/area/security/armoury)
+"bqp" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/dark,/area/security/armoury)
"bqq" = (/obj/structure/window/reinforced{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/medical/genetics_cloning)
"bqr" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/camera/network/medbay{c_tag = "MED - Cloning"; dir = 2},/turf/simulated/floor/tiled,/area/medical/genetics_cloning)
"bqs" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/medical/genetics_cloning)
@@ -3577,7 +3577,7 @@
"bqO" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "research_dock_inner"; locked = 1; name = "Research Elevator Airlock"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/tiled/white,/area/rnd/docking)
"bqP" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "research_dock_airlock"; name = "interior access button"; pixel_x = -26; pixel_y = 26; req_one_access = list(13,65)},/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor/tiled/white,/area/rnd/docking)
"bqQ" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor,/area/maintenance/research_shuttle)
-"bqR" = (/obj/structure/closet/emcloset,/turf/simulated/floor,/area/maintenance/research_shuttle)
+"bqR" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/security/armoury)
"bqS" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/maintenance/research_shuttle)
"bqT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/white,/area/rnd/docking)
"bqU" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor,/area/maintenance/research_shuttle)
@@ -3641,7 +3641,7 @@
"bsa" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/junction{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/sleeper)
"bsb" = (/obj/machinery/door/airlock/glass_medical{id_tag = "GeneticsDoor"; name = "Cloning Laboratory"; req_access = list(66)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/glass,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/genetics_cloning)
"bsc" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/genetics_cloning)
-"bsd" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/table/rack,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/turf/simulated/floor/tiled/dark,/area/security/armoury)
+"bsd" = (/obj/structure/table/rack,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/security/armoury)
"bse" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/medical/genetics_cloning)
"bsf" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/medical/genetics_cloning)
"bsg" = (/obj/structure/window/reinforced,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/medical/genetics_cloning)
@@ -3657,7 +3657,7 @@
"bsq" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/effect/floor_decal/corner/lime{dir = 6},/turf/simulated/floor/tiled/white,/area/medical/virology)
"bsr" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/structure/lattice,/turf/space,/area/space)
"bss" = (/obj/structure/lattice,/obj/machinery/light,/turf/simulated/mineral/floor/ignore_mapgen,/area/rnd/docking)
-"bst" = (/obj/structure/closet/crate,/turf/simulated/shuttle/floor,/area/shuttle/research/station)
+"bst" = (/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = -21},/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/security/armoury)
"bsu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/shuttle/plating,/area/rnd/docking)
"bsv" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1380; id_tag = "research_dock_pump"},/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/machinery/camera/network/research{c_tag = "SCI - Research Elevator Airlock"; dir = 1},/turf/simulated/floor/tiled,/area/rnd/docking)
"bsw" = (/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "research_dock_airlock"; pixel_x = 0; pixel_y = -26; req_one_access = list(13,65); tag_airpump = "research_dock_pump"; tag_chamber_sensor = "research_dock_sensor"; tag_exterior_door = "research_dock_outer"; tag_interior_door = "research_dock_inner"},/obj/effect/floor_decal/industrial/warning{dir = 6},/turf/simulated/floor/tiled,/area/rnd/docking)
@@ -3704,10 +3704,10 @@
"btl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/starboard)
"btm" = (/obj/machinery/vending/medical,/obj/effect/floor_decal/corner/paleblue{dir = 10},/turf/simulated/floor/tiled/white,/area/medical/sleeper)
"btn" = (/obj/effect/floor_decal/corner/mauve{dir = 8},/obj/machinery/button/remote/airlock{desc = "A remote control switch for the medbay foyer."; id = "GeneticsDoor"; name = "Door Control"; pixel_x = -26; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/medical/genetics_cloning)
-"bto" = (/obj/structure/table/rack,/obj/effect/floor_decal/corner/blue{dir = 10},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/item/clothing/suit/armor/laserproof{pixel_x = 0; pixel_y = 0},/obj/machinery/door/window/brigdoor/northleft{name = "Laser Armor"; req_access = list(1)},/obj/item/clothing/gloves/arm_guard/laserproof,/obj/item/clothing/shoes/leg_guard/laserproof,/obj/item/clothing/head/helmet/laserproof,/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"btp" = (/obj/structure/table/rack,/obj/effect/floor_decal/corner/blue/full,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/item/clothing/suit/armor/laserproof{pixel_x = 0; pixel_y = 0},/obj/machinery/door/window/brigdoor/northleft{name = "Laser Armor"; req_access = list(1)},/obj/machinery/light,/obj/item/clothing/gloves/arm_guard/laserproof,/obj/item/clothing/shoes/leg_guard/laserproof,/obj/item/clothing/head/helmet/laserproof,/turf/simulated/floor/tiled/dark,/area/security/armoury)
+"bto" = (/turf/simulated/wall/r_wall,/area/security/tactical)
+"btp" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/highsecurity{name = "Armoury Tactical Equipment"; req_access = list(3)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/dark,/area/security/tactical)
"btq" = (/turf/simulated/floor/tiled/white,/area/medical/genetics_cloning)
-"btr" = (/obj/structure/table/rack,/obj/effect/floor_decal/corner/blue/full{dir = 4},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/item/clothing/suit/armor/laserproof{pixel_x = 0; pixel_y = 0},/obj/machinery/door/window/brigdoor/northleft{name = "Laser Armor"; req_access = list(1)},/obj/item/clothing/gloves/arm_guard/laserproof,/obj/item/clothing/shoes/leg_guard/laserproof,/obj/item/clothing/head/helmet/laserproof,/turf/simulated/floor/tiled/dark,/area/security/armoury)
+"btr" = (/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/security/tactical)
"bts" = (/obj/structure/table/standard,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/effect/floor_decal/corner/lime{dir = 9},/obj/machinery/light,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/virology)
"btt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/black{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/virology)
"btu" = (/obj/machinery/door/window/westright{name = "Virology Isolation Room One"; req_access = list(39)},/obj/machinery/door/firedoor/glass,/obj/effect/floor_decal/corner/lime{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/black{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/virology)
@@ -3922,7 +3922,7 @@
"bxv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo)
"bxw" = (/obj/structure/table/reinforced,/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo)
"bxx" = (/obj/structure/table/reinforced,/obj/machinery/computer/skills{pixel_y = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo)
-"bxy" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/obj/item/weapon/clipboard,/obj/item/weapon/stamp/cmo,/obj/item/weapon/pen,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/folder/white_cmo,/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo)
+"bxy" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/obj/item/weapon/clipboard,/obj/item/weapon/stamp/cmo,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/folder/white_cmo,/obj/item/weapon/pen/multi,/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo)
"bxz" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/structure/closet/l3closet/virology,/obj/machinery/power/apc{cell_type = /obj/item/weapon/cell/super; dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/tiled/white,/area/medical/virology)
"bxA" = (/obj/machinery/door/airlock/medical{name = "Morgue"; req_access = list(6,5)},/obj/machinery/door/firedoor,/turf/simulated/floor/tiled,/area/medical/genetics_cloning)
"bxB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/medical/virology)
@@ -4068,14 +4068,14 @@
"bAl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/medical/reception)
"bAm" = (/obj/structure/table/standard,/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Medical Reception"; req_access = list(5)},/obj/item/weapon/reagent_containers/spray/cleaner{pixel_x = -5},/obj/effect/floor_decal/corner/paleblue{dir = 9},/turf/simulated/floor/tiled/white,/area/medical/reception)
"bAn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/white,/area/medical/reception)
-"bAo" = (/obj/effect/floor_decal/corner/paleblue{dir = 2},/turf/simulated/floor/tiled/white,/area/medical/reception)
+"bAo" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_aft)
"bAp" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/effect/floor_decal/corner/paleblue{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/medbay_primary_storage)
"bAq" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/medbay_primary_storage)
"bAr" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/tiled/white,/area/medical/medbay_primary_storage)
"bAs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/medbay_primary_storage)
"bAt" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/medbay_primary_storage)
"bAu" = (/obj/structure/bed/chair/wheelchair,/obj/effect/floor_decal/corner/paleblue{dir = 6},/turf/simulated/floor/tiled/white,/area/medical/medbay_primary_storage)
-"bAv" = (/obj/structure/table/glass,/obj/item/weapon/reagent_containers/spray/cleaner{pixel_x = 2; pixel_y = 2},/obj/item/weapon/reagent_containers/spray/cleaner{pixel_x = -2; pixel_y = -2},/turf/simulated/floor/tiled/white,/area/medical/sleeper)
+"bAv" = (/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/security/tactical)
"bAw" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/medical/sleeper)
"bAx" = (/obj/effect/floor_decal/corner/paleblue{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/sleeper)
"bAy" = (/obj/effect/floor_decal/corner/paleblue{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/white,/area/medical/sleeper)
@@ -4136,7 +4136,7 @@
"bBB" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/tiled/white,/area/rnd/research)
"bBC" = (/obj/machinery/door/airlock/research{id_tag = "researchdoor"; name = "Research Division Access"; req_access = list(47)},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/rnd/research_foyer)
"bBD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/rnd/research_foyer)
-"bBE" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/rnd/research_foyer)
+"bBE" = (/obj/effect/floor_decal/corner/paleblue{dir = 2},/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor/tiled/white,/area/medical/reception)
"bBF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/rnd/research_foyer)
"bBG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/research{id_tag = "researchdoor"; name = "Research Division Access"; req_access = list(47)},/obj/machinery/door/firedoor/border_only,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/rnd/research_foyer)
"bBH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/rnd/research_foyer)
@@ -4336,13 +4336,13 @@
"bFt" = (/obj/machinery/camera/network/northern_star{c_tag = "Hall - Central Primary Port Mid 1"; dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/turf/simulated/floor/tiled,/area/hallway/primary/central_four)
"bFu" = (/turf/simulated/wall/r_wall,/area/crew_quarters/heads/hop)
"bFv" = (/obj/structure/table/rack{dir = 1},/obj/item/weapon/extinguisher,/obj/item/clothing/mask/gas,/turf/simulated/floor/plating,/area/maintenance/central)
-"bFw" = (/obj/structure/closet/crate,/obj/item/weapon/reagent_containers/food/drinks/bottle/wine,/turf/simulated/floor/plating,/area/maintenance/central)
+"bFw" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/highsecurity{name = "Armoury Tactical Equipment"; req_access = list(3)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/dark,/area/security/tactical)
"bFx" = (/turf/simulated/floor/tiled,/area/maintenance/central)
"bFy" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/maintenance/central)
"bFz" = (/obj/machinery/light/small,/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/central)
"bFA" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/maintenance/central)
"bFB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/maintenance/central)
-"bFC" = (/obj/structure/closet,/obj/item/weapon/storage/backpack,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/central)
+"bFC" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/dark,/area/security/tactical)
"bFD" = (/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon{codes_txt = "delivery;dir=2"; freq = 1400; location = "Kitchen"},/obj/machinery/door/firedoor/border_only,/obj/effect/floor_decal/industrial/loading,/turf/simulated/floor/tiled,/area/crew_quarters/kitchen)
"bFE" = (/obj/machinery/door/window/southleft{base_state = "left"; dir = 2; icon_state = "left"; name = "Kitchen Delivery"; req_access = list(28)},/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled,/area/crew_quarters/kitchen)
"bFF" = (/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo"; pixel_x = -5},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/kitchen)
@@ -4382,7 +4382,7 @@
"bGn" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/atmospherics/portables_connector,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled,/area/medical/sleeper)
"bGo" = (/obj/machinery/atmospherics/unary/freezer{dir = 2; icon_state = "freezer"},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/medical/sleeper)
"bGp" = (/obj/machinery/atmospherics/unary/cryo_cell,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/medical/sleeper)
-"bGq" = (/obj/structure/table/steel,/obj/item/weapon/storage/box/bodybags,/obj/effect/floor_decal/corner/paleblue/full{dir = 8},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/tiled,/area/medical/morgue)
+"bGq" = (/obj/structure/table/standard,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/security/tactical)
"bGr" = (/obj/structure/table/steel,/obj/item/weapon/paper_bin,/obj/item/weapon/pen/blue{pixel_x = 3; pixel_y = -5},/obj/item/weapon/pen/red{pixel_x = -1; pixel_y = -9},/obj/effect/floor_decal/corner/paleblue{dir = 5},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled,/area/medical/morgue)
"bGs" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/corner/paleblue{dir = 1},/turf/simulated/floor/tiled,/area/medical/morgue)
"bGt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/medical/morgue)
@@ -4391,7 +4391,7 @@
"bGw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/medical/morgue)
"bGx" = (/obj/machinery/chemical_dispenser/full,/obj/effect/floor_decal/corner/beige{dir = 9},/obj/structure/table/reinforced,/turf/simulated/floor/tiled/white,/area/medical/chemistry)
"bGy" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled/white,/area/medical/virology)
-"bGz" = (/obj/structure/table/steel,/obj/machinery/light_switch{pixel_x = 26; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/obj/machinery/camera/network/medbay{c_tag = "MED - Virology Airlock"; dir = 8},/turf/simulated/floor/tiled/white,/area/medical/virology)
+"bGz" = (/obj/structure/table/standard,/turf/simulated/floor/tiled/dark,/area/security/tactical)
"bGA" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/airless,/area/solar/auxport)
"bGB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/maintenance/auxsolarport)
"bGC" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/maintenance/research)
@@ -4476,7 +4476,7 @@
"bId" = (/obj/structure/table/standard,/obj/item/weapon/stamp/rd{pixel_x = 3; pixel_y = -2},/obj/item/weapon/reagent_containers/food/drinks/jar,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/item/weapon/folder/white_rd,/turf/simulated/floor/tiled/white,/area/rnd/rdoffice)
"bIe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/medical/virology)
"bIf" = (/obj/structure/closet/secure_closet/cargotech,/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/obj/item/weapon/stamp/cargo,/turf/simulated/floor/tiled,/area/quartermaster/storage)
-"bIg" = (/obj/structure/closet/crate,/obj/item/weapon/tank/emergency_oxygen/engi,/obj/item/weapon/tank/emergency_oxygen/double,/turf/simulated/floor/plating,/area/maintenance/research)
+"bIg" = (/obj/structure/table/standard,/obj/machinery/camera/network/security{c_tag = "SEC - Secure Armory Aft"; dir = 2},/turf/simulated/floor/tiled/dark,/area/security/tactical)
"bIh" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/obj/machinery/meter,/turf/simulated/floor,/area/maintenance/research)
"bIi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/maintenance/research)
"bIj" = (/obj/structure/table/standard,/turf/simulated/floor/reinforced,/area/rnd/misc_lab)
@@ -4539,7 +4539,7 @@
"bJo" = (/obj/effect/floor_decal/corner/paleblue{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/sleeper)
"bJp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/medical/sleeper)
"bJq" = (/obj/structure/sign/goldenplaque{desc = "Done No Harm."; name = "Best Doctor 2552"; pixel_y = -32},/obj/effect/floor_decal/corner/paleblue,/turf/simulated/floor/tiled/white,/area/medical/sleeper)
-"bJr" = (/obj/structure/closet,/obj/item/device/flashlight,/obj/effect/decal/cleanable/cobweb2,/obj/item/weapon/storage/backpack/satchel/vir,/obj/item/weapon/storage/backpack/virology,/turf/simulated/floor/plating,/area/maintenance/medbay_fore)
+"bJr" = (/obj/structure/table/standard,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/obj/machinery/recharger,/obj/item/weapon/cell/device/weapon{pixel_x = 4; pixel_y = 4},/obj/item/weapon/cell/device/weapon{pixel_x = 2; pixel_y = 2},/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon{pixel_x = -2; pixel_y = -2},/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/security/tactical)
"bJs" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/effect/floor_decal/corner/paleblue{dir = 10},/turf/simulated/floor/tiled/white,/area/medical/sleeper)
"bJt" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/corner/paleblue{dir = 10},/turf/simulated/floor/tiled/white,/area/medical/sleeper)
"bJu" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/corner/paleblue{dir = 10},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/tiled/white,/area/medical/sleeper)
@@ -4559,14 +4559,14 @@
"bJI" = (/obj/structure/morgue{tag = "icon-morgue1 (WEST)"; icon_state = "morgue1"; dir = 8},/obj/effect/floor_decal/corner/paleblue/full{dir = 4},/turf/simulated/floor/tiled,/area/medical/morgue)
"bJJ" = (/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "virology_airlock_interior"; locked = 1; name = "Virology Interior Airlock"; req_access = list(39)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/black,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/medical/virology)
"bJK" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/wall/r_wall,/area/medical/virology)
-"bJL" = (/obj/structure/table/rack,/obj/item/weapon/extinguisher,/obj/item/weapon/storage/belt/utility,/obj/item/clothing/mask/gas,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor/plating,/area/maintenance/research)
+"bJL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/dark,/area/security/tactical)
"bJM" = (/obj/structure/table/standard,/obj/structure/table/standard,/obj/item/stack/cable_coil,/obj/item/device/multitool,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/machinery/sparker{id = "Xenobio"; pixel_x = -25},/turf/simulated/floor/reinforced,/area/rnd/misc_lab)
"bJN" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor/reinforced,/area/rnd/misc_lab)
"bJO" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 8; frequency = 1441; icon_state = "map_injector"; id = "n2_in"; use_power = 1},/turf/simulated/floor/reinforced,/area/rnd/misc_lab)
"bJP" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/rnd/research)
"bJQ" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/rnd/research)
"bJR" = (/obj/structure/grille,/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced/polarized{dir = 8},/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 4},/turf/simulated/floor/plating,/area/rnd/rdoffice)
-"bJS" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/purple{dir = 9},/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/device/megaphone,/obj/item/weapon/pen,/obj/item/weapon/paper/monitorkey,/turf/simulated/floor/tiled/white,/area/rnd/rdoffice)
+"bJS" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/purple{dir = 9},/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/device/megaphone,/obj/item/weapon/paper/monitorkey,/obj/item/weapon/pen/multi,/turf/simulated/floor/tiled/white,/area/rnd/rdoffice)
"bJT" = (/obj/machinery/meter,/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/machinery/atmospherics/pipe/manifold/hidden/cyan,/obj/structure/door_assembly/door_assembly_com,/turf/simulated/floor/plating,/area/maintenance/medbay_aft)
"bJU" = (/obj/structure/table/standard,/obj/machinery/computer/skills,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/white,/area/rnd/rdoffice)
"bJV" = (/obj/effect/floor_decal/corner/purple{dir = 6},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/light_switch{pixel_x = 36; pixel_y = 0},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/tiled/white,/area/rnd/rdoffice)
@@ -4737,7 +4737,7 @@
"bNe" = (/turf/simulated/shuttle/wall,/area/shuttle/mining/station)
"bNf" = (/turf/simulated/shuttle/wall{icon_state = "swall_straight"; dir = 4},/area/shuttle/mining/station)
"bNg" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/mining/station)
-"bNh" = (/obj/structure/closet/crate,/obj/item/device/multitool,/obj/item/device/multitool,/obj/item/device/assembly/prox_sensor,/obj/item/device/flashlight,/obj/item/weapon/storage/backpack,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor/plating,/area/maintenance/research)
+"bNh" = (/obj/structure/closet/crate,/obj/item/clothing/glasses/meson/prescription,/obj/item/weapon/storage/box/lights/mixed,/obj/random/maintenance/security,/obj/random/maintenance/security,/obj/random/maintenance/security,/turf/simulated/floor/plating,/area/maintenance/security_starboard)
"bNi" = (/obj/effect/floor_decal/corner/purple/full{dir = 8},/obj/machinery/vending/cigarette,/turf/simulated/floor/tiled/white,/area/rnd/research)
"bNj" = (/obj/effect/floor_decal/corner/purple{dir = 1},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/rnd/research)
"bNk" = (/obj/structure/filingcabinet/chestdrawer,/obj/effect/floor_decal/corner/purple{dir = 9},/turf/simulated/floor/tiled/white,/area/rnd/rdoffice)
@@ -4751,13 +4751,13 @@
"bNs" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/assembly/robotics)
"bNt" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/central_four)
"bNu" = (/obj/structure/closet/secure_closet/hop2,/obj/effect/floor_decal/corner/blue{dir = 9},/turf/simulated/floor/tiled,/area/crew_quarters/heads/hop)
-"bNv" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/folder/blue,/obj/item/weapon/folder/red,/obj/item/weapon/pen,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/crew_quarters/heads/hop)
+"bNv" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/folder/blue,/obj/item/weapon/folder/red,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/weapon/pen/multi,/turf/simulated/floor/carpet,/area/crew_quarters/heads/hop)
"bNw" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/stamp/hop,/turf/simulated/floor/carpet,/area/crew_quarters/heads/hop)
"bNx" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/tiled/white,/area/rnd/docking)
"bNy" = (/obj/effect/floor_decal/corner/blue,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/tiled,/area/crew_quarters/heads/hop)
"bNz" = (/obj/effect/floor_decal/corner/blue{dir = 8},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/bridge_hallway)
"bNA" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/tiled,/area/bridge_hallway)
-"bNB" = (/obj/effect/floor_decal/corner/pink{dir = 10},/obj/structure/closet/secure_closet/paramedic,/turf/simulated/floor/tiled/white,/area/medical/medbay_emt_bay)
+"bNB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/dark,/area/security/tactical)
"bNC" = (/turf/simulated/wall/r_wall,/area/crew_quarters/captain)
"bND" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen)
"bNE" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen)
@@ -4820,7 +4820,7 @@
"bOJ" = (/turf/simulated/floor/tiled,/area/medical/virologyaccess)
"bOK" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/turf/simulated/floor/tiled,/area/medical/virologyaccess)
"bOL" = (/turf/simulated/shuttle/wall{icon_state = "swall_straight"; dir = 1},/area/shuttle/mining/station)
-"bOM" = (/obj/structure/closet/crate,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/mining/station)
+"bOM" = (/obj/structure/table/rack,/obj/effect/floor_decal/corner/green/full{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/eastleft{name = "Ballistics"; req_access = list(1)},/obj/random/projectile,/turf/simulated/floor/tiled/dark,/area/security/tactical)
"bON" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/structure/bed/chair,/turf/simulated/shuttle/floor,/area/shuttle/mining/station)
"bOO" = (/obj/machinery/computer/shuttle_control/mining,/turf/simulated/shuttle/floor,/area/shuttle/mining/station)
"bOP" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor,/area/shuttle/mining/station)
@@ -5018,7 +5018,7 @@
"bSz" = (/obj/effect/floor_decal/industrial/warning{dir = 9},/obj/structure/table/standard,/obj/item/stack/cable_coil,/obj/item/weapon/weldingtool/hugetank,/turf/simulated/floor/tiled/white,/area/assembly/robotics)
"bSA" = (/obj/structure/ore_box,/obj/machinery/light{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/mining/station)
"bSB" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "mining_shuttle"; pixel_x = 25; pixel_y = -8; req_one_access = list(13,48); tag_door = "mining_shuttle_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/mining/station)
-"bSC" = (/obj/structure/table/rack,/obj/item/clothing/mask/gas,/turf/simulated/floor/plating,/area/maintenance/research)
+"bSC" = (/turf/simulated/floor/tiled/dark,/area/security/tactical)
"bSD" = (/obj/effect/decal/cleanable/generic,/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/floor/plating,/area/maintenance/research)
"bSE" = (/turf/simulated/wall/r_wall,/area/rnd/xenobiology/xenoflora_storage)
"bSF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor/plating,/area/rnd/xenobiology/xenoflora_storage)
@@ -5044,7 +5044,7 @@
"bSZ" = (/obj/effect/floor_decal/corner/blue/full{dir = 4},/obj/machinery/vending/coffee,/turf/simulated/floor/tiled,/area/bridge_hallway)
"bTa" = (/obj/structure/closet/secure_closet/captains,/turf/simulated/floor/carpet,/area/crew_quarters/captain)
"bTb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/carpet,/area/crew_quarters/captain)
-"bTc" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/camera/network/command{c_tag = "COM - Captain's Bedroom"; dir = 1},/turf/simulated/floor/carpet,/area/crew_quarters/captain)
+"bTc" = (/obj/structure/bed/chair/comfy/beige{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_6)
"bTd" = (/obj/structure/displaycase,/turf/simulated/floor/carpet,/area/crew_quarters/captain)
"bTe" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/captain)
"bTf" = (/obj/structure/table/standard,/obj/machinery/light,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/captain)
@@ -5093,7 +5093,7 @@
"bTW" = (/obj/machinery/iv_drip,/turf/simulated/floor/tiled/dark,/area/medical/biostorage)
"bTX" = (/obj/structure/closet/l3closet/medical,/turf/simulated/floor/tiled/dark,/area/medical/biostorage)
"bTY" = (/obj/item/device/radio/intercom{broadcasting = 0; dir = 4; listening = 1; name = "Colony Director's Intercom"; pixel_x = 21; pixel_y = 0},/obj/structure/table/woodentable,/obj/item/weapon/folder/blue_captain,/turf/simulated/floor/wood,/area/crew_quarters/captain)
-"bTZ" = (/obj/structure/bedsheetbin,/obj/structure/table/steel,/turf/simulated/floor/tiled/dark,/area/medical/biostorage)
+"bTZ" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled/dark,/area/security/tactical)
"bUa" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/floodlight,/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor,/area/maintenance/medbay_aft)
"bUb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/medbay_aft)
"bUc" = (/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green,/obj/machinery/power/sensor{name = "Powernet Sensor - Medbay Subgrid"; name_tag = "Medbay Subgrid"},/turf/simulated/floor,/area/maintenance/substation/medical)
@@ -5136,7 +5136,7 @@
"bUN" = (/obj/effect/floor_decal/corner/blue{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled,/area/bridge_hallway)
"bUO" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/corner/blue{dir = 6},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled,/area/bridge_hallway)
"bUP" = (/turf/simulated/wall/r_wall,/area/bridge_hallway)
-"bUQ" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/folder/blue,/obj/item/weapon/pen,/obj/item/device/megaphone,/obj/machinery/requests_console{announcementConsole = 1; department = "Colony Director's Desk"; departmentType = 5; name = "Station Administrator RC"; pixel_x = 30; pixel_y = 0},/obj/structure/window/reinforced,/turf/simulated/floor/wood,/area/crew_quarters/captain)
+"bUQ" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/folder/blue,/obj/item/device/megaphone,/obj/machinery/requests_console{announcementConsole = 1; department = "Colony Director's Desk"; departmentType = 5; name = "Station Administrator RC"; pixel_x = 30; pixel_y = 0},/obj/structure/window/reinforced,/obj/item/weapon/pen/multi,/turf/simulated/floor/wood,/area/crew_quarters/captain)
"bUR" = (/turf/simulated/wall,/area/crew_quarters/cafeteria)
"bUS" = (/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; dir = 1; freq = 1400; location = "Medbay"},/obj/machinery/door/firedoor/border_only,/obj/effect/floor_decal/industrial/loading{tag = "icon-loadingarea (WEST)"; icon_state = "loadingarea"; dir = 8},/turf/simulated/floor/plating,/area/medical/patient_wing)
"bUT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/crew_quarters/cafeteria)
@@ -5243,7 +5243,7 @@
"bWQ" = (/obj/structure/bed/chair,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green,/turf/simulated/floor/tiled/neutral,/area/crew_quarters/cafeteria)
"bWR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "chemwindow"; name = "Chemistry Window Shutters"; opacity = 0},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/medical/chemistry)
"bWS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "chemwindow"; name = "Chemistry Window Shutters"; opacity = 0},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/medical/chemistry)
-"bWT" = (/obj/structure/table/rack,/obj/item/bodybag/cryobag,/obj/effect/floor_decal/corner/paleblue/full{dir = 8},/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/storage/firstaid/regular,/turf/simulated/floor/tiled/white,/area/medical/first_aid_station)
+"bWT" = (/obj/structure/table/rack,/obj/effect/floor_decal/corner/blue/full{dir = 1},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/window/brigdoor/westright{name = "Energy"},/obj/random/energy,/turf/simulated/floor/tiled/dark,/area/security/tactical)
"bWU" = (/obj/effect/floor_decal/corner/pink{dir = 9},/turf/simulated/floor/tiled/white,/area/medical/medbay_emt_bay)
"bWV" = (/obj/effect/floor_decal/corner/pink{dir = 6},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/medical/medbay_emt_bay)
"bWW" = (/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; dir = 2; frequency = 1487; icon_state = "intercom"; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -21},/turf/simulated/floor/tiled,/area/medical/virologyaccess)
@@ -5255,7 +5255,7 @@
"bXc" = (/obj/effect/floor_decal/corner/pink{dir = 10},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/floor/tiled/white,/area/medical/patient_b)
"bXd" = (/obj/effect/floor_decal/corner/pink{dir = 10},/obj/structure/table/glass,/obj/item/weapon/paper_bin,/obj/item/weapon/clipboard,/obj/item/weapon/pen,/turf/simulated/floor/tiled/white,/area/medical/patient_b)
"bXe" = (/obj/machinery/computer/med_data/laptop,/obj/structure/table/glass,/obj/effect/floor_decal/corner/pink/full{dir = 4},/obj/machinery/light,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/turf/simulated/floor/tiled/white,/area/medical/patient_b)
-"bXf" = (/obj/item/weapon/gun/launcher/syringe,/obj/item/weapon/storage/box/syringegun,/obj/structure/table/steel,/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled/dark,/area/medical/biostorage)
+"bXf" = (/obj/structure/table/reinforced,/obj/machinery/light{dir = 4},/obj/item/ammo_magazine/mc9mmt/practice,/obj/item/ammo_magazine/mc9mmt/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/turf/simulated/floor/tiled,/area/security/range)
"bXg" = (/obj/item/weapon/storage/box/lights/mixed,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/structure/table/steel,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green,/obj/item/device/radio{frequency = 1487; icon_state = "med_walkietalkie"; name = "Medbay Emergency Radio Link"},/turf/simulated/floor/tiled/dark,/area/medical/biostorage)
"bXh" = (/obj/structure/closet/crate{icon_state = "crateopen"; name = "Grenade Crate"; opened = 1},/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/device/assembly/igniter,/obj/item/device/assembly/igniter,/obj/item/device/assembly/igniter,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/turf/simulated/floor/tiled/dark,/area/medical/biostorage)
"bXi" = (/obj/structure/bed/chair/comfy/brown{dir = 1},/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; dir = 8; frequency = 1487; icon_state = "intercom"; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = -21; pixel_y = 0},/turf/simulated/floor/carpet/blue,/area/medical/psych)
@@ -5318,7 +5318,7 @@
"bYn" = (/turf/simulated/floor/wood,/area/crew_quarters/captain)
"bYo" = (/obj/structure/table/marble,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/item/weapon/reagent_containers/food/snacks/pie,/obj/machinery/light{dir = 1},/obj/machinery/computer/security/telescreen/entertainment{pixel_y = 32},/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/tiled/white,/area/crew_quarters/cafeteria)
"bYp" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/maintenance/central)
-"bYq" = (/obj/structure/table/rack,/obj/item/weapon/extinguisher,/obj/item/clothing/head/hardhat/red,/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/item/clothing/glasses/meson,/turf/simulated/floor,/area/maintenance/research)
+"bYq" = (/obj/structure/table/rack,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/weapon/storage/belt/utility,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/security,/obj/random/maintenance/security,/turf/simulated/floor/plating,/area/maintenance/security_starboard)
"bYr" = (/obj/item/weapon/stool/padded,/turf/simulated/floor/tiled/neutral,/area/crew_quarters/cafeteria)
"bYs" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled/neutral,/area/crew_quarters/cafeteria)
"bYt" = (/obj/structure/table/standard,/obj/item/weapon/material/kitchen/utensil/fork,/obj/item/weapon/material/kitchen/utensil/spoon{pixel_x = 2},/turf/simulated/floor/tiled/neutral,/area/crew_quarters/cafeteria)
@@ -5361,7 +5361,7 @@
"bZe" = (/obj/machinery/light/small{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/research)
"bZf" = (/obj/machinery/power/smes/buildable{charge = 5e+006; input_attempt = 1; input_level = 200000; output_level = 200000},/obj/structure/cable/cyan{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/bluegrid,/area/ai)
"bZg" = (/obj/machinery/flasher{id = "AI"; pixel_x = 0; pixel_y = -24},/obj/machinery/hologram/holopad,/turf/simulated/floor/bluegrid,/area/ai)
-"bZh" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/tank/oxygen,/obj/item/weapon/tank/oxygen,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/extinguisher,/turf/simulated/floor/plating,/area/maintenance/research)
+"bZh" = (/obj/structure/table/standard,/obj/item/weapon/hand_labeler,/obj/item/weapon/hand_labeler,/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 24},/turf/simulated/floor/tiled,/area/storage/art)
"bZi" = (/obj/structure/bed/chair/comfy/black{dir = 8},/turf/simulated/floor/carpet,/area/bridge/meeting_room)
"bZj" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/carpet,/area/crew_quarters/heads/hop)
"bZk" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/floor_decal/corner/blue{dir = 6},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/bridge_hallway)
@@ -5512,7 +5512,7 @@
"cbZ" = (/obj/structure/bed/chair,/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/tiled/neutral,/area/crew_quarters/cafeteria)
"cca" = (/obj/structure/bed/chair,/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/tiled,/area/crew_quarters/cafeteria)
"ccb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/crew_quarters/cafeteria)
-"ccc" = (/obj/structure/table/rack,/obj/item/clothing/suit/radiation,/obj/item/clothing/head/radiation,/obj/item/weapon/storage/toolbox/emergency,/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; dir = 2; frequency = 1487; icon_state = "intercom"; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -21},/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/tiled/dark,/area/medical/biostorage)
+"ccc" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled/dark,/area/security/tactical)
"ccd" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/central_two)
"cce" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engineering/atmos/storage)
"ccf" = (/obj/effect/floor_decal/corner/pink{dir = 9},/turf/simulated/floor/tiled,/area/hallway/secondary/medical_emergency_hallway)
@@ -5726,7 +5726,7 @@
"cgf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/medical_emergency_hallway)
"cgg" = (/obj/structure/closet/emcloset,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/tiled/dark,/area/hallway/secondary/medical_emergency_hallway)
"cgh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access = list(24)},/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/atmos)
-"cgi" = (/obj/structure/closet,/obj/item/clothing/glasses/welding,/obj/item/weapon/weldingtool,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/medbay_aft)
+"cgi" = (/obj/structure/table/rack,/obj/effect/floor_decal/corner/green/full,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/machinery/light{dir = 8},/obj/machinery/door/window/brigdoor/eastright{name = "Ballistics"},/obj/random/projectile,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/tiled/dark,/area/security/tactical)
"cgj" = (/obj/machinery/space_heater,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/medbay_aft)
"cgk" = (/obj/machinery/portable_atmospherics/powered/scrubber,/turf/simulated/floor,/area/maintenance/medbay_aft)
"cgl" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/medbay_aft)
@@ -5872,7 +5872,7 @@
"ciV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/maintenance/medbay_aft)
"ciW" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/corner/pink{dir = 6},/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; dir = 4; frequency = 1487; icon_state = "intercom"; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 21; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/medical/patient_wing)
"ciX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/crew_quarters/cafeteria)
-"ciY" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -4; pixel_y = 0},/obj/item/weapon/wrench,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/large_escape_pod1/station)
+"ciY" = (/obj/structure/table/rack,/obj/effect/floor_decal/corner/blue/full{dir = 4},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/machinery/light{dir = 4},/obj/machinery/door/window/brigdoor/westleft{name = "Energy"; req_access = list(1)},/obj/random/energy,/turf/simulated/floor/tiled/dark,/area/security/tactical)
"ciZ" = (/obj/structure/closet/crate/medical,/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/box/masks{pixel_x = 0; pixel_y = 0},/obj/item/weapon/storage/box/gloves{pixel_x = 3; pixel_y = 4},/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/fire{layer = 2.9; pixel_x = 2; pixel_y = 3},/obj/item/weapon/storage/firstaid/adv{pixel_x = -2},/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/large_escape_pod1/station)
"cja" = (/obj/machinery/sleeper{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod1/station)
"cjb" = (/obj/machinery/sleep_console,/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod1/station)
@@ -5893,7 +5893,7 @@
"cjq" = (/turf/simulated/wall,/area/maintenance/substation/cargo)
"cjr" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/engineering{name = "Cargo Substation"; req_one_access = list(11,24,50)},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/maintenance/substation/cargo)
"cjs" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall,/area/maintenance/substation/cargo)
-"cjt" = (/obj/structure/table/rack,/obj/item/weapon/extinguisher,/obj/item/clothing/head/hardhat/red,/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/item/clothing/glasses/meson,/turf/simulated/floor,/area/maintenance/cargo)
+"cjt" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled/dark,/area/security/tactical)
"cju" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/maintenance/cargo)
"cjv" = (/turf/simulated/floor,/area/maintenance/cargo)
"cjw" = (/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/obj/machinery/meter,/obj/effect/floor_decal/industrial/warning{dir = 9},/turf/simulated/floor,/area/maintenance/cargo)
@@ -5924,7 +5924,7 @@
"cjV" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/maintenance/substation/cargo)
"cjW" = (/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor,/area/maintenance/substation/cargo)
"cjX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor,/area/maintenance/substation/cargo)
-"cjY" = (/obj/structure/closet/crate,/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/cargo)
+"cjY" = (/obj/machinery/alarm{dir = 1; pixel_y = -25},/obj/structure/table/rack,/obj/random/maintenance/security,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/holodeck)
"cjZ" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 1; start_pressure = 740},/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor,/area/maintenance/cargo)
"cka" = (/obj/effect/floor_decal/corner/red{dir = 8},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/light_switch{pixel_x = -36},/obj/structure/table/reinforced,/obj/machinery/recharger{pixel_y = 0},/turf/simulated/floor/tiled,/area/security/checkpoint2)
"ckb" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/obj/item/device/multitool,/obj/item/clothing/glasses/meson,/obj/machinery/ai_status_display{pixel_x = -32; pixel_y = 0},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/storage/tech)
@@ -6093,10 +6093,10 @@
"cni" = (/obj/machinery/floodlight,/turf/simulated/floor,/area/storage/emergency_storage/emergency6)
"cnj" = (/obj/structure/table/rack{dir = 1},/obj/item/clothing/suit/fire/firefighter,/obj/item/weapon/tank/oxygen,/obj/item/clothing/mask/gas,/obj/item/weapon/extinguisher,/obj/item/clothing/head/hardhat/red,/obj/item/clothing/glasses/meson,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plating,/area/storage/emergency_storage/emergency6)
"cnk" = (/obj/machinery/portable_atmospherics/powered/pump/filled,/turf/simulated/floor/plating,/area/storage/emergency_storage/emergency6)
-"cnl" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold4w/visible/red,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/engineering/atmos)
+"cnl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/corner/lime/full{dir = 8},/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Mixing to Mix Tank"},/turf/simulated/floor/tiled,/area/engineering/atmos)
"cnm" = (/obj/machinery/atmospherics/pipe/simple/visible/red,/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/engineering/atmos)
-"cnn" = (/obj/machinery/atmospherics/valve/digital/open,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/engineering/atmos)
-"cno" = (/obj/structure/closet/wardrobe/grey,/obj/item/weapon/storage/backpack,/obj/item/weapon/storage/backpack,/turf/simulated/floor/plating,/area/maintenance/cargo)
+"cnn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/binary/pump{dir = 2; name = "Mix Tank to Port"},/turf/simulated/floor/tiled,/area/engineering/atmos)
+"cno" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/item/weapon/storage/box/shotgunshells,/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/green/full,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunammo,/obj/item/weapon/storage/box/shotgunammo,/obj/machinery/door/window/brigdoor/northleft{name = "Ammo"; req_access = list(2)},/turf/simulated/floor/tiled/dark,/area/security/tactical)
"cnp" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/robotics{pixel_x = -2; pixel_y = 2},/obj/item/weapon/circuitboard/mecha_control{pixel_x = 1; pixel_y = -1},/turf/simulated/floor/tiled/dark,/area/storage/tech)
"cnq" = (/turf/simulated/floor/tiled/dark,/area/storage/tech)
"cnr" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/storage/tech)
@@ -6127,7 +6127,7 @@
"cnQ" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 8; name = "Bar"; sortType = "Bar"},/turf/simulated/floor/tiled,/area/hallway/primary/central_three)
"cnR" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/tiled,/area/hallway/primary/central_three)
"cnS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/quartermaster/delivery)
-"cnT" = (/obj/structure/closet/crate,/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/medbay_aft)
+"cnT" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/structure/window/reinforced,/obj/effect/floor_decal/corner/yellow/full,/obj/machinery/door/window/brigdoor/northleft{name = "Combat Armor"; req_access = list(2)},/obj/item/clothing/gloves/arm_guard/combat,/obj/item/clothing/shoes/leg_guard/combat,/obj/item/clothing/suit/armor/combat,/obj/item/clothing/head/helmet/combat,/turf/simulated/floor/tiled/dark,/area/security/tactical)
"cnU" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/effect/floor_decal/corner/brown{dir = 9},/turf/simulated/floor/tiled,/area/quartermaster/office)
"cnV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/quartermaster/office)
"cnW" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 1; sortType = "Cargo Bay"; name = "Cargo Bay"},/turf/simulated/floor/tiled,/area/quartermaster/office)
@@ -6167,14 +6167,14 @@
"coE" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 26},/turf/simulated/floor/tiled/dark,/area/hallway/primary/central_three)
"coF" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green,/turf/simulated/floor/tiled,/area/crew_quarters/heads/hop)
"coG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/crew_quarters/sleep/elevator)
-"coH" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/tank/oxygen,/obj/item/weapon/tank/oxygen,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/extinguisher,/turf/simulated/floor/plating,/area/maintenance/medbay_aft)
+"coH" = (/obj/effect/floor_decal/corner/green/full{dir = 4},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 4},/obj/structure/table/rack,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/machinery/door/window/brigdoor/northright{name = "Ammo"},/turf/simulated/floor/tiled/dark,/area/security/tactical)
"coI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor,/area/maintenance/medbay_aft)
"coJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/maintenance/medbay_aft)
"coK" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor,/area/maintenance/medbay_aft)
"coL" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/maintenance/medbay_aft)
"coM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/medbay_aft)
"coN" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/medbay_aft)
-"coO" = (/obj/structure/closet/crate/medical,/turf/simulated/floor,/area/maintenance/medbay_aft)
+"coO" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/effect/floor_decal/corner/yellow/full{tag = "icon-corner_white_full (EAST)"; icon_state = "corner_white_full"; dir = 4},/obj/machinery/door/window/brigdoor/northright{name = "Combat Armor"},/obj/item/clothing/gloves/arm_guard/combat,/obj/item/clothing/shoes/leg_guard/combat,/obj/item/clothing/suit/armor/combat,/obj/item/clothing/head/helmet/combat,/turf/simulated/floor/tiled/dark,/area/security/tactical)
"coP" = (/obj/machinery/autolathe,/obj/effect/floor_decal/corner/brown{dir = 9},/turf/simulated/floor/tiled,/area/quartermaster/office)
"coQ" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/quartermaster/office)
"coR" = (/obj/machinery/computer/supplycomp,/turf/simulated/floor/tiled,/area/quartermaster/office)
@@ -6240,7 +6240,7 @@
"cpZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/storage/tools)
"cqa" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/tiled,/area/engineering/atmos)
"cqb" = (/obj/structure/bed/chair,/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; dir = 1; frequency = 1487; icon_state = "intercom"; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = 21},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/large_escape_pod1/station)
-"cqc" = (/obj/structure/table/rack,/obj/item/clothing/glasses/sunglasses,/obj/item/clothing/suit/storage/hazardvest,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/maintenance/medbay_aft)
+"cqc" = (/obj/item/weapon/soap/nanotrasen,/obj/item/weapon/soap/nanotrasen,/obj/structure/table/standard,/obj/random/soap,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/recreation_area_restroom)
"cqd" = (/obj/structure/closet/emcloset,/turf/simulated/floor/tiled/dark,/area/hallway/primary/port)
"cqe" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/quartermaster/office)
"cqf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/port)
@@ -6412,7 +6412,7 @@
"ctp" = (/obj/machinery/atmospherics/portables_connector,/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/tiled,/area/engineering/atmos)
"ctq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
"ctr" = (/obj/effect/floor_decal/corner/white{dir = 4},/obj/effect/floor_decal/corner/blue,/obj/structure/closet/emcloset,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
-"cts" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "N2O to Transit"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/tiled,/area/engineering/atmos)
+"cts" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/supply,/turf/simulated/floor/tiled,/area/engineering/atmos)
"ctt" = (/obj/structure/toilet,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_12)
"ctu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/secondary/docking_hallway)
"ctv" = (/obj/structure/table/standard,/obj/item/weapon/tape_roll,/obj/item/weapon/storage/firstaid/regular{pixel_x = 6; pixel_y = -5},/obj/effect/floor_decal/corner/brown/full,/turf/simulated/floor/tiled,/area/quartermaster/office)
@@ -6610,7 +6610,7 @@
"cxf" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/quartermaster/storage)
"cxg" = (/turf/simulated/floor/tiled,/area/quartermaster/storage)
"cxh" = (/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled,/area/quartermaster/storage)
-"cxi" = (/obj/structure/table/reinforced,/obj/effect/floor_decal/corner/paleblue{dir = 6},/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = 25; pixel_y = 0},/obj/machinery/recharger,/obj/item/device/radio{frequency = 1487; icon_state = "med_walkietalkie"; name = "Medbay Emergency Radio Link"},/turf/simulated/floor/tiled/white,/area/medical/first_aid_station)
+"cxi" = (/obj/structure/closet,/obj/item/weapon/beach_ball,/obj/random/maintenance/clean,/obj/random/maintenance/cargo,/turf/simulated/floor,/area/maintenance/pool)
"cxj" = (/obj/structure/bed/chair{dir = 4},/obj/structure/disposalpipe/segment,/obj/machinery/camera/network/cargo{c_tag = "CRG - Quartermaster"; dir = 4; name = "security camera"},/turf/simulated/floor/tiled,/area/quartermaster/qm)
"cxk" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled,/area/quartermaster/qm)
"cxl" = (/obj/structure/table/standard,/obj/item/weapon/folder/yellow,/obj/item/weapon/pen{pixel_x = 4; pixel_y = 4},/obj/item/weapon/pen/red{pixel_x = 2; pixel_y = 6},/turf/simulated/floor/tiled,/area/quartermaster/qm)
@@ -6648,7 +6648,7 @@
"cxR" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/wood,/area/crew_quarters/bar)
"cxS" = (/obj/structure/table/woodentable,/obj/item/clothing/head/cakehat,/obj/machinery/atm{pixel_y = 30},/obj/machinery/newscaster{pixel_x = -30},/turf/simulated/floor/wood,/area/crew_quarters/bar)
"cxT" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/wood,/area/crew_quarters/bar)
-"cxU" = (/obj/structure/table/reinforced,/turf/simulated/floor/tiled,/area/vacant/vacant_shop)
+"cxU" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/structure/table/rack,/obj/random/maintenance/security,/obj/random/maintenance/security,/obj/random/maintenance/security,/turf/simulated/floor,/area/maintenance/security_port)
"cxV" = (/obj/structure/bed/chair/comfy/beige{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_5)
"cxW" = (/obj/machinery/door/airlock/glass_medical{name = "First-Aid Station"; req_one_access = list(5,10,50,63)},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/medical/first_aid_station)
"cxX" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access = list(10)},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
@@ -6662,12 +6662,12 @@
"cyf" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
"cyg" = (/obj/structure/table/standard,/obj/machinery/microwave,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_6)
"cyh" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 2},/obj/machinery/light,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_6)
-"cyi" = (/obj/structure/bed/chair/comfy/beige{dir = 4},/obj/machinery/camera/network/civilian{c_tag = "CIV - Visitor Room 6"; dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_6)
+"cyi" = (/obj/structure/bed/chair/comfy/beige{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_11)
"cyj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/medical/first_aid_station)
"cyk" = (/obj/structure/bed/chair/comfy/beige{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_6)
"cyl" = (/obj/structure/bed/chair/comfy/beige{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_11)
"cym" = (/obj/effect/floor_decal/corner/red{dir = 5},/obj/structure/closet/secure_closet/security,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/security/checkpoint2)
-"cyn" = (/obj/structure/bed/chair/comfy/beige{dir = 8},/obj/machinery/camera/network/civilian{c_tag = "CIV - Visitor Room 11"; dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_11)
+"cyn" = (/obj/structure/bed/chair/comfy/beige{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_12)
"cyo" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 2},/obj/machinery/light,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_11)
"cyp" = (/obj/structure/table/standard,/obj/machinery/microwave,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_11)
"cyq" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
@@ -6678,8 +6678,8 @@
"cyv" = (/obj/structure/cable/green,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/disposalpipe/segment,/obj/machinery/light_switch{pixel_x = -12; pixel_y = -24},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_6)
"cyw" = (/obj/structure/table/standard,/obj/machinery/microwave,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_12)
"cyx" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 2},/obj/machinery/light,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_12)
-"cyy" = (/obj/structure/bed/chair/comfy/beige{dir = 4},/obj/machinery/camera/network/civilian{c_tag = "CIV - Visitor Room 12"; dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_12)
-"cyz" = (/obj/structure/table/reinforced,/obj/item/weapon/stamp/ce,/obj/item/weapon/pen,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/flame/lighter/zippo,/obj/item/device/megaphone,/obj/item/weapon/folder/yellow_ce,/turf/simulated/floor/tiled,/area/crew_quarters/heads/chief)
+"cyy" = (/obj/structure/bed/chair/comfy/beige{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_3)
+"cyz" = (/obj/structure/table/reinforced,/obj/item/weapon/stamp/ce,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/flame/lighter/zippo,/obj/item/device/megaphone,/obj/item/weapon/folder/yellow_ce,/obj/item/weapon/pen/multi,/turf/simulated/floor/tiled,/area/crew_quarters/heads/chief)
"cyA" = (/obj/structure/bed/chair/comfy/beige{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_12)
"cyB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/sign/securearea,/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva)
"cyC" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/quartermaster/storage)
@@ -6696,7 +6696,7 @@
"cyN" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/closet/secure_closet/engineering_welding,/turf/simulated/floor/tiled,/area/engineering/workshop)
"cyO" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled,/area/quartermaster/qm)
"cyP" = (/obj/machinery/computer/security/mining,/turf/simulated/floor/tiled,/area/quartermaster/qm)
-"cyQ" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/turf/simulated/floor,/area/maintenance/apmaint)
+"cyQ" = (/obj/structure/closet,/obj/item/clothing/suit/storage/toggle/labcoat/genetics,/obj/item/weapon/storage/backpack/genetics,/obj/random/maintenance/clean,/obj/random/maintenance/medical,/turf/simulated/floor,/area/maintenance/holodeck)
"cyR" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor,/area/maintenance/apmaint)
"cyS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/maintenance/apmaint)
"cyT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/maintenance/apmaint)
@@ -6859,7 +6859,7 @@
"cBU" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/tiled/dark,/area/hallway/secondary/docking_hallway)
"cBV" = (/obj/machinery/atmospherics/pipe/tank/air,/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor,/area/maintenance/bar)
"cBW" = (/obj/machinery/atmospherics/pipe/tank/air,/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor,/area/maintenance/bar)
-"cBX" = (/obj/structure/table/rack{dir = 4},/obj/item/clothing/mask/gas,/turf/simulated/floor/plating,/area/maintenance/bar)
+"cBX" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/obj/item/weapon/extinguisher,/obj/item/weapon/crowbar,/obj/random/medical/lite,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/large_escape_pod2/station)
"cBY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/floor_decal/corner/lime{dir = 10},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/tiled/white,/area/medical/virology)
"cBZ" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/blood/oil/streak{amount = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/engineering/workshop)
"cCa" = (/obj/structure/cable/green,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/table/reinforced,/obj/item/weapon/crowbar,/obj/item/clothing/gloves/black,/obj/item/weapon/storage/box/lights/mixed,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/engineering/workshop)
@@ -6986,7 +6986,7 @@
"cEr" = (/obj/structure/disposalpipe/segment,/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/engineering_hallway)
"cEs" = (/obj/structure/table/steel,/obj/item/clothing/gloves/black,/obj/item/device/multitool{pixel_x = 5},/obj/random/tech_supply,/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/construction)
"cEt" = (/obj/structure/table/steel,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/construction)
-"cEu" = (/obj/structure/table/steel,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/construction)
+"cEu" = (/obj/effect/decal/cleanable/dirt,/obj/structure/closet/crate,/obj/item/weapon/reagent_containers/food/drinks/bottle/wine,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/random/drinkbottle,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/pool)
"cEv" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/vacant/vacant_shop)
"cEw" = (/turf/simulated/floor,/area/construction)
"cEx" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor,/area/construction)
@@ -7025,7 +7025,7 @@
"cFe" = (/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/turf/simulated/floor/tiled,/area/vacant/vacant_shop)
"cFf" = (/obj/structure/bed/chair/comfy/beige{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_3)
"cFg" = (/obj/structure/closet/secure_closet/engineering_personal,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/machinery/camera/network/engineering{c_tag = "ENG - Locker Room"; dir = 4},/turf/simulated/floor/tiled/yellow,/area/engineering/locker_room)
-"cFh" = (/obj/structure/bed/chair/comfy/beige{dir = 8},/obj/machinery/camera/network/civilian{c_tag = "CIV - Visitor Room 3"; dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_3)
+"cFh" = (/obj/structure/bed/chair/comfy/beige{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_4)
"cFi" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 2},/obj/machinery/light,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_3)
"cFj" = (/obj/structure/table/standard,/obj/machinery/microwave,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_3)
"cFk" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/structure/mirror{pixel_x = -28},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_10)
@@ -7034,12 +7034,12 @@
"cFn" = (/obj/machinery/door/airlock{name = "Restroom"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_9)
"cFo" = (/obj/structure/table/standard,/obj/machinery/microwave,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_4)
"cFp" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 2},/obj/machinery/light,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_4)
-"cFq" = (/obj/structure/bed/chair/comfy/beige{dir = 4},/obj/machinery/camera/network/civilian{c_tag = "CIV - Visitor Room 4"; dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_4)
+"cFq" = (/obj/structure/bed/chair/comfy/beige{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_9)
"cFr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/tiled/dark,/area/hallway/primary/port)
"cFs" = (/obj/structure/bed/chair/comfy/beige{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_4)
"cFt" = (/obj/structure/bed/chair/comfy/beige{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_9)
"cFu" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled/dark,/area/hallway/primary/port)
-"cFv" = (/obj/structure/bed/chair/comfy/beige{dir = 8},/obj/machinery/camera/network/civilian{c_tag = "CIV - Visitor Room 9"; dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_9)
+"cFv" = (/obj/structure/bed/chair/comfy/beige{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_10)
"cFw" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 2},/obj/machinery/light,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_9)
"cFx" = (/obj/structure/table/standard,/obj/machinery/microwave,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_9)
"cFy" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/corner/white{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
@@ -7048,7 +7048,7 @@
"cFB" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/effect/floor_decal/corner/brown{dir = 5},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light_switch{pixel_x = -12; pixel_y = 24},/turf/simulated/floor/tiled,/area/quartermaster/warehouse)
"cFC" = (/obj/structure/table/standard,/obj/machinery/microwave,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_10)
"cFD" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 2},/obj/machinery/light,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_10)
-"cFE" = (/obj/structure/bed/chair/comfy/beige{dir = 4},/obj/machinery/camera/network/civilian{c_tag = "CIV - Visitor Room 10"; dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_10)
+"cFE" = (/obj/structure/bed/chair/comfy/beige{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_1)
"cFF" = (/obj/structure/closet/wardrobe/engineering_yellow,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/firealarm{dir = 4; layer = 3.3; pixel_x = 26},/turf/simulated/floor/tiled/yellow,/area/engineering/locker_room)
"cFG" = (/obj/structure/bed/chair/comfy/beige{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_10)
"cFH" = (/obj/machinery/door/firedoor/border_only,/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/ai_monitored/storage/eva)
@@ -7073,7 +7073,7 @@
"cGa" = (/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/effect/floor_decal/corner/yellow{dir = 9},/turf/simulated/floor/tiled,/area/hallway/secondary/engineering_hallway)
"cGb" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/hallway/secondary/engineering_hallway)
"cGc" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/effect/floor_decal/corner/yellow{dir = 6},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/hallway/secondary/engineering_hallway)
-"cGd" = (/obj/structure/table/steel,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor/tiled,/area/construction)
+"cGd" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j1"; dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
"cGe" = (/turf/simulated/floor/tiled,/area/construction)
"cGf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/docking_hallway)
"cGg" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/dark,/area/ai_monitored/storage/eva)
@@ -7262,7 +7262,7 @@
"cJH" = (/obj/machinery/power/breakerbox/activated{RCon_tag = "Dock Substation Bypass"},/turf/simulated/floor/plating,/area/maintenance/substation/dock)
"cJI" = (/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Substation - Dock"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/maintenance/substation/dock)
"cJJ" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor,/area/maintenance/substation/dock)
-"cJK" = (/obj/structure/table/rack{dir = 4},/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/tiled,/area/vacant/vacant_shop)
+"cJK" = (/obj/structure/closet,/obj/item/clothing/head/ushanka,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/pool)
"cJL" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/lino,/area/crew_quarters/bar)
"cJM" = (/obj/structure/table/reinforced,/obj/machinery/chemical_dispenser/bar_soft/full,/turf/simulated/floor/lino,/area/crew_quarters/bar)
"cJN" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/wood,/area/crew_quarters/bar)
@@ -7289,7 +7289,7 @@
"cKi" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/tiled/dark,/area/hallway/primary/central_three)
"cKj" = (/turf/simulated/wall/r_wall,/area/engineering/atmos/monitoring)
"cKk" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/table/standard,/obj/machinery/light_switch{pixel_x = 12; pixel_y = 24},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/sleep/engi_wash)
-"cKl" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/firstaid/regular,/obj/item/bodybag/cryobag{pixel_x = 6},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light_switch{pixel_x = 0; pixel_y = -27},/turf/simulated/floor/tiled/yellow,/area/engineering/locker_room)
+"cKl" = (/obj/structure/table/rack,/obj/item/weapon/flame/lighter/random,/obj/item/weapon/storage/fancy/cigarettes/dromedaryco,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/pool)
"cKm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/computer/cryopod/dorms{pixel_y = -30},/turf/simulated/floor/tiled,/area/crew_quarters/sleep/elevator)
"cKn" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/sleep/engi_wash)
"cKo" = (/obj/machinery/shower{dir = 1},/obj/machinery/door/window/northleft{name = "Shower"; req_access = list()},/obj/structure/curtain/open/shower/engineering,/obj/structure/window/basic{dir = 8},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/sleep/engi_wash)
@@ -7386,16 +7386,16 @@
"cMb" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/lino,/area/hallway/secondary/entry/docking_lounge)
"cMc" = (/obj/machinery/lapvend,/turf/simulated/floor/lino,/area/hallway/secondary/entry/docking_lounge)
"cMd" = (/obj/structure/table/standard,/obj/item/weapon/coin/silver{pixel_x = -3; pixel_y = 3},/obj/item/weapon/coin/silver,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/light,/turf/simulated/floor/tiled,/area/quartermaster/qm)
-"cMe" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/wood,/area/crew_quarters/bar)
+"cMe" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor/tiled/white,/area/rnd/research_foyer)
"cMf" = (/obj/structure/reagent_dispensers/beerkeg,/obj/machinery/camera/network/civilian{c_tag = "CIV - Bar Storage"; dir = 2},/turf/simulated/floor/wood,/area/crew_quarters/bar)
"cMg" = (/obj/machinery/button/remote/blast_door{id = "bar"; name = "Bar Shutters"; pixel_x = -26; pixel_y = 0},/obj/machinery/light_switch{pixel_x = -36; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/lino,/area/crew_quarters/bar)
"cMh" = (/obj/item/weapon/stool/padded,/obj/effect/landmark/start{name = "Bartender"},/turf/simulated/floor/lino,/area/crew_quarters/bar)
"cMi" = (/obj/structure/bed/chair/comfy/beige{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_1)
"cMj" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/hallway/primary/port)
-"cMk" = (/obj/structure/bed/chair/comfy/beige{dir = 8},/obj/machinery/camera/network/civilian{c_tag = "CIV - Visitor Room 1"; dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_1)
+"cMk" = (/obj/structure/bed/chair/comfy/beige{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_2)
"cMl" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 2},/obj/machinery/light,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_1)
"cMm" = (/obj/structure/table/standard,/obj/machinery/microwave,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_1)
-"cMn" = (/obj/structure/table/standard,/obj/structure/bedsheetbin,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/sleep/engi_wash)
+"cMn" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/engineering{name = "Pump Station"; req_one_access = list(11,24)},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/maintenance/engineering/pumpstation)
"cMo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/meter,/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor,/area/maintenance/apmaint)
"cMp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_1)
"cMq" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/structure/mirror{pixel_x = -28},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_2)
@@ -7415,7 +7415,7 @@
"cME" = (/obj/effect/floor_decal/industrial/warning/corner,/obj/structure/cable/green,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/machinery/light_switch{pixel_x = 12; pixel_y = -24},/turf/simulated/floor/tiled,/area/ai_monitored/storage/eva)
"cMF" = (/obj/structure/table/standard,/obj/machinery/microwave,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_8)
"cMG" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 2},/obj/machinery/light,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_8)
-"cMH" = (/obj/structure/bed/chair/comfy/beige{dir = 4},/obj/machinery/camera/network/civilian{c_tag = "CIV - Visitor Room 8"; dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_8)
+"cMH" = (/obj/structure/bed/chair/comfy/beige{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_7)
"cMI" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled,/area/hallway/primary/port)
"cMJ" = (/obj/structure/bed/chair/comfy/beige{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_8)
"cMK" = (/obj/structure/grille,/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/wall/r_wall,/area/engineering/atmos)
@@ -7519,7 +7519,7 @@
"cOE" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/maintenance/evahallway)
"cOF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor,/area/maintenance/evahallway)
"cOG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/maintenance/evahallway)
-"cOH" = (/obj/structure/closet,/obj/item/clothing/glasses/welding,/obj/item/weapon/weldingtool,/obj/effect/decal/cleanable/dirt,/obj/item/clothing/shoes/workboots,/turf/simulated/floor/plating,/area/maintenance/apmaint)
+"cOH" = (/obj/structure/closet,/obj/item/weapon/towel/random,/obj/item/weapon/towel/random,/obj/item/weapon/towel/random,/obj/item/weapon/towel/random,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/pool)
"cOI" = (/obj/structure/table/reinforced,/obj/item/stack/material/plasteel{amount = 10},/obj/item/stack/material/steel{amount = 50},/obj/item/stack/material/steel{amount = 50},/obj/item/stack/material/steel{amount = 50},/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/ai_monitored/storage/eva)
"cOJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/tiled,/area/engineering/atmos)
"cOK" = (/obj/machinery/newscaster{pixel_x = -30},/turf/simulated/floor/lino,/area/hallway/secondary/entry/docking_lounge)
@@ -7556,7 +7556,7 @@
"cPp" = (/obj/effect/floor_decal/corner/white{dir = 4},/obj/effect/floor_decal/corner/blue{dir = 1},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
"cPq" = (/obj/effect/floor_decal/corner/white{dir = 4},/obj/effect/floor_decal/corner/blue{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
"cPr" = (/obj/effect/floor_decal/corner/white{dir = 4},/obj/effect/floor_decal/corner/blue{dir = 1},/obj/machinery/camera/network/civilian{c_tag = "CIV - Visitor's Lodging"; dir = 2},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
-"cPs" = (/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/bed/chair/office/dark,/obj/effect/floor_decal/corner/white{dir = 4},/obj/effect/floor_decal/corner/blue{dir = 1},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
+"cPs" = (/obj/structure/closet,/obj/item/clothing/glasses/welding,/obj/item/weapon/weldingtool,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/research,/obj/random/maintenance/research,/turf/simulated/floor/plating,/area/maintenance/research_shuttle)
"cPt" = (/obj/effect/floor_decal/corner/white{dir = 4},/obj/effect/floor_decal/corner/blue{dir = 1},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
"cPu" = (/obj/effect/floor_decal/corner/white{dir = 4},/obj/effect/floor_decal/corner/blue{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
"cPv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_5)
@@ -7615,7 +7615,7 @@
"cQw" = (/obj/structure/bed/chair,/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/docking_lounge)
"cQx" = (/obj/structure/bed/chair,/obj/machinery/camera/network/civilian{c_tag = "DOCK - Lounge Starboard"; dir = 4},/turf/simulated/floor/carpet,/area/hallway/secondary/entry/docking_lounge)
"cQy" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/lino,/area/hallway/secondary/entry/docking_lounge)
-"cQz" = (/turf/simulated/floor,/area/maintenance/bar)
+"cQz" = (/obj/structure/closet,/obj/item/weapon/storage/backpack,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random/firstaid,/turf/simulated/floor/plating,/area/maintenance/medbay_fore)
"cQA" = (/obj/machinery/vending/coffee,/turf/simulated/floor/wood,/area/crew_quarters/bar)
"cQB" = (/obj/structure/table/woodentable,/obj/machinery/reagentgrinder,/obj/item/weapon/reagent_containers/food/drinks/shaker,/obj/item/weapon/packageWrap,/obj/machinery/light,/turf/simulated/floor/wood,/area/crew_quarters/bar)
"cQC" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/box/beanbags,/obj/item/weapon/gun/projectile/shotgun/doublebarrel,/obj/item/weapon/paper{info = "This permit signifies that the Bartender is permitted to posess this firearm in the bar, and ONLY the bar. Failure to adhere to this permit will result in confiscation of the weapon and possibly arrest."; name = "Shotgun permit"},/turf/simulated/floor/wood,/area/crew_quarters/bar)
@@ -7651,16 +7651,16 @@
"cRg" = (/obj/machinery/door/firedoor/border_only,/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/blast/regular{density = 0; dir = 1; icon_state = "pdoor0"; id = "atmoslockdown"; name = "Atmospherics Lockdown"; opacity = 0},/turf/simulated/floor,/area/engineering/atmos)
"cRh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/portable_atmospherics/powered/pump/filled,/turf/simulated/floor/tiled,/area/engineering/atmos)
"cRi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/portable_atmospherics/powered/pump/filled,/turf/simulated/floor/tiled,/area/engineering/atmos)
-"cRj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/valve/digital{name = "Gas Mix Inlet Valve"},/obj/effect/floor_decal/corner/lime/full{dir = 8},/turf/simulated/floor/tiled,/area/engineering/atmos)
+"cRj" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/red,/turf/simulated/floor/tiled,/area/engineering/atmos)
"cRk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "waste_in"; name = "Gas Mix Tank Control"; output_tag = "waste_out"; sensors = list("waste_sensor" = "Tank")},/obj/effect/floor_decal/corner/lime{dir = 5},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/engineering/atmos)
"cRl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/binary/pump{dir = 2; name = "Mix Tank to Connector"},/obj/effect/floor_decal/corner/lime/full{dir = 1},/obj/machinery/camera/network/engineering{c_tag = "ENG - Atmospherics Fore Port"; dir = 2},/turf/simulated/floor/tiled,/area/engineering/atmos)
-"cRm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/valve/digital{name = "Gas Mix Outlet Valve"},/turf/simulated/floor/tiled,/area/engineering/atmos)
+"cRm" = (/obj/machinery/meter,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/visible/red{dir = 4; initialize_directions = 11},/turf/simulated/floor/tiled,/area/engineering/atmos)
"cRn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/tiled,/area/engineering/atmos)
"cRo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/tiled,/area/engineering/atmos)
"cRp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/engineering/atmos)
"cRq" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/engineering/atmos)
"cRr" = (/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 6},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/engineering/atmos)
-"cRs" = (/obj/structure/closet/crate,/obj/item/weapon/deck/tarot,/obj/item/weapon/coin/gold,/obj/item/weapon/storage/fancy/cigarettes/dromedaryco,/obj/item/weapon/flame/lighter/zippo,/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor,/area/maintenance/atmos_control)
+"cRs" = (/obj/structure/table/rack{dir = 1},/obj/item/weapon/storage/toolbox/emergency,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/turf/simulated/floor/plating,/area/maintenance/medbay_fore)
"cRt" = (/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 10},/obj/structure/disposalpipe/sortjunction/flipped{dir = 1; sortType = "Atmospherics"; name = "Atmospherics"},/turf/simulated/floor/tiled,/area/engineering/atmos)
"cRu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/engineering/break_room)
"cRv" = (/obj/machinery/computer/atmos_alert,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled,/area/engineering/atmos/monitoring)
@@ -7697,7 +7697,7 @@
"cSa" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/plating,/area/engineering/drone_fabrication)
"cSb" = (/obj/machinery/portable_atmospherics/canister/air/airlock,/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/atmospherics/portables_connector{dir = 4},/turf/simulated/floor/plating,/area/maintenance/bar)
"cSc" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/maintenance/bar)
-"cSd" = (/obj/structure/cable/green,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/machinery/newscaster{pixel_x = -27; pixel_y = 1},/obj/effect/floor_decal/corner/white{dir = 8},/obj/effect/floor_decal/corner/blue/diagonal,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_dinning)
+"cSd" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/structure/table/steel_reinforced,/obj/random/tech_supply,/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/random/maintenance/engineering,/turf/simulated/floor/tiled,/area/maintenance/engineering/pumpstation)
"cSe" = (/obj/effect/floor_decal/corner/white{dir = 8},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_dinning)
"cSf" = (/turf/simulated/floor/tiled,/area/crew_quarters/visitor_dinning)
"cSg" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_dinning)
@@ -7723,9 +7723,9 @@
"cSA" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/regular{density = 0; dir = 1; icon_state = "pdoor0"; id = "atmoslockdown"; name = "Atmospherics Lockdown"; opacity = 0},/turf/simulated/floor,/area/engineering/atmos)
"cSB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/engineering/atmos)
"cSC" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled,/area/engineering/atmos)
-"cSD" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Mixing to Mix Tank"},/turf/simulated/floor/tiled,/area/engineering/atmos)
+"cSD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible/red,/turf/simulated/floor/tiled,/area/engineering/atmos)
"cSE" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/engineering/atmos)
-"cSF" = (/obj/machinery/atmospherics/binary/pump{dir = 2; name = "Mix Tank to Port"},/turf/simulated/floor/tiled,/area/engineering/atmos)
+"cSF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/floor/tiled,/area/engineering/atmos)
"cSG" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled,/area/engineering/atmos)
"cSH" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled,/area/engineering/atmos)
"cSI" = (/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/floor/tiled,/area/engineering/atmos)
@@ -7786,7 +7786,7 @@
"cTL" = (/obj/effect/floor_decal/industrial/warning,/obj/machinery/computer/drone_control,/turf/simulated/floor,/area/engineering/drone_fabrication)
"cTM" = (/obj/structure/closet/wardrobe/white,/obj/effect/floor_decal/corner/blue,/obj/effect/floor_decal/corner/white{dir = 8},/obj/machinery/light,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_laundry)
"cTN" = (/obj/structure/closet/wardrobe/grey,/obj/effect/floor_decal/corner/blue,/obj/effect/floor_decal/corner/white{dir = 8},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_laundry)
-"cTO" = (/obj/structure/closet/wardrobe/black,/obj/effect/floor_decal/corner/white/diagonal{tag = "icon-corner_white_diagonal (EAST)"; icon_state = "corner_white_diagonal"; dir = 4},/obj/effect/floor_decal/corner/blue,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_laundry)
+"cTO" = (/obj/random/maintenance/research,/obj/random/maintenance/research,/obj/random/junk,/turf/simulated/floor,/area/maintenance/research_shuttle)
"cTP" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6},/turf/simulated/floor/tiled,/area/engineering/atmos)
"cTQ" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/turf/simulated/floor/tiled,/area/engineering/atmos)
"cTR" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/green,/turf/simulated/floor/tiled,/area/engineering/atmos)
@@ -7795,7 +7795,7 @@
"cTU" = (/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/tiled,/area/engineering/atmos)
"cTV" = (/obj/machinery/atmospherics/pipe/manifold/visible/green{dir = 1},/turf/simulated/floor/tiled,/area/engineering/atmos)
"cTW" = (/obj/machinery/atmospherics/pipe/simple/visible/green{dir = 10; icon_state = "intact"; tag = "icon-intact (SOUTHEAST)"},/turf/simulated/floor/tiled,/area/engineering/atmos)
-"cTX" = (/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/tiled,/area/engineering/atmos)
+"cTX" = (/obj/effect/floor_decal/corner/black/full{dir = 4},/obj/machinery/atmospherics/binary/pump{dir = 1; name = "CO2 to Mixing"},/turf/simulated/floor/tiled,/area/engineering/atmos)
"cTY" = (/obj/machinery/atmospherics/pipe/simple/visible/universal,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/engineering/atmos)
"cTZ" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/regular{density = 0; dir = 1; icon_state = "pdoor0"; id = "atmoslockdown"; name = "Atmospherics Lockdown"; opacity = 0},/turf/simulated/floor,/area/engineering/atmos)
"cUa" = (/obj/machinery/door/airlock/glass_atmos{name = "Atmospherics Monitoring Room"; req_access = list(24)},/obj/machinery/door/firedoor/border_only,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/engineering/atmos/monitoring)
@@ -7840,9 +7840,7 @@
"cUN" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/tiled,/area/engineering/atmos)
"cUO" = (/obj/machinery/atmospherics/binary/pump,/turf/simulated/floor/tiled,/area/engineering/atmos)
"cUP" = (/obj/machinery/atmospherics/binary/pump{dir = 2; name = "Transit to Waste"},/turf/simulated/floor/tiled,/area/engineering/atmos)
-"cUQ" = (/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6},/turf/simulated/floor/tiled,/area/engineering/atmos)
-"cUR" = (/obj/machinery/atmospherics/binary/pump{dir = 8},/turf/simulated/floor/tiled,/area/engineering/atmos)
-"cUS" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor/tiled,/area/engineering/atmos)
+"cUQ" = (/obj/effect/floor_decal/corner/white/diagonal{tag = "icon-corner_white_diagonal (EAST)"; icon_state = "corner_white_diagonal"; dir = 4},/obj/effect/floor_decal/corner/red,/obj/machinery/atmospherics/binary/pump{dir = 1; name = "N2O to Transit"},/turf/simulated/floor/tiled,/area/engineering/atmos)
"cUT" = (/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/plating,/area/engineering/drone_fabrication)
"cUU" = (/obj/machinery/atmospherics/binary/pump/on{dir = 1; name = "Air to Supply"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/tiled,/area/engineering/atmos)
"cUV" = (/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/engineering/atmos)
@@ -8080,7 +8078,6 @@
"cZt" = (/turf/simulated/wall,/area/engineering/atmos)
"cZu" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/tiled,/area/engineering/atmos)
"cZv" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/wood,/area/bridge/meeting_room)
-"cZw" = (/obj/machinery/atmospherics/pipe/simple/visible/red,/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/tiled,/area/engineering/atmos)
"cZx" = (/obj/machinery/atmospherics/binary/pump/on{dir = 8; name = "Ports to Waste"},/turf/simulated/floor/tiled,/area/engineering/atmos)
"cZy" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/tiled,/area/engineering/atmos)
"cZz" = (/obj/machinery/atmospherics/pipe/simple/hidden/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass_atmos{name = "Atmospherics"; req_access = list(24)},/turf/simulated/floor/tiled,/area/engineering/atmos)
@@ -8121,7 +8118,7 @@
"dai" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/port)
"daj" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/port)
"dak" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/port)
-"dal" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/port)
+"dal" = (/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor/tiled/neutral,/area/crew_quarters/cafeteria)
"dam" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/starboard)
"dan" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/starboard)
"dao" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/starboard)
@@ -8169,7 +8166,7 @@
"dbe" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/engineering/engine_eva)
"dbf" = (/obj/machinery/door/airlock/glass_engineeringatmos{name = "Engineering EVA Storage"; req_one_access = list(11,24)},/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/engineering/engine_eva)
"dbg" = (/obj/machinery/door/airlock/glass_engineeringatmos{name = "Engineering EVA Storage"; req_one_access = list(11,24)},/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/engineering/engine_eva)
-"dbh" = (/obj/structure/table/rack{dir = 1},/obj/item/clothing/suit/fire/firefighter,/obj/item/weapon/tank/oxygen,/obj/item/clothing/mask/gas,/obj/item/weapon/extinguisher,/obj/item/clothing/head/hardhat/red,/obj/item/clothing/glasses/meson,/turf/simulated/floor/plating,/area/maintenance/engineering)
+"dbh" = (/obj/structure/closet/crate,/obj/item/weapon/coin/silver,/obj/effect/decal/cleanable/cobweb2{tag = "icon-cobweb1"; icon_state = "cobweb1"},/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/turf/simulated/floor/plating,/area/maintenance/medbay_fore)
"dbi" = (/turf/simulated/floor/plating,/area/maintenance/engineering)
"dbj" = (/obj/item/device/t_scanner,/obj/structure/table/steel,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/maintenance/engineering)
"dbk" = (/obj/machinery/light/small{dir = 8},/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/simulated/floor,/area/hallway/secondary/escape/dock_escape_pod_hallway_port)
@@ -8253,7 +8250,7 @@
"dcK" = (/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/tank/jetpack/carbondioxide,/obj/machinery/door/window/southright{name = "Jetpack Storage"; req_one_access = list(11,24)},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/engineering/engine_eva)
"dcL" = (/obj/machinery/door/airlock/command{name = "Chief Engineer"; req_access = list(56)},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled,/area/crew_quarters/heads/chief)
"dcM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access = null; req_one_access = list(12,47)},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/maintenance/engineering)
-"dcN" = (/obj/structure/closet,/obj/item/weapon/lipstick/purple,/turf/simulated/floor/plating,/area/maintenance/engineering)
+"dcN" = (/obj/structure/closet/crate,/obj/item/clothing/shoes/combat,/obj/item/weapon/tank/air,/obj/item/weapon/tank/air,/obj/item/weapon/tank/air,/obj/item/clothing/mask/gas,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/cargo,/obj/random/maintenance/medical,/turf/simulated/floor/plating,/area/maintenance/medbay_fore)
"dcO" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/engineering)
"dcP" = (/obj/structure/shuttle/engine/propulsion/burst{dir = 1},/turf/simulated/shuttle/wall{icon_state = "swall_s"; dir = 4},/area/shuttle/escape_pod6/station)
"dcQ" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_6_hatch"; locked = 1; name = "Escape Pod Hatch 6"; req_access = list(13)},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod6/station)
@@ -8405,11 +8402,11 @@
"dfG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/tiled,/area/engineering)
"dfH" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/engineering)
"dfI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/entry/D3)
-"dfJ" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/void/atmos,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/atmos,/obj/machinery/door/window/northright{name = "Atmospherics Hardsuits"; req_access = list(24)},/obj/structure/window/reinforced{dir = 4},/obj/machinery/light,/turf/simulated/floor/tiled,/area/engineering/engine_eva)
+"dfJ" = (/obj/structure/table/standard,/obj/item/device/radio{anchored = 1; broadcasting = 0; canhear_range = 7; frequency = 1487; icon = 'icons/obj/items.dmi'; icon_state = "red_phone"; listening = 1; name = "Surgery Emergency Phone"},/obj/machinery/light{dir = 1},/obj/random/medical,/turf/simulated/floor/tiled/white,/area/medical/surgery_hallway)
"dfK" = (/obj/structure/dispenser{phorontanks = 0},/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/obj/machinery/camera/network/engineering{c_tag = "ENG - EVA"; dir = 1},/turf/simulated/floor/tiled,/area/engineering/engine_eva)
"dfL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/entry/D4)
"dfM" = (/obj/item/clothing/shoes/magboots,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/engineering,/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/item/clothing/suit/space/void/engineering,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/window/northright{name = "Engineering Hardsuits"; req_access = list(11)},/turf/simulated/floor/tiled,/area/engineering/engine_eva)
-"dfN" = (/obj/item/clothing/shoes/magboots,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/engineering,/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/item/clothing/suit/space/void/engineering,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/window/northright{name = "Engineering Hardsuits"; req_access = list(11)},/obj/machinery/light,/turf/simulated/floor/tiled,/area/engineering/engine_eva)
+"dfN" = (/obj/random/powercell,/obj/random/powercell,/obj/random/powercell,/obj/random/powercell,/obj/random/toolbox,/obj/effect/decal/cleanable/molten_item,/obj/structure/closet/crate,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/turf/simulated/floor,/area/maintenance/medbay_fore)
"dfO" = (/obj/structure/bed/chair,/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{frequency = 1380; id_tag = "escape_pod_6"; pixel_x = 25; pixel_y = 0; tag_door = "escape_pod_6_hatch"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod6/station)
"dfP" = (/obj/structure/bed/chair,/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{frequency = 1380; id_tag = "escape_pod_5"; pixel_x = 25; pixel_y = 0; tag_door = "escape_pod_5_hatch"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod5/station)
"dfQ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; external_pressure_bound_default = 0; frequency = 1441; icon_state = "map_vent_in"; id_tag = "tox_out"; initialize_directions = 1; internal_pressure_bound = 4000; internal_pressure_bound_default = 4000; use_power = 1; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0},/turf/simulated/floor/reinforced/phoron,/area/engineering/atmos)
@@ -8473,7 +8470,6 @@
"dgW" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/floor_decal/corner/white{dir = 5},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D4)
"dgX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D4)
"dgY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/binary/pump{dir = 4; name = "N2 to Connector"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/engineering/atmos)
-"dgZ" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "CO2 to Mixing"},/turf/simulated/floor/tiled,/area/engineering/atmos)
"dha" = (/obj/machinery/atmospherics/portables_connector,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/engineering/atmos)
"dhb" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/industrial/warning/cee{icon_state = "warningcee"; dir = 8},/turf/simulated/floor/plating,/area/maintenance/portsolar)
"dhc" = (/obj/machinery/portable_atmospherics/canister/air,/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor/tiled,/area/engineering/atmos)
@@ -8518,7 +8514,6 @@
"dhP" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/portable_atmospherics/powered/scrubber,/turf/simulated/floor/tiled,/area/engineering/atmos)
"dhQ" = (/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/obj/effect/floor_decal/corner/black/full,/obj/machinery/camera/network/engineering{c_tag = "ENG - Atmospherics Aft Port"; dir = 1},/turf/simulated/floor/tiled,/area/engineering/atmos)
"dhR" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "co2_in"; name = "Carbon Dioxide Supply Control"; output_tag = "co2_out"; sensors = list("co2_sensor" = "Tank")},/obj/effect/floor_decal/corner/black{dir = 10},/obj/machinery/light,/turf/simulated/floor/tiled,/area/engineering/atmos)
-"dhS" = (/obj/machinery/atmospherics/valve/digital{name = "CO2 Outlet Valve"},/obj/effect/floor_decal/corner/black/full{dir = 4},/turf/simulated/floor/tiled,/area/engineering/atmos)
"dhT" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "CO2 to Connector"},/turf/simulated/floor/tiled,/area/engineering/atmos)
"dhU" = (/obj/machinery/atmospherics/pipe/simple/visible/red,/obj/effect/floor_decal/corner/orange/full,/turf/simulated/floor/tiled,/area/engineering/atmos)
"dhV" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "tox_in"; name = "Phoron Supply Control"; output_tag = "tox_out"; sensors = list("tox_sensor" = "Tank")},/obj/effect/floor_decal/corner/orange{dir = 10},/obj/machinery/light,/turf/simulated/floor/tiled,/area/engineering/atmos)
@@ -8526,7 +8521,6 @@
"dhX" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Phoron to Connector"},/turf/simulated/floor/tiled,/area/engineering/atmos)
"dhY" = (/obj/machinery/atmospherics/pipe/simple/visible/red,/obj/effect/floor_decal/corner/white{dir = 8},/obj/effect/floor_decal/corner/red/diagonal,/obj/machinery/camera/network/engineering{c_tag = "ENG - Atmospherics Aft Starboard"; dir = 1},/turf/simulated/floor/tiled,/area/engineering/atmos)
"dhZ" = (/obj/machinery/atmospherics/pipe/simple/visible/red,/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "n2o_in"; name = "Nitrous Oxide Supply Control"; output_tag = "n2o_out"; sensors = list("n2o_sensor" = "Tank")},/obj/effect/floor_decal/corner/white{dir = 8},/obj/effect/floor_decal/corner/red,/obj/machinery/light,/turf/simulated/floor/tiled,/area/engineering/atmos)
-"dia" = (/obj/machinery/atmospherics/valve/digital{name = "N2O Outlet Valve"},/obj/effect/floor_decal/corner/white/diagonal{tag = "icon-corner_white_diagonal (EAST)"; icon_state = "corner_white_diagonal"; dir = 4},/obj/effect/floor_decal/corner/red,/turf/simulated/floor/tiled,/area/engineering/atmos)
"dib" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "N2O to Connector"},/turf/simulated/floor/tiled,/area/engineering/atmos)
"dic" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor/tiled,/area/engineering/atmos)
"did" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning/cee,/turf/simulated/floor/plating,/area/maintenance/starboardsolar)
@@ -8539,7 +8533,7 @@
"dik" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor,/area/maintenance/substation/engineering)
"dil" = (/obj/machinery/power/terminal,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor,/area/maintenance/substation/engineering)
"dim" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/floor_decal/industrial/warning,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor,/area/maintenance/substation/engineering)
-"din" = (/obj/structure/table/steel,/obj/item/weapon/paper{info = "The big blue box recently installed in here is a 'grid checker' which will shut off the power if a dangerous power spike from the engine erupts into the powernet. Shutting everything down protects everything from electrical damage, however the outages can be disruptive to colony operations, so it is designed to restore power after a somewhat significant delay, up to ten minutes or so. The grid checker can be manually hacked in order to end the outage sooner. To do that, you must cut three specific wires which do not cause a red light to shine, then pulse a fourth wire. Electrical protection is highly recommended when doing maintenance on the grid checker."; name = "grid checker info"},/turf/simulated/floor,/area/maintenance/engineering)
+"din" = (/obj/structure/closet/secure_closet/medical1,/obj/effect/floor_decal/corner/pink/full{dir = 1},/obj/random/medical,/turf/simulated/floor/tiled/white,/area/medical/exam_room)
"dio" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/floor,/area/maintenance/substation/engineering)
"dip" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall,/area/maintenance/engineering)
"diq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor,/area/maintenance/engineering)
@@ -8699,7 +8693,7 @@
"dlo" = (/obj/machinery/drone_fabricator,/turf/simulated/floor/plating,/area/engineering/drone_fabrication)
"dlp" = (/turf/simulated/floor/plating,/area/engineering/drone_fabrication)
"dlq" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/plating,/area/engineering/drone_fabrication)
-"dlr" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor,/area/maintenance/engineering)
+"dlr" = (/obj/structure/table/standard,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/item/weapon/soap,/obj/random/soap,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/medical_restroom)
"dls" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/bed/chair/office/dark{dir = 4},/obj/effect/landmark/start{name = "Atmospheric Technician"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/light_switch{pixel_x = -12; pixel_y = 24},/turf/simulated/floor/tiled,/area/engineering/engineering_monitoring)
"dlt" = (/obj/machinery/door/airlock/engineering{name = "Engineering Drone Fabrication"; req_one_access = list(11,24)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/engineering/drone_fabrication)
"dlu" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/engineering)
@@ -8724,7 +8718,7 @@
"dlN" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_north_starboard_outer"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_north_mech"; pixel_y = 19},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"dlO" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "escape_dock_north_starboard_pump"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"dlP" = (/obj/effect/floor_decal/industrial/loading{tag = "icon-loadingarea (WEST)"; icon_state = "loadingarea"; dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1; icon_state = "map"; tag = "icon-manifold-f (NORTH)"},/obj/machinery/embedded_controller/radio/airlock/docking_port_multi{frequency = 1380; id_tag = "escape_dock_snorth_airlock"; master_tag = "escape_dock"; pixel_y = 30; req_one_access = list(13); tag_airlock_mech_sensor = "escape_dock_north_starboard_mech"; tag_airpump = "escape_dock_north_starboard_pump"; tag_chamber_sensor = "escape_dock_north_starboard_sensor"; tag_exterior_door = "escape_dock_north_starboard_outer"; tag_interior_door = "escape_dock_north_starboard_inner"; tag_shuttle_mech_sensor = "shuttle_dock_north_starboard_mech"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
-"dlQ" = (/obj/item/weapon/storage/box/matches,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/deck/cards,/obj/structure/table/steel,/turf/simulated/floor/plating,/area/engineering/drone_fabrication)
+"dlQ" = (/obj/structure/table/standard,/obj/item/weapon/cane,/obj/item/weapon/cane{pixel_x = -3; pixel_y = 2},/obj/item/weapon/storage/box/rxglasses,/obj/effect/floor_decal/corner/pink{dir = 9},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/random/medical,/turf/simulated/floor/tiled/white,/area/medical/exam_room)
"dlR" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "escape_dock_north_starboard_airlock"; name = "interior access button"; pixel_x = -26; pixel_y = 26; req_one_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"dlS" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"dlT" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
@@ -8748,10 +8742,12 @@
"dml" = (/obj/machinery/vending/snack,/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/D4)
"dmm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/airless,/area/solar/port)
"dmn" = (/obj/machinery/light/small,/obj/machinery/camera/network/engineering{c_tag = "Atmospherics Tank - Carbon Dioxide"; dir = 1},/turf/simulated/floor/reinforced/carbon_dioxide,/area/engineering/atmos)
+"dmo" = (/obj/structure/bed/chair/comfy/beige{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_8)
"dmp" = (/obj/machinery/light/small,/obj/machinery/camera/network/engineering{c_tag = "Atmospherics Tank - Nitrous Oxide"; dir = 1},/turf/simulated/floor/reinforced/n20,/area/engineering/atmos)
"dmq" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor,/area/engineering/drone_fabrication)
"dmr" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/plating,/area/engineering/drone_fabrication)
"dms" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/engineering/drone_fabrication)
+"dmt" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/locker/locker_toilet)
"dmu" = (/obj/machinery/door/airlock/engineering{name = "Engineering Drone Fabrication"; req_one_access = list(11,24)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/engineering/drone_fabrication)
"dmv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/engineering)
"dmw" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/turf/simulated/floor/tiled,/area/engineering)
@@ -8763,14 +8759,17 @@
"dmC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/engineering/storage)
"dmD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor,/area/engineering/storage)
"dmE" = (/obj/effect/floor_decal/corner/red{dir = 6},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/bed/chair/office/dark{dir = 4},/obj/machinery/button/remote/airlock{id = "security_checkpoint"; name = "Door Bolt Control"; pixel_x = 6; pixel_y = -28; req_access = list(1); specialfunctions = 4},/obj/machinery/button/remote/airlock{id = "security_bar"; name = "Bar Door Bolt Control"; pixel_x = -6; pixel_y = -28; req_access = list(1); specialfunctions = 4},/turf/simulated/floor/tiled,/area/security/checkpoint2)
-"dmF" = (/obj/structure/table/steel,/obj/item/clothing/head/orangebandana,/turf/simulated/floor,/area/maintenance/engineering)
+"dmF" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/drinks/britcup,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/item/weapon/reagent_containers/food/drinks/britcup,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
"dmG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry/D4)
"dmH" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1)
+"dmI" = (/obj/structure/closet/emcloset,/obj/random/maintenance/research,/turf/simulated/floor,/area/maintenance/research_shuttle)
"dmJ" = (/obj/machinery/light/small,/obj/effect/floor_decal/industrial/loading{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHEAST)"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1)
"dmK" = (/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "escape_dock_north_sensor"; pixel_x = 0; pixel_y = -25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "escape_dock_north_pump"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1)
+"dmL" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/drinks/britcup,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/random/medical,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
"dmM" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_north_starboard_outer"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_north_mech"; pixel_y = -19},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "escape_dock_north_starboard_airlock"; name = "exterior access button"; pixel_x = -4; pixel_y = -26; req_one_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"dmN" = (/obj/effect/floor_decal/industrial/loading{dir = 4},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "escape_dock_north_starboard_pump"},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "escape_dock_north_starboard_sensor"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"dmO" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/machinery/light/small,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
+"dmP" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/disposalpipe/segment,/obj/item/device/defib_kit,/obj/item/device/defib_kit,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
"dmQ" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"dmR" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"dmS" = (/obj/machinery/door/airlock/external{name = "Arrival Airlock"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
@@ -8815,6 +8814,11 @@
"dnF" = (/obj/machinery/vending/cola,/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/D4)
"dnG" = (/turf/simulated/wall/r_wall,/area/engineering/aft_hallway)
"dnH" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/engineering/drone_fabrication)
+"dnI" = (/obj/structure/closet/crate/medical,/obj/item/weapon/reagent_containers/syringe,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random/firstaid,/turf/simulated/floor,/area/maintenance/medbay_fore)
+"dnJ" = (/obj/structure/table/rack,/obj/item/clothing/glasses/sunglasses,/obj/item/clothing/suit/storage/hazardvest,/obj/item/device/radio,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/turf/simulated/floor/plating,/area/maintenance/medbay_fore)
+"dnK" = (/obj/machinery/button/remote/airlock{desc = "A remote control-switch for Surgery."; id = "Surgery"; name = "Surgery"; pixel_x = 24; pixel_y = -8},/obj/structure/closet/secure_closet/medical3,/obj/random/medical,/turf/simulated/floor/tiled/white,/area/medical/surgery_hallway)
+"dnL" = (/obj/structure/closet/crate,/obj/random/maintenance/research,/turf/simulated/shuttle/floor,/area/shuttle/research/station)
+"dnM" = (/obj/random/junk,/turf/simulated/floor,/area/maintenance/research)
"dnN" = (/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access = list(10)},/obj/machinery/door/firedoor/glass,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
"dnO" = (/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access = list(10)},/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
"dnP" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access = list(10)},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
@@ -8829,6 +8833,7 @@
"dnY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"dnZ" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"doa" = (/obj/structure/window/shuttle{icon_state = "window2"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/arrival/station)
+"dob" = (/obj/structure/table/rack,/obj/item/weapon/extinguisher,/obj/item/clothing/head/hardhat/red,/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/item/clothing/glasses/meson,/obj/random/maintenance/research,/obj/random/maintenance/research,/turf/simulated/floor,/area/maintenance/research)
"doc" = (/obj/structure/closet/emcloset,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3)
"dod" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3)
"doe" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3)
@@ -8841,6 +8846,8 @@
"dol" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/engineering/aft_hallway)
"dom" = (/obj/machinery/atmospherics/portables_connector,/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
"don" = (/obj/machinery/computer/shuttle_control/engineering{name = "engineering elevator control console"},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
+"doo" = (/obj/structure/closet/crate,/obj/random/maintenance/research,/obj/random/maintenance/research,/obj/random/maintenance/research,/obj/random/maintenance/research,/turf/simulated/floor,/area/maintenance/research)
+"dop" = (/obj/structure/table/glass,/obj/item/weapon/reagent_containers/spray/cleaner{pixel_x = 2; pixel_y = 2},/obj/item/weapon/reagent_containers/spray/cleaner{pixel_x = -2; pixel_y = -2},/obj/item/device/defib_kit,/obj/item/device/defib_kit,/turf/simulated/floor/tiled/white,/area/medical/sleeper)
"doq" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
"dor" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
"dos" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
@@ -8849,9 +8856,11 @@
"dov" = (/obj/structure/table/steel,/obj/item/weapon/book/manual/engineering_singularity_safety,/turf/simulated/floor,/area/maintenance/engineering)
"dow" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"dox" = (/obj/structure/window/shuttle{icon_state = "window3"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/arrival/station)
+"doy" = (/obj/structure/closet/crate,/obj/item/weapon/reagent_containers/food/drinks/bottle/wine,/obj/random/drinkbottle,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/central)
"doz" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3)
"doA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D4)
"doB" = (/turf/space,/area/syndicate_station/southeast)
+"doC" = (/obj/structure/closet,/obj/item/weapon/storage/backpack,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/random/maintenance/clean,/obj/random/maintenance/cargo,/turf/simulated/floor/plating,/area/maintenance/central)
"doD" = (/obj/structure/lattice,/obj/item/stack/cable_coil/yellow{pixel_x = 2; pixel_y = 2},/obj/item/stack/cable_coil/yellow,/turf/space,/area/space)
"doE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/floor/plating,/area/hallway/secondary/entry/D3)
"doF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/airless,/area/maintenance/portsolar)
@@ -8867,6 +8876,7 @@
"doP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
"doQ" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
"doR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
+"doS" = (/obj/structure/table/steel,/obj/item/weapon/storage/box/bodybags,/obj/effect/floor_decal/corner/paleblue/full{dir = 8},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/item/weapon/storage/box/bodybags,/turf/simulated/floor/tiled,/area/medical/morgue)
"doT" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
"doU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/blast/regular{density = 0; dir = 1; icon_state = "pdoor0"; id = "englockdown"; name = "Engineering Lockdown"; opacity = 0},/turf/simulated/floor/tiled/dark,/area/engineering/aft_hallway)
"doV" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access = list(10)},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
@@ -8910,7 +8920,9 @@
"dpH" = (/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris,/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris,/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris,/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris,/turf/simulated/floor,/area/maintenance/security_starboard)
"dpI" = (/obj/item/tape/atmos,/obj/machinery/door/airlock/maintenance{req_access = list(12)},/turf/simulated/floor,/area/maintenance/security_starboard)
"dpJ" = (/obj/item/seeds/poppyseed,/obj/item/seeds/poppyseed,/obj/item/seeds/poppyseed,/turf/simulated/floor,/area/maintenance/security_starboard)
+"dpK" = (/obj/structure/table/steel,/obj/machinery/light_switch{pixel_x = 26; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/obj/machinery/camera/network/medbay{c_tag = "MED - Virology Airlock"; dir = 8},/obj/random/medical,/turf/simulated/floor/tiled/white,/area/medical/virology)
"dpL" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "robotics_solar_outer"; locked = 1; name = "Engineering External Access"; req_access = list(11,13)},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/portsolar)
+"dpM" = (/obj/structure/closet,/obj/item/device/flashlight,/obj/effect/decal/cleanable/cobweb2,/obj/item/weapon/storage/backpack/satchel/vir,/obj/item/weapon/storage/backpack/virology,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/turf/simulated/floor/plating,/area/maintenance/medbay_fore)
"dpN" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "robotics_solar_inner"; locked = 1; name = "Engineering External Access"; req_access = list(11,13)},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/portsolar)
"dpO" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; layer = 3.3; master_tag = "robotics_solar_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access = list(11,13)},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor/plating,/area/maintenance/portsolar)
"dpP" = (/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/door/airlock/glass{name = "Dock"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1)
@@ -8924,6 +8936,11 @@
"dpX" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera/network/engineering{c_tag = "ENG - Hallway Starboard"; dir = 1},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
"dpY" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHEAST)"},/obj/effect/floor_decal/industrial/warning/corner,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
"dpZ" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/obj/effect/floor_decal/industrial/warning,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "engineering_dock_airlock"; name = "interior access button"; pixel_x = 30; pixel_y = -25; req_one_access = list(13,11,24)},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
+"dqa" = (/obj/structure/closet/crate,/obj/item/weapon/tank/emergency_oxygen/engi,/obj/item/weapon/tank/emergency_oxygen/double,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/turf/simulated/floor/plating,/area/maintenance/research)
+"dqb" = (/obj/structure/table/rack,/obj/item/weapon/extinguisher,/obj/item/weapon/storage/belt/utility,/obj/item/clothing/mask/gas,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/obj/random/maintenance/research,/obj/random/maintenance/cargo,/turf/simulated/floor/plating,/area/maintenance/research)
+"dqc" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/tank/oxygen,/obj/item/weapon/tank/oxygen,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/extinguisher,/obj/random/maintenance/research,/obj/random/maintenance/research,/turf/simulated/floor/plating,/area/maintenance/research)
+"dqd" = (/obj/structure/closet/secure_closet/paramedic,/obj/item/clothing/accessory/storage/black_vest,/obj/random/medical,/obj/random/medical,/turf/simulated/floor/tiled/white,/area/medical/medbay_emt_bay)
+"dqe" = (/obj/structure/closet/crate,/obj/item/device/multitool,/obj/item/device/multitool,/obj/item/device/assembly/prox_sensor,/obj/item/device/flashlight,/obj/item/weapon/storage/backpack,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/turf/simulated/floor/plating,/area/maintenance/research)
"dqf" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
"dqg" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/camera/network/engineering{c_tag = "ENG - Hallway Aft Starboard"; dir = 1},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
"dqh" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
@@ -8960,6 +8977,7 @@
"dqM" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "engineering_dock_inner"; locked = 1; name = "Engineering Dock Airlock"; req_access = list(13)},/turf/simulated/floor/plating,/area/engineering/aft_hallway)
"dqN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/airless,/area/maintenance/portsolar)
"dqO" = (/turf/simulated/wall/r_wall,/area/engineering/engine_waste)
+"dqP" = (/obj/effect/floor_decal/corner/pink{dir = 10},/obj/structure/closet/secure_closet/paramedic,/obj/random/medical,/obj/random/medical,/turf/simulated/floor/tiled/white,/area/medical/medbay_emt_bay)
"dqQ" = (/turf/simulated/wall/r_wall,/area/engineering/engine_smes)
"dqR" = (/obj/machinery/door/airlock/maintenance_hatch{name = "SMES Access"; req_access = list(11)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled,/area/engineering/engine_smes)
"dqS" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 0},/turf/simulated/wall/r_wall,/area/engineering/engine_monitoring)
@@ -8970,10 +8988,14 @@
"dqX" = (/obj/machinery/door/airlock/maintenance_hatch{icon_state = "door_closed"; locked = 0; name = "Engine Access"; req_one_access = list(11)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/engineering/engine_airlock)
"dqY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/engineering)
"dqZ" = (/obj/machinery/door/blast/regular{density = 0; dir = 1; icon_state = "pdoor0"; id = "englockdown"; name = "Engineering Lockdown"; opacity = 0},/turf/simulated/floor/tiled/dark,/area/engineering/aft_hallway)
+"dra" = (/obj/structure/closet/crate,/obj/random/maintenance/cargo,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/mining/station)
"drb" = (/obj/machinery/light/small{dir = 1},/obj/effect/floor_decal/industrial/loading{tag = "icon-loadingarea (WEST)"; icon_state = "loadingarea"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1)
"drc" = (/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "escape_dock_south_sensor"; pixel_x = 0; pixel_y = 25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "escape_dock_south_pump"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1)
+"drd" = (/obj/structure/table/rack,/obj/item/clothing/mask/gas,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/turf/simulated/floor/plating,/area/maintenance/research)
+"dre" = (/obj/structure/bedsheetbin,/obj/structure/table/steel,/obj/random/firstaid,/obj/random/firstaid,/turf/simulated/floor/tiled/dark,/area/medical/biostorage)
"drf" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "escape_dock_south_starboard_pump"},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "escape_dock_south_starboard_sensor"; pixel_x = 0; pixel_y = 25},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"drg" = (/obj/effect/floor_decal/industrial/loading{tag = "icon-loadingarea (WEST)"; icon_state = "loadingarea"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
+"drh" = (/obj/item/weapon/gun/launcher/syringe,/obj/item/weapon/storage/box/syringegun,/obj/structure/table/steel,/obj/machinery/light{dir = 8},/obj/random/medical,/turf/simulated/floor/tiled/dark,/area/medical/biostorage)
"dri" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"drj" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3)
"drk" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "dock_three_mid_inner"; locked = 1; name = "Dock Three Internal Access"; req_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3)
@@ -8999,6 +9021,7 @@
"drE" = (/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "engineering_dock_airlock"; pixel_x = 0; pixel_y = 25; req_one_access = list(13,11,24); tag_airpump = "engineering_dock_pump"; tag_chamber_sensor = "engineering_dock_sensor"; tag_exterior_door = "engineering_dock_outer"; tag_interior_door = "engineering_dock_inner"},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
"drF" = (/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor,/area/engineering/aft_hallway)
"drG" = (/obj/effect/floor_decal/industrial/warning,/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for the engine control room blast doors."; id = "EngineEmitterPortWest"; name = "Engine Room Blast Doors"; pixel_x = 0; pixel_y = 25; req_access = null; req_one_access = list(11,24)},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled,/area/engineering/engine_waste)
+"drH" = (/obj/structure/table/rack,/obj/item/clothing/suit/radiation,/obj/item/clothing/head/radiation,/obj/item/weapon/storage/toolbox/emergency,/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; dir = 2; frequency = 1487; icon_state = "intercom"; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -21},/obj/item/weapon/storage/box/lights/mixed,/obj/item/device/defib_kit,/obj/item/device/defib_kit,/turf/simulated/floor/tiled/dark,/area/medical/biostorage)
"drI" = (/obj/effect/floor_decal/industrial/warning,/obj/structure/closet/radiation,/obj/item/clothing/glasses/meson,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/camera/network/engine{c_tag = "ENG - Waste Handling"},/turf/simulated/floor/tiled,/area/engineering/engine_waste)
"drJ" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light_switch{pixel_x = -38; pixel_y = 0},/turf/simulated/floor/tiled,/area/engineering/engine_smes)
"drK" = (/obj/item/stack/cable_coil,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = 3},/obj/item/device/multitool{pixel_x = 5},/obj/item/clothing/gloves/yellow,/obj/structure/table/steel,/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled,/area/engineering/engine_smes)
@@ -9016,10 +9039,14 @@
"drW" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
"drX" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1)
"drY" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "escape_dock_south_airlock"; name = "interior access button"; pixel_x = 26; pixel_y = -26; req_one_access = list(13)},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1)
+"drZ" = (/obj/random/obstruction,/turf/simulated/floor,/area/maintenance/medbay_aft)
"dsa" = (/obj/machinery/embedded_controller/radio/airlock/docking_port_multi{frequency = 1380; id_tag = "escape_dock_south_airlock"; master_tag = "escape_dock"; pixel_y = -30; req_one_access = list(13); tag_airlock_mech_sensor = "escape_dock_south_mech"; tag_airpump = "escape_dock_south_pump"; tag_chamber_sensor = "escape_dock_south_sensor"; tag_exterior_door = "escape_dock_south_outer"; tag_interior_door = "escape_dock_south_inner"; tag_shuttle_mech_sensor = "shuttle_dock_south_mech"},/obj/effect/floor_decal/industrial/loading{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1)
"dsb" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "escape_dock_south_pump"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1)
+"dsc" = (/obj/structure/table/woodentable,/obj/item/weapon/material/ashtray/plastic,/obj/item/weapon/cigbutt/cigarbutt,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/medbay_aft)
+"dsd" = (/obj/structure/closet,/obj/item/clothing/glasses/welding,/obj/item/weapon/weldingtool,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/clean,/obj/random/maintenance/engineering,/turf/simulated/floor/plating,/area/maintenance/medbay_aft)
"dse" = (/obj/effect/floor_decal/industrial/loading{dir = 4},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "escape_dock_south_starboard_pump"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"dsf" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/obj/machinery/embedded_controller/radio/airlock/docking_port_multi{frequency = 1380; id_tag = "escape_dock_ssouth_airlock"; master_tag = "escape_dock"; pixel_y = -30; req_one_access = list(13); tag_airlock_mech_sensor = "escape_dock_south_starboard_mech"; tag_airpump = "escape_dock_south_starboard_pump"; tag_chamber_sensor = "escape_dock_south_starboard_sensor"; tag_exterior_door = "escape_dock_south_starboard_outer"; tag_interior_door = "escape_dock_south_starboard_inner"; tag_shuttle_mech_sensor = "shuttle_dock_south_starboard_mech"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
+"dsg" = (/obj/structure/closet/crate,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/item/weapon/crowbar,/obj/item/weapon/wirecutters,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/turf/simulated/floor,/area/maintenance/medbay_aft)
"dsh" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "escape_dock_south_starboard_airlock"; name = "interior access button"; pixel_x = -26; pixel_y = -26; req_one_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"dsi" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"dsj" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3)
@@ -9056,6 +9083,7 @@
"dsO" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "engineering_dock_pump"},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
"dsP" = (/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "engineering_dock_sensor"; pixel_x = 25; pixel_y = 8},/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/camera/network/engineering{c_tag = "ENG - Shuttle Access"; dir = 8},/obj/machinery/light/small{dir = 4},/turf/simulated/floor,/area/engineering/aft_hallway)
"dsQ" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor,/area/engineering/engine_waste)
+"dsR" = (/obj/structure/table/rack,/obj/item/clothing/glasses/sunglasses,/obj/item/clothing/suit/storage/hazardvest,/obj/item/weapon/storage/box/lights/mixed,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/turf/simulated/floor/plating,/area/maintenance/medbay_aft)
"dsS" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/light_switch{pixel_x = 38; pixel_y = 0},/turf/simulated/floor,/area/engineering/engine_waste)
"dsT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/tiled,/area/engineering/engine_smes)
"dsU" = (/obj/item/stack/cable_coil,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/lights/mixed,/obj/structure/table/steel,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled,/area/engineering/engine_smes)
@@ -9073,6 +9101,7 @@
"dtg" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1)
"dth" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"dti" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/airless,/area/shuttle/arrival/station)
+"dtj" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -4; pixel_y = 0},/obj/item/weapon/wrench,/obj/random/medical/lite,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/large_escape_pod1/station)
"dtk" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/airless,/area/maintenance/portsolar)
"dtl" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3)
"dtm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/entry/D4)
@@ -9274,6 +9303,7 @@
"dxa" = (/obj/structure/lattice,/obj/structure/grille/broken,/obj/effect/landmark{name = "carpspawn"},/turf/space,/area/space)
"dxb" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1)
"dxc" = (/obj/effect/floor_decal/industrial/warning/corner,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1)
+"dxd" = (/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/floor,/area/maintenance/cargo)
"dxe" = (/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1)
"dxf" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/table/standard,/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1)
"dxg" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/table/standard,/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
@@ -9307,6 +9337,7 @@
"dxI" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/engineering/engine_room)
"dxJ" = (/turf/simulated/floor/plating,/area/engineering/engine_room)
"dxK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/engineering/aft_hallway)
+"dxL" = (/obj/effect/decal/cleanable/generic,/obj/structure/table/rack,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/turf/simulated/floor/plating,/area/maintenance/cargo)
"dxM" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "admin_shuttle_dock_inner"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"dxN" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/engineering/engine_airlock)
"dxO" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/engineering/engine_airlock)
@@ -9323,7 +9354,7 @@
"dxZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/maintenance/starboardsolar)
"dya" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating,/area/hallway/secondary/entry/D3)
"dyb" = (/turf/simulated/floor,/area/shuttle/constructionsite/station)
-"dyc" = (/obj/structure/closet/crate,/turf/simulated/floor/plating,/area/shuttle/constructionsite/station)
+"dyc" = (/obj/structure/closet/crate,/obj/item/weapon/tank/emergency_oxygen/engi,/obj/item/weapon/tank/emergency_oxygen/double,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/turf/simulated/floor/plating,/area/maintenance/cargo)
"dyd" = (/obj/machinery/atmospherics/omni/filter{tag_east = 1; tag_north = 4; tag_south = 2; tag_west = 0; use_power = 0},/turf/simulated/floor/plating,/area/engineering/engine_room)
"dye" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan,/turf/simulated/floor,/area/engineering/engine_room)
"dyf" = (/obj/machinery/atmospherics/omni/filter{tag_east = 0; tag_north = 4; tag_south = 2; tag_west = 1; use_power = 0},/turf/simulated/floor/plating,/area/engineering/engine_room)
@@ -9344,6 +9375,7 @@
"dyu" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/space,/area/space)
"dyv" = (/obj/effect/floor_decal/industrial/warning{dir = 9},/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1)
"dyw" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1)
+"dyx" = (/obj/structure/table/rack,/obj/item/weapon/extinguisher,/obj/item/clothing/head/hardhat/red,/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/item/clothing/glasses/meson,/obj/random/maintenance/cargo,/turf/simulated/floor,/area/maintenance/cargo)
"dyy" = (/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "admin_shuttle_dock_airlock"; pixel_x = -28; pixel_y = 0; req_one_access = list(13); tag_airpump = "admin_shuttle_dock_pump"; tag_chamber_sensor = "admin_shuttle_dock_sensor"; tag_exterior_door = "admin_shuttle_dock_outer"; tag_interior_door = "admin_shuttle_dock_inner"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/obj/effect/floor_decal/industrial/warning{dir = 9},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"dyz" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"dyA" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/obj/effect/floor_decal/industrial/warning{dir = 5},/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
@@ -9362,6 +9394,7 @@
"dyN" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/floor,/area/shuttle/escape_pod3/station)
"dyO" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_c"; dir = 8},/area/shuttle/escape_pod3/station)
"dyP" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/entry/D4)
+"dyQ" = (/obj/structure/closet/crate,/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/research,/obj/random/maintenance/research,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/turf/simulated/floor/plating,/area/maintenance/cargo)
"dyR" = (/turf/space,/area/skipjack_station/southwest_solars)
"dyS" = (/turf/simulated/shuttle/wall{icon_state = "swall_straight"; dir = 4},/area/shuttle/constructionsite/station)
"dyT" = (/obj/machinery/atmospherics/pipe/simple/visible/black{dir = 5},/turf/simulated/floor,/area/engineering/engine_room)
@@ -9379,6 +9412,8 @@
"dzf" = (/obj/machinery/atmospherics/binary/pump/high_power{dir = 8},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room)
"dzg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/maintenance/starboardsolar)
"dzh" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/structure/lattice,/turf/space,/area/space)
+"dzi" = (/obj/structure/closet/wardrobe/grey,/obj/item/weapon/storage/backpack,/obj/item/weapon/storage/backpack,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/turf/simulated/floor/plating,/area/maintenance/cargo)
+"dzj" = (/obj/structure/table/rack,/obj/item/bodybag/cryobag,/obj/effect/floor_decal/corner/paleblue/full{dir = 8},/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/storage/firstaid/regular,/obj/random/medical/lite,/turf/simulated/floor/tiled/white,/area/medical/first_aid_station)
"dzk" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1380; id_tag = "admin_shuttle_dock_pump"},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "admin_shuttle_dock_sensor"; pixel_x = -30; pixel_y = 8},/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"dzl" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1380; id_tag = "admin_shuttle_dock_pump"},/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/machinery/camera/network/northern_star{c_tag = "DOCK - Dock 2 End"; dir = 9},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"dzm" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "dock_three_aft_pump"},/obj/machinery/camera/network/northern_star{c_tag = "DOCK - Dock 3 End"; dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3)
@@ -9410,6 +9445,8 @@
"dzM" = (/obj/machinery/atmospherics/pipe/simple/visible/black{dir = 6},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room)
"dzN" = (/obj/structure/lattice,/turf/simulated/mineral/floor/ignore_mapgen,/area/engineering/aft_hallway)
"dzO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/maintenance/starboardsolar)
+"dzP" = (/obj/structure/closet/crate,/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/turf/simulated/floor/plating,/area/maintenance/medbay_aft)
+"dzQ" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/tank/oxygen,/obj/item/weapon/tank/oxygen,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/extinguisher,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/turf/simulated/floor/plating,/area/maintenance/medbay_aft)
"dzR" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "admin_shuttle_dock_outer"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "admin_shuttle_dock_airlock"; name = "exterior access button"; pixel_x = -28; pixel_y = -6; req_one_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"dzS" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "admin_shuttle_dock_outer"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2)
"dzT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/entry/D2)
@@ -9418,6 +9455,7 @@
"dzW" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "dock_three_aft_airlock"; name = "exterior access button"; pixel_x = 28; pixel_y = -6; req_access = list(13)},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "dock_three_aft_outer"; locked = 1; name = "Dock Three External Access"; req_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3)
"dzX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/simulated/floor/plating,/area/hallway/secondary/entry/D4)
"dzY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/entry/D4)
+"dzZ" = (/obj/structure/closet/crate/medical,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/medbay_aft)
"dAa" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/maintenance/starboardsolar)
"dAb" = (/obj/machinery/button/remote/blast_door{id = "EngineVent"; name = "Reactor Ventillatory Control"; pixel_x = -25; pixel_y = 0; req_access = list(10)},/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor,/area/engineering/engine_room)
"dAc" = (/obj/machinery/atmospherics/pipe/manifold/visible/black,/turf/simulated/floor,/area/engineering/engine_room)
@@ -9506,7 +9544,7 @@
"dBH" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plating,/area/maintenance/evahallway)
"dBI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/evahallway)
"dBJ" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor,/area/maintenance/bar)
-"dBK" = (/obj/structure/closet/crate,/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/binary/pump/on,/turf/simulated/floor/plating,/area/maintenance/evahallway)
+"dBK" = (/obj/structure/table/reinforced,/obj/effect/floor_decal/corner/paleblue{dir = 6},/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = 25; pixel_y = 0},/obj/machinery/recharger,/obj/item/device/defib_kit,/obj/item/device/radio{frequency = 1487; icon_state = "med_walkietalkie"; name = "Medbay Emergency Radio Link"},/turf/simulated/floor/tiled/white,/area/medical/first_aid_station)
"dBL" = (/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/airlock/glass{name = "Dock"},/turf/simulated/floor/tiled,/area/hallway/secondary/escape/dock_escape_pod_hallway_starboard)
"dBM" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/glass{name = "Dock"},/turf/simulated/floor/tiled,/area/hallway/secondary/escape/dock_escape_pod_hallway_starboard)
"dBN" = (/obj/structure/sign/redcross{name = "First-Aid"; pixel_y = 32},/turf/simulated/floor/tiled,/area/hallway/primary/port)
@@ -9515,22 +9553,26 @@
"dBQ" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker{pixel_x = -3; pixel_y = 0},/obj/item/weapon/reagent_containers/food/condiment/small/peppermill{pixel_x = 3},/obj/item/weapon/material/kitchen/utensil/fork,/obj/item/weapon/material/kitchen/utensil/spoon{pixel_x = 2},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled/neutral,/area/crew_quarters/cafeteria)
"dBR" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker{pixel_x = -3; pixel_y = 0},/obj/item/weapon/reagent_containers/food/condiment/small/peppermill{pixel_x = 3},/turf/simulated/floor/tiled/neutral,/area/crew_quarters/cafeteria)
"dBS" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/door/window/southleft,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/tiled,/area/crew_quarters/bar)
+"dBT" = (/obj/structure/table/reinforced,/obj/random/maintenance/engineering,/turf/simulated/floor/tiled,/area/vacant/vacant_shop)
"dBU" = (/obj/item/weapon/reagent_containers/food/condiment/small/peppermill{pixel_x = 2; pixel_y = 6},/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker{pixel_x = -2; pixel_y = 4},/turf/simulated/floor/wood,/area/crew_quarters/bar)
"dBV" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/wood,/area/crew_quarters/bar)
"dBW" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_1)
+"dBX" = (/obj/structure/table/rack{dir = 4},/obj/item/weapon/storage/toolbox/mechanical,/obj/random/maintenance/engineering,/turf/simulated/floor/tiled,/area/vacant/vacant_shop)
"dBY" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_2)
"dBZ" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 2},/obj/machinery/light,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_2)
"dCa" = (/obj/structure/table/standard,/obj/machinery/microwave,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_2)
"dCb" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable,/turf/simulated/floor/tiled,/area/hallway/primary/port)
-"dCc" = (/obj/structure/bed/chair/comfy/beige{dir = 4},/obj/machinery/camera/network/civilian{c_tag = "CIV - Visitor Room 2"; dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_2)
+"dCc" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/tiled/dark,/area/crew_quarters/sleep/elevator)
"dCd" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/crew_quarters/sleep/vistor_room_2)
"dCe" = (/obj/structure/bed/chair/comfy/beige{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_2)
"dCf" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/turf/simulated/floor/tiled,/area/hallway/primary/port)
"dCg" = (/obj/structure/bed/chair/comfy/beige{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_7)
"dCh" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 2},/obj/machinery/light,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_7)
-"dCi" = (/obj/structure/bed/chair/comfy/beige{dir = 8},/obj/machinery/camera/network/civilian{c_tag = "CIV - Visitor Room 7"; dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_7)
+"dCi" = (/obj/structure/table/rack,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/turf/simulated/floor,/area/maintenance/apmaint)
+"dCj" = (/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/structure/closet/crate,/turf/simulated/floor/tiled,/area/vacant/vacant_shop)
"dCk" = (/obj/structure/table/standard,/obj/machinery/microwave,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_7)
"dCl" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_7)
+"dCm" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/obj/structure/table/rack,/obj/random/maintenance/cargo,/obj/random/maintenance/engineering,/obj/random/maintenance/cargo,/turf/simulated/floor,/area/maintenance/apmaint)
"dCn" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/disposal,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_8)
"dCo" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/crew_quarters/sleep/vistor_room_8)
"dCp" = (/obj/structure/bed/chair/wood{dir = 8},/obj/effect/floor_decal/corner/green/full{dir = 1},/turf/simulated/floor/tiled,/area/hydroponics/garden)
@@ -9548,6 +9590,7 @@
"dCB" = (/obj/structure/bed/chair/wood{dir = 1},/obj/effect/floor_decal/corner/green{dir = 9},/turf/simulated/floor/tiled,/area/hydroponics/garden)
"dCC" = (/obj/effect/floor_decal/corner/green/full{dir = 4},/turf/simulated/floor/tiled,/area/hydroponics/garden)
"dCD" = (/obj/effect/floor_decal/corner/green/full,/turf/simulated/floor/tiled,/area/hydroponics/garden)
+"dCE" = (/obj/structure/closet,/obj/item/clothing/glasses/welding,/obj/item/weapon/weldingtool,/obj/effect/decal/cleanable/dirt,/obj/item/clothing/shoes/workboots,/obj/random/maintenance/engineering,/obj/random/maintenance/cargo,/obj/random/maintenance/engineering,/turf/simulated/floor/plating,/area/maintenance/apmaint)
"dCF" = (/obj/effect/floor_decal/corner/green{dir = 9},/turf/simulated/floor/tiled,/area/hydroponics/garden)
"dCG" = (/obj/effect/floor_decal/corner/green{dir = 6},/turf/simulated/floor/tiled,/area/hydroponics/garden)
"dCH" = (/obj/effect/floor_decal/corner/green,/turf/simulated/floor/tiled,/area/hydroponics/garden)
@@ -9568,7 +9611,8 @@
"dCW" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 4; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/turf/simulated/floor,/area/maintenance/bar)
"dCX" = (/obj/machinery/camera/network/northern_star{c_tag = "DOCK - Hallway Mid 1"; dir = 2},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/tiled/dark,/area/hallway/secondary/entry/port)
"dCY" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/starboard)
-"dDa" = (/obj/structure/closet/wardrobe/black,/obj/item/clothing/shoes/combat,/turf/simulated/floor,/area/maintenance/engineering)
+"dCZ" = (/obj/structure/table/rack{dir = 4},/obj/item/clothing/mask/gas,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/bar)
+"dDa" = (/obj/structure/closet/crate,/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/soap,/obj/random/drinkbottle,/turf/simulated/floor,/area/maintenance/bar)
"dDb" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "dock_three_fore_airlock"; name = "interior access button"; pixel_x = 26; pixel_y = 26; req_one_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3)
"dDc" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "dock_four_fore_airlock"; name = "interior access button"; pixel_x = -26; pixel_y = 26; req_one_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D4)
"dDd" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "dock_three_mid_airlock"; name = "interior access button"; pixel_x = 26; pixel_y = -26; req_one_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3)
@@ -9608,24 +9652,50 @@
"dDL" = (/obj/structure/table/reinforced,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/button/remote/blast_door{id = "atmoslockdown"; name = "Atmospherics Lockdown"; pixel_x = 6; pixel_y = -12; req_access = list(10)},/obj/machinery/button/remote/blast_door{id = "englockdown"; name = "Engineering Lockdown"; pixel_x = -6; pixel_y = -12; req_access = list(10)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/crew_quarters/heads/chief)
"dDM" = (/obj/structure/bed/chair{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/crew_quarters/heads/chief)
"dDN" = (/obj/structure/bed/chair/office/light{dir = 8},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for shutters."; id = "ceoffice"; name = "Chief Engineer Privacy Shutters"; pixel_x = -26; pixel_y = 18; req_access = list(56)},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/landmark/start{name = "Chief Engineer"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/tiled,/area/crew_quarters/heads/chief)
+"dDO" = (/obj/structure/table/steel,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/maintenance/engineering,/turf/simulated/floor,/area/construction)
"dDP" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/starboard)
"dDQ" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled,/area/crew_quarters/heads/chief)
"dDR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/secondary/entry/starboard)
+"dDS" = (/obj/structure/table/steel,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/maintenance/engineering,/turf/simulated/floor/tiled,/area/construction)
"dDT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/secondary/entry/starboard)
"dDU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/starboard)
"dDV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/starboard)
"dDW" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/starboard)
-"dDX" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/item/clothing/glasses/sunglasses,/obj/structure/closet/crate,/turf/simulated/floor,/area/maintenance/engineering)
+"dDX" = (/obj/effect/decal/cleanable/dirt,/obj/random/obstruction,/turf/simulated/floor,/area/maintenance/bar)
"dDY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/entry/starboard)
"dDZ" = (/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/starboard)
+"dEa" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/firstaid/regular,/obj/item/bodybag/cryobag{pixel_x = 6},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/random/medical/lite,/turf/simulated/floor/tiled/yellow,/area/engineering/locker_room)
"dEb" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/space_heater,/turf/simulated/floor,/area/engineering/storage)
"dEc" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 28},/obj/machinery/space_heater,/turf/simulated/floor,/area/engineering/storage)
"dEd" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/portable_atmospherics/canister/phoron,/turf/simulated/floor,/area/engineering/storage)
+"dEe" = (/obj/structure/table/standard,/obj/structure/bedsheetbin,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/item/weapon/soap/nanotrasen,/obj/random/soap,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/sleep/engi_wash)
+"dEf" = (/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/bed/chair/office/dark,/obj/effect/floor_decal/corner/white{dir = 4},/obj/effect/floor_decal/corner/blue{dir = 1},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 24},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
+"dEg" = (/obj/structure/table/rack{dir = 1},/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/evahallway)
"dEh" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/tiled,/area/security/security_cell_hallway)
"dEi" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/tiled,/area/security/security_cell_hallway)
+"dEj" = (/obj/structure/closet/crate,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/evahallway)
+"dEk" = (/obj/structure/closet/crate,/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/binary/pump/on,/obj/random/maintenance/clean,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/evahallway)
"dEl" = (/turf/simulated/wall,/area/medical/first_aid_station)
+"dEm" = (/obj/structure/cable/green,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/machinery/newscaster{pixel_x = -27; pixel_y = 1},/obj/effect/floor_decal/corner/white{dir = 8},/obj/effect/floor_decal/corner/blue/diagonal,/obj/machinery/light_switch{pixel_x = -12; pixel_y = -24},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_dinning)
+"dEn" = (/obj/structure/closet/crate,/obj/item/weapon/bedsheet/orange,/obj/item/weapon/bedsheet/orange,/obj/item/weapon/bedsheet/yellow,/obj/item/weapon/bedsheet/purple,/obj/item/weapon/bedsheet/red,/obj/item/weapon/bedsheet/brown,/obj/item/weapon/bedsheet/green,/obj/effect/floor_decal/corner/white/diagonal{tag = "icon-corner_white_diagonal (EAST)"; icon_state = "corner_white_diagonal"; dir = 4},/obj/effect/floor_decal/corner/blue,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green,/obj/machinery/light_switch{pixel_x = -12; pixel_y = -24},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_laundry)
"dEo" = (/turf/simulated/wall,/area/maintenance/engineering/pumpstation)
+"dEp" = (/obj/structure/closet/wardrobe/black,/obj/effect/floor_decal/corner/white/diagonal{tag = "icon-corner_white_diagonal (EAST)"; icon_state = "corner_white_diagonal"; dir = 4},/obj/effect/floor_decal/corner/blue,/obj/random/maintenance/clean,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_laundry)
+"dEq" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/item/clothing/glasses/sunglasses,/obj/structure/closet/crate,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/turf/simulated/floor,/area/maintenance/engineering)
+"dEr" = (/obj/structure/table/rack{dir = 1},/obj/item/clothing/suit/fire/firefighter,/obj/item/weapon/tank/oxygen,/obj/item/clothing/mask/gas,/obj/item/weapon/extinguisher,/obj/item/clothing/head/hardhat/red,/obj/item/clothing/glasses/meson,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/engineering)
+"dEs" = (/obj/structure/closet,/obj/item/weapon/lipstick/purple,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/engineering)
+"dEt" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/void/atmos,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/atmos,/obj/machinery/door/window/northright{name = "Atmospherics Hardsuits"; req_access = list(24)},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/tiled,/area/engineering/engine_eva)
+"dEu" = (/obj/structure/bed/chair,/obj/random/contraband,/turf/simulated/floor,/area/crew_quarters/locker/locker_toilet)
+"dEv" = (/obj/structure/table/steel,/obj/item/weapon/paper{info = "The big blue box recently installed in here is a 'grid checker' which will shut off the power if a dangerous power spike from the engine erupts into the powernet. Shutting everything down protects everything from electrical damage, however the outages can be disruptive to colony operations, so it is designed to restore power after a somewhat significant delay, up to ten minutes or so. The grid checker can be manually hacked in order to end the outage sooner. To do that, you must cut three specific wires which do not cause a red light to shine, then pulse a fourth wire. Electrical protection is highly recommended when doing maintenance on the grid checker."; name = "grid checker info"},/obj/random/maintenance/engineering,/turf/simulated/floor,/area/maintenance/engineering)
+"dEw" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/obj/structure/closet/crate,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/turf/simulated/floor,/area/maintenance/engineering)
+"dEx" = (/obj/structure/closet/crate,/obj/item/weapon/deck/tarot,/obj/item/weapon/coin/gold,/obj/item/weapon/storage/fancy/cigarettes/dromedaryco,/obj/item/weapon/flame/lighter/zippo,/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/turf/simulated/floor,/area/maintenance/atmos_control)
+"dEy" = (/obj/structure/closet/wardrobe/black,/obj/item/clothing/shoes/combat,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/turf/simulated/floor,/area/maintenance/engineering)
+"dEz" = (/obj/structure/table/steel,/obj/item/clothing/head/orangebandana,/obj/random/maintenance/engineering,/turf/simulated/floor,/area/maintenance/engineering)
+"dEA" = (/obj/item/weapon/storage/box/matches,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/deck/cards,/obj/structure/table/steel,/obj/random/maintenance/engineering,/turf/simulated/floor/plating,/area/engineering/drone_fabrication)
"dEB" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/powered/scrubber,/turf/simulated/floor/tiled/hydro,/area/maintenance/engineering/pumpstation)
+"dEC" = (/obj/structure/closet/crate,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/turf/simulated/floor/plating,/area/shuttle/constructionsite/station)
+"dED" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor/wood,/area/crew_quarters/bar)
+"dEE" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor/tiled,/area/engineering/foyer)
+"dEF" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/port)
"dEJ" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "QM #1"},/obj/effect/floor_decal/industrial/outline/yellow,/mob/living/bot/mulebot,/turf/simulated/floor/tiled,/area/quartermaster/storage)
"dEK" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "QM #2"},/obj/effect/floor_decal/industrial/outline/yellow,/mob/living/bot/mulebot,/turf/simulated/floor/tiled,/area/quartermaster/storage)
"dEL" = (/turf/simulated/mineral,/area/mine/explored/upper_level)
@@ -9654,56 +9724,12 @@
"dFs" = (/obj/machinery/deployable/barrier,/obj/effect/floor_decal/industrial/hatch/yellow,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/tiled,/area/security/security_equiptment_storage)
"dFt" = (/obj/structure/closet/wardrobe/orange,/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/tiled,/area/security/security_equiptment_storage)
"dFu" = (/obj/structure/closet/radiation,/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/tiled,/area/security/security_equiptment_storage)
-"dFv" = (/obj/structure/table/rack,/obj/effect/floor_decal/corner/green{dir = 5},/obj/structure/window/reinforced{dir = 1},/obj/random/projectile,/obj/machinery/door/window/brigdoor/southleft{name = "Ballistics"; req_access = list(1)},/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dFw" = (/obj/structure/table/rack,/obj/effect/floor_decal/corner/green/full{dir = 8},/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/structure/window/reinforced{dir = 1},/obj/item/weapon/gun/projectile/shotgun/pump{pixel_x = 3; pixel_y = 3},/obj/item/weapon/gun/projectile/shotgun/pump,/obj/machinery/door/window/brigdoor/southleft{name = "Ballistics"; req_access = list(1)},/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dFx" = (/obj/structure/table/rack,/obj/effect/floor_decal/corner/green{dir = 5},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/random/projectile,/obj/machinery/door/window/brigdoor/southleft{name = "Ballistics"; req_access = list(1)},/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dFy" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunammo,/obj/item/weapon/storage/box/shotgunammo,/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/door/window/brigdoor/southright{name = "Lethal Ammo"; req_access = list(3)},/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dFz" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/door/window/brigdoor/southleft{name = "Lethal Ammo"; req_access = list(3)},/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dFA" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dFB" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/obj/machinery/light{dir = 1},/obj/machinery/firealarm{dir = 2; layer = 3.3; pixel_x = 0; pixel_y = 26},/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dFC" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/recharger/wallcharger{pixel_x = 32; pixel_y = -4},/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dFD" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dFE" = (/obj/structure/table/rack,/obj/effect/floor_decal/corner/red/full{dir = 8},/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/structure/window/reinforced{dir = 1},/obj/item/ammo_magazine/mc9mmt/practice,/obj/item/ammo_magazine/mc9mmt/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/machinery/door/window/brigdoor/eastright{name = "Ammo"},/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dFF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/dark,/area/security/armoury)
"dFG" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dFH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/weapon/stool,/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dFI" = (/obj/machinery/recharger/wallcharger{pixel_x = 32; pixel_y = -4},/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dFJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dFK" = (/obj/structure/table/rack,/obj/effect/floor_decal/corner/red{dir = 9},/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/machinery/door/window/brigdoor/eastright{name = "Ammo"},/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dFL" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/empslite{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/flashbangs{pixel_x = -2; pixel_y = -2},/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dFM" = (/obj/structure/table/standard,/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dFN" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/handcuffs{pixel_x = 8; pixel_y = 6},/obj/item/weapon/storage/box/chemimp{pixel_x = 4; pixel_y = 3},/obj/item/weapon/storage/box/trackimp,/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dFO" = (/obj/machinery/camera/network/security{c_tag = "SEC - Secure Armory Weapons"; dir = 8},/turf/simulated/floor/tiled/dark,/area/security/armoury)
"dFP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dFQ" = (/obj/structure/table/rack,/obj/effect/floor_decal/corner/red/full,/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/item/weapon/storage/box/practiceshells,/obj/item/weapon/storage/box/practiceshells,/obj/item/weapon/storage/box/flashshells,/obj/item/weapon/storage/box/beanbags,/obj/item/weapon/storage/box/beanbags,/obj/item/weapon/storage/box/stunshells,/obj/structure/window/reinforced,/obj/machinery/door/window/brigdoor/eastright{name = "Ammo"},/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dFR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dFS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/weapon/stool,/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dFT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dFU" = (/obj/machinery/light,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dFV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/dark,/area/security/armoury)
"dFW" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/window/brigdoor/northleft{name = "Weapons locker"; req_access = list(2)},/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/window/reinforced{dir = 4},/obj/item/clothing/suit/storage/vest/heavy/officer,/obj/item/clothing/suit/storage/vest/heavy/officer,/obj/item/clothing/suit/storage/vest/heavy/officer,/obj/item/clothing/suit/storage/vest/heavy/officer,/turf/simulated/floor/tiled,/area/security/security_equiptment_storage)
-"dGa" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dGb" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dGc" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor/tiled/dark,/area/security/armoury)
"dGd" = (/obj/structure/table/rack,/obj/effect/floor_decal/corner/green/full{dir = 1},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/machinery/door/window/brigdoor/southright{name = "Bullet Armor"},/obj/item/clothing/gloves/arm_guard/bulletproof,/obj/item/clothing/shoes/leg_guard/bulletproof,/obj/item/clothing/suit/armor/bulletproof/alt,/obj/item/clothing/head/helmet/bulletproof,/turf/simulated/floor/tiled/dark,/area/security/armoury)
"dGe" = (/obj/structure/table/rack,/obj/effect/floor_decal/corner/green/full{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/brigdoor/southleft{name = "Bullet Armor"; req_access = list(1)},/obj/item/clothing/gloves/arm_guard/bulletproof,/obj/item/clothing/shoes/leg_guard/bulletproof,/obj/item/clothing/suit/armor/bulletproof/alt,/obj/item/clothing/head/helmet/bulletproof,/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dGf" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/mask/breath,/obj/item/clothing/suit/space/void/security,/obj/item/clothing/head/helmet/space/void/security,/obj/item/weapon/tank/air,/obj/item/device/suit_cooling_unit,/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dGg" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/button/remote/blast_door{id = "Armoury"; name = "Armoury Access"; pixel_x = 28; pixel_y = -28; req_access = list(3)},/turf/simulated/floor/tiled,/area/security/armoury)
-"dGh" = (/obj/machinery/light{dir = 1},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dGi" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dGj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dGk" = (/obj/structure/table/rack,/obj/effect/floor_decal/corner/red/full{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/brigdoor/eastright{name = "Riot Armor"},/obj/item/clothing/gloves/arm_guard/riot,/obj/item/clothing/shoes/leg_guard/riot,/obj/item/clothing/suit/armor/riot/alt,/obj/item/clothing/head/helmet/riot,/obj/item/weapon/shield/riot,/obj/item/weapon/melee/baton/loaded,/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dGm" = (/obj/structure/table/rack,/obj/effect/floor_decal/corner/red{dir = 9},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/brigdoor/eastright{name = "Riot Armor"},/obj/item/clothing/gloves/arm_guard/riot,/obj/item/clothing/shoes/leg_guard/riot,/obj/item/clothing/suit/armor/riot/alt,/obj/item/clothing/head/helmet/riot,/obj/item/weapon/shield/riot,/obj/item/weapon/melee/baton/loaded,/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dGn" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/structure/window/reinforced,/obj/effect/floor_decal/corner/yellow/full,/obj/machinery/door/window/brigdoor/northleft{name = "Combat Armor"; req_access = list(2)},/obj/item/clothing/gloves/arm_guard/combat,/obj/item/clothing/shoes/leg_guard/combat,/obj/item/clothing/suit/armor/combat,/obj/item/clothing/head/helmet/combat,/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dGo" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/effect/floor_decal/corner/yellow/full{tag = "icon-corner_white_full (EAST)"; icon_state = "corner_white_full"; dir = 4},/obj/machinery/door/window/brigdoor/northright{name = "Combat Armor"},/obj/item/clothing/gloves/arm_guard/combat,/obj/item/clothing/shoes/leg_guard/combat,/obj/item/clothing/suit/armor/combat,/obj/item/clothing/head/helmet/combat,/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dGq" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/corner/yellow/full{tag = "icon-corner_white_full (WEST)"; icon_state = "corner_white_full"; dir = 8},/obj/machinery/door/window/brigdoor/southleft{name = "Combat Armor"; req_access = list(1)},/obj/item/clothing/gloves/arm_guard/combat,/obj/item/clothing/shoes/leg_guard/combat,/obj/item/clothing/suit/armor/combat,/obj/item/clothing/head/helmet/combat,/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dGr" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/corner/yellow/full{dir = 1},/obj/machinery/door/window/brigdoor/southright{name = "Combat Armor"},/obj/item/clothing/gloves/arm_guard/combat,/obj/item/clothing/shoes/leg_guard/combat,/obj/item/clothing/suit/armor/combat,/obj/item/clothing/head/helmet/combat,/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dGs" = (/obj/structure/table/rack,/obj/effect/floor_decal/corner/green/full{dir = 1},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/machinery/door/window/brigdoor/westright{name = "Bullet Armor"},/obj/item/clothing/gloves/arm_guard/bulletproof,/obj/item/clothing/shoes/leg_guard/bulletproof,/obj/item/clothing/suit/armor/bulletproof/alt,/obj/item/clothing/head/helmet/bulletproof,/turf/simulated/floor/tiled/dark,/area/security/armoury)
"dGt" = (/obj/structure/table/rack,/obj/effect/floor_decal/corner/red/full,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/machinery/door/window/brigdoor/eastright{name = "Riot Armor"},/obj/item/clothing/gloves/arm_guard/riot,/obj/item/clothing/shoes/leg_guard/riot,/obj/item/clothing/suit/armor/riot/alt,/obj/item/clothing/head/helmet/riot,/obj/item/weapon/shield/riot,/obj/item/weapon/melee/baton/loaded,/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dGu" = (/obj/structure/table/rack,/obj/effect/floor_decal/corner/green/full{dir = 4},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/machinery/door/window/brigdoor/westleft{name = "Bullet Armor"; req_access = list(1)},/obj/item/clothing/gloves/arm_guard/bulletproof,/obj/item/clothing/shoes/leg_guard/bulletproof,/obj/item/clothing/suit/armor/bulletproof/alt,/obj/item/clothing/head/helmet/bulletproof,/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dGv" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dGw" = (/obj/machinery/light,/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"dGH" = (/obj/structure/closet,/obj/item/stack/material/steel{amount = 4},/obj/item/stack/rods{amount = 2},/turf/simulated/floor,/area/maintenance/pool)
"dGI" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor,/area/maintenance/pool)
"dGJ" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor,/area/maintenance/pool)
"dGK" = (/obj/item/clothing/gloves/boxing/yellow,/turf/simulated/floor,/area/maintenance/pool)
@@ -9719,9 +9745,7 @@
"dGW" = (/obj/effect/decal/cleanable/vomit,/obj/item/weapon/stool/padded,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor,/area/maintenance/medbay_aft)
"dGX" = (/obj/item/weapon/broken_bottle,/turf/simulated/floor,/area/maintenance/medbay_aft)
"dGY" = (/obj/item/weapon/caution/cone,/turf/simulated/floor,/area/maintenance/medbay_aft)
-"dGZ" = (/obj/structure/table/woodentable,/obj/item/weapon/material/ashtray/plastic,/obj/item/weapon/cigbutt/cigarbutt,/turf/simulated/floor,/area/maintenance/medbay_aft)
"dHa" = (/obj/structure/door_assembly/door_assembly_mhatch,/turf/simulated/floor,/area/maintenance/medbay_aft)
-"dHb" = (/obj/structure/closet/crate,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/item/weapon/crowbar,/obj/item/weapon/wirecutters,/turf/simulated/floor,/area/maintenance/medbay_aft)
"dHc" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/structure/mirror{pixel_x = 28},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_11)
"dHd" = (/obj/structure/closet/emcloset,/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/floor/tiled/dark,/area/crew_quarters/sleep/elevator)
"dHe" = (/obj/structure/closet/emcloset,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/floor/tiled/dark,/area/crew_quarters/sleep/elevator)
@@ -9803,172 +9827,172 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaTWaTWaTWaTWaTWaTWaalaalaTWaTWaTWaTWaTWaTWaTWaTWaTWahyahyahyahyahyahyahyahyahyaaQaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaacNacNacNacNaaaaaaacNacNacNacNacNacNacNacNacNaaaaaaacNacNacNacNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTaaUaaUaaUaaUaaVaaUaaUaaUaaUaaUaaXaaWaaZaaYaaUaaUahyahyahyahyahyahyahyahyahyahyaaQaaQaahaahaahaahaahaahbeubeuaaSaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAacOacAacAacAacAacAacAacAacOacAacAacAacOacAacAacAacAaaaaaaacAacAacAaaaaaaaaaaaaaaaaaaaaaaaTaaUaaUaaUaaUaaVabaabaabaabaabaaaUaaUaaUaaUaaUaaUahyahyahyahyahyahyahyahyahyahyaaQaaQaahaahaahaahaahaahbeuadwaaSaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaaaadaaaaaaaaaaaaaadaadaaaaaaaadaadaaaaadaadaadaaaaadaadaadaaaacAaadaaaaaaaaaaaaaaaaaaaTWaTWaTWaTWaTWabfabaabaaTWaTWaTWaTWabgaTWaTWaTWaTWahyahyahyahyahyahyahyahyahyahyaaQaahaahaahaahaahaahaahaaSabtaaSaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaaaadaaaaaaaaaaaaaadaadaaaaaaaadaadaaaaadaadaadaaaaadaadaadaaaacAaadaaaaaaaaaaaaaaaaaaaTWaTWaTWaTWaTWabfabaabaaTWaTWaTWaTWabgaTWaTWaTWaTWahyahyahyahyahyahyahyahyahyahyaaQaahaahaahaahaahaahaahaaSaavaaSaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaaabhabjabiaaaabhabjabiaaaabhabjabiaaaabhabjabiaaaabhabjabiaaaacAaadaadaaaaaaaaaaaaaaabeubeuaahaahaahaahabaaTWaTWaahaahaahaahaahaahaahaahahyahyahyahyahyahyahyahyahyahyaahaahaahaahaahaahaahaahaaSaPZaaSaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaadabhaeGabiaadabhaeGabiaadabhaeGabiaadabhaeGabiaadabhaeGabiaadacOaaaaadaadaaaaaaaaaahyaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaQahyahyahyahyahyahyahyahyahyaahaahaahaahaahaahaahaahaaSabtaaSaaSaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaaabhaeGabiaaaabhaeGabiaaaabhaeGabiaaaabhaeGabiaaaabhaeGabiaaaaadaaaaaaaadaadaaaaaabeuaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyahyahyahyahyahyahyahyaahaahaahaahaahaahaahaahaaSabtabtaaSaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaacAaaaabhaeGabiaaaabhaeGabiaaaabhaeGabiaaaabhaeGabiaaaabhaeGabiaaaaadaaaaaaaaaaadaadaaabeubeubeuaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyahyahyahyahyahyahyahyaahaahaahaahaahaahaahaahaaSabtabtaaSaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAacAacAaadaaaabhaeGabiaaaabhaeGabiaaaabhaeGabiaaaabhaeGabiaaaabhaeGabiaaaaadaaaaaaaaaaaaaadabkalqalqalqalqaddaddaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyahyahyahyahyahyahyahyaahaahaahaahaahaahaahaahaaSabLabtaaSaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaaaadaaaaaaaadadxaadaaaaadadxaadaaaaadadxaadaaaaadadxaadaaaaadadxaadaaaaadaaaaaaablabmabmakJabrabnabuamUabwaddaddaahaahaahaahaahaahaahaahaahaahaahaahahyahyahyahyahyahyahyahyahyaahaahaahaahaahaahaahaahaaSaaSabtaaSaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNacNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaadabxaeFaeFaeFabyaeFaeFaeFabyaeFaeFaeFabyaeFaeFaeFabyaeFaeFaeFabyaeFaeFaeFaeFdiMabAabzabCabBabMabFabOabNabQabPaddaahaahaahaahaahaahaahaahaahaahaahaahahyahyahyahyahyahyahyahyahyaahaahaahaahaahaahaahaahaahaaSabtaaSaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaacNacNacNacNacNacNacNacNacNacNacNacNacNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaadabxaeFaeFaeFabyaeFaeFaeFabyaeFaeFaeFabyaeFaeFaeFabyaeFaeFaeFabyaeFaeFaeFaeFdiMabAabzabCabBabMabFabOabNabQabvaddaahaahaahaahaahaahaahaahaahaahaahaahahyahyahyahyahyahyahyahyahyaahaahaahaahaahaahaahaahaahaaSabtaaSaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaacNacNacNacNacNacNacNacNacNacNacNacNacNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaaaadaaaaaaaadadxaadaaaaadadxaadaaaaadadxaadaaaaadadxaadaaaaadadxaadaaaaadaaaaaaablabmabmabRabVabUabWalqabXadVaddaahaahaahaahaahaahaahaahaahaahaahaahahyahyahyahyahyahyahyahyahyahyaahaahaahaahaahaahaahaahaaSacaaaSaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaacNacNacNacNacNacNacNacNacNacNacNacNacNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAacAacAaadaadabhacbabiaaaabhacbabiaaaabhacbabiaaaabhacbabiaaaabhacbabiaaaaadaaaaaaaaaaaaaadaccalqalqalqalqabXacdaddaahaahaahaahaahaahaahaahaahaahaahaaeacebkQbkQbkQbkQahybkQbkQacfaaeaahaahaahaahaahaahaahaahaaSabtaaSaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaacNacNacNacNacNacNacNacNacNacNacNacNacNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhacbabiaaaabhacbabiaaaabhacbabiaaaabhacbabiaaaabhacbabiaaaaadaaaaaaaaaaadaadahybeubeubeuaddabXadVaddaahaahaahaahaahaahaahaahaahaahaahaaeahyacgaajaakaajaakaajachahyaaeaahaahaahaahaahaahaahaahaaSacjaaSaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaacNacNacNacNacNacNacNacNacNacNacNacNacNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhacbabiaaaabhacbabiaaaabhacbabiaaaabhacbabiaaaabhacbabiaaaaadaaaaaaaaaaadaadahybeubeubeuaddabXabPaddaahaahaahaahaahaahaahaahaahaahaahaaeahyacgaajaakaajaakaajachahyaaeaahaahaahaahaahaahaahaahaaSacjaaSaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaacNacNacNacNacNacNacNacNacNacNacNacNacNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaabhacbabiaaaabhacbabiaaaabhacbabiaaaabhacbabiaaaabhacbabiaaaacAaaaaaaaadaadadyaddaddaddaddaddaclackaddaddaahaahaahaahaahaahaahaahaahaahaaeahyaamaajaanaajaanaajaaoahyaaeaahaahaahaahaahaahaahaahaaSaPZaaSaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaacNacNacNacNacNacNacNacNacNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaadabhacbabiaadabhacbabiaadabhacbabiaadabhacbabiaadabhacbabiaadacAaaaaadaadaaaadMadNadOadPadQadRacnacmacoaddaahaahaahaahaahaahaahaahaahaahaaeacgaapaajaapaajaapaajaapachaaeaahaahaahaahaahaahaahaahaaSabtaaSaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNacNacNacNacNacNacNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOaaaabhacpabiaaaabhacpabiaaaabhacpabiaaaabhacpabiaaaabhacpabiaaaaadaadaadaaaaaaaekadNaelaemaenaeoabXacqacoaddaddaddaddaddaddaahaahaahaahaahaaeaaqaaraasaataauaavaawaaxaaqaaeaahaahaahaahaahaahaahaahaaSabtaaSaaSaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaaaadaaaaaaaaaaadaadaadaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaadaaaaadaadaaaaaaaddaddaddaddaddaddahQabXacraddaddadYadZaeaacsaddaddaahaahaahaahaaeaaqaaraayaazaaAaazaaBaaxaaqaaeaahaahaahaahaahaahaahaahaaSabtabtaaSaaSaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaadabhacbabiaadabhacbabiaadabhacbabiaadabhacbabiaadabhacbabiaadacAaaaaadaadaaaadMadNadOadPadQadRacnacmacoaddaahaahaahaahaahaahaahaahaahaahaaeacgaapaajaapacHaapaajaapachaaeaahaahaahaahaahaahaahaahaaSabtaaSaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNacNacNacNacNacNacNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOaaaabhacpabiaaaabhacpabiaaaabhacpabiaaaabhacpabiaaaabhacpabiaaaaadaadaadaaaaaaaekadNaelaemaenaeoabXacqacoaddaddaddaddaddaddaahaahaahaahaahaaeaaqaaraasaataauaazaawaaxaaqaaeaahaahaahaahaahaahaahaahaaSabtaaSaaSaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaaaadaaaaaaaaaaadaadaadaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaadaaaaadaadaaaaaaaddaddaddaddaddaddahQabXacraddaddacYadZaeaacsaddaddaahaahaahaahaaeaaqaaraayaazaaAaazaaBaaxaaqaaeaahaahaahaahaahaahaahaahaaSabtabtaaSaaSaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduedueduedueaczacOacAaadaadaadacAaadaadaadaadaaaaaaaaaaadaadaadacOaadaaaaaaaaaaddaifakQakQakQakQakQactakQakQakQakQakQakQakQacvaddaddaahaahaahaaeaaqaaraayaazaaCaazaaBaaxaaqaaeaahaahaahaahaahaahaahaahaaSabtabtabtaaSaaSaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacxaiwaeLaeMaeMaeMaeMaeNaeMaeMaeMaeMaeOaePadVacBabQaddaahaahaahaaeaaqaaraayaazaaAaazaaBaaxaaqaaeaahaahaahaahaahaahaahaahaaSaaSabtabtabHaaSaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCaiwaddaeMafaafbafcafdafeafbaffaeMagHaddaddacEacDaddaahaahaahaaeaaqaaDaaEaaAaaAaaAaaFaaGaaqaaeaahaahaahaahaahaahaahaahaahaaSabtabtabIaiZaiZaiZaiZaiZaiZaahaahaahaahaahahyaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyaaaacyacyacyacyacyaaaacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFacGaeMafoafcafpafqafrafsaftaftafuaeMaahaddaddacGaddaahaahaahaaeaaHaaIaajaaJaaJaaJaajaaIaaKaaeaahaahaahaahaahaahaahaahaaSaaSacHaaSaiZaiZajHajrajsajsaiZahyahyahyahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacyacyacyacyacyaaaacyacyacyacyacyaaaacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddacIaeMafFafGafHafIafJafKafLafMafNaeMaahaahaddacIaddaahaahaahaaeaaeaaeaaeaaLaaMaaMaaeaaeaaeaaeaahaaSaaSaaSaaSaaSaaSaaSaaSaiYabtaiXaiZajWajHajHajsajsaiZahyahyaaaahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyaaaacyacyacyacyacyaaaacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFacGaeMafoafcafpafqafrafsaftaftafuaeMaahaddaddacGaddaahaahaahaaeaaHaaIaajaaJaaJaaJaajaaIaaKaaeaahaahaahaahaahaahaahaahaaSaaSadfaaSaiZaiZajHajrajsajsaiZahyahyahyahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacyacyacyacyacyaaaacyacyacyacyacyaaaacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddacIaeMafFafGafHafIafJafKafLafMafNaeMaahaahaddacIaddaahaahaahaaeaaeaaeaaeaaLaaMaaMaaeaaeaaeaaeaahaaSaaSaaSaaSaaSaaSaaSaaSadgabtaiXaiZajWajHajHajsajsaiZahyahyaaaahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddacKaddacLaeMafSafTafUafVafWafXafYafcafZaeMaahaahaddacLaddaddaddaahaahaahaahaaNaaOaaPaaPaaNaahaahaahaaSaaSabtabtabtacMabtabtabtabtabtajFakAajWajHakhaiZaiZaiZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddaddakNakOakRaeMafcafcagkaglaglaglagmafcafcaeMaahaahaddaiwacQacPaddaddaddaddaddaaeaaRaaRaaRaaNaaSaaSaaSaaSabtabtakAakAakAakAakAakAakAabtakCakAacRakEajHakFakGakHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaddaddacSalvacTadVaeMagtaguagkafcagvafcagwaguagxaeMaahaahaddaiwacVacUacXacWacZacYaddabbabcabdabcabeaaSabtadaabsabKabqakAalkallalmalnadbakAabtajFakAalNalOadcaiZaiZaiZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyaaQaahaaaalTalUalVaaaalWalXalYaddaifakRadgaddaddaeMaeMaeMagCagDagEagFagGaeMaeMaeMaahaahaddadhadiakQakQakQadkadjadmadladoadnaeyaboabpabtabtabJabHabIakAalGalHalIalJalKakAadpalMakAaiZajHadqalQalRalSaaaahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamuaaaaaaaaaaBmaaaaaaaaaaBmaahaahaahamxamvamwamvamxamyamzamyadraiwadVaddaddaahagHagNagNagPagQagRagSagTahtahtagHaahaahaddaddaddaddaddahoahPagMagMadsabcadtaduabGaaSaaSakzakzakzakzakAamiamjamkamlammakAamnamoabqaiZampamqamramsamtahyahyahyahyahyaaaaaaahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamPamQamQamRaaaamuatNatNatNaBmatNatNatNaBmaahaahaahamxamvamSamvamxamyamTamyadraiwadVaddaahaahagHahbahcahdahcahcahcaheahfahgagHaahaahaahaahaahaahagMadvadAadzagMagMadDadBadEaaNaTWaahakzalhalialjakAamlamGamHamIamJakAabvamKamLaiZajHamMamNamsamOahyahyahyahyahyahyahyahyahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamuanhaniamuamuamuanjankamuamuanlanmannanoamuamuadGadFadHaBmadIayZadJaBmaahaahaahamxamvanpamvamxamyanqamyadraiwadVaddaahaahagHahqahqagPagQahrahsagTagVagVagHaahaahaahaahaahaahagMadSadUadTadWahoabcabZafwaaNaahaahakzalEakzalFakAancandaneancandakzakzaaSanfaiZaiZangaiZaiZaiZahyahyahyahyahyahyahyahyahyahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyamuamuaobaocaodaoeaofaogaohaoiaojaokaolaolaomaonamuayZayZayZaBmadXayZayZaBmaahaahaahamxaooaopaoqamxaoraosaotadraiwaebaddaahaahagHaecahfahEahFaeeaedaefahcaehagHaahaahaahaahaahaahagMahAaepaeiaeqahaabDabZaeraaNaahaahakzaesanKanLanManNanOanPanQanRamfakzanTanUanVanWanXanYanYanZanZanZanZaoaahyahyahyahyahyahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaddaddacSalvacTadVaeMagtaguagkafcagvafcagwaguagxaeMaahaahaddaiwacVacUacXacWacZadFaddabbabcabdabcabeaaSabtadaabsabKabqakAalkallalmalnadbakAabtajFakAalNalOadcaiZaiZaiZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyaaQaahaaaalTalUalVaaaalWalXalYaddaifakRadGaddaddaeMaeMaeMagCagDagEagFagGaeMaeMaeMaahaahaddadhadiakQakQakQadkadjadmadladoadnaeyaboabpabtabtabJabHabIakAalGalHalIalJalKakAadpalMakAaiZajHadqalQalRalSaaaahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamuaaaaaaaaaaBmaaaaaaaaaaBmaahaahaahamxamvamwamvamxamyamzamyadraiwadVaddaddaahagHagNagNagPagQagRagSagTahtahtagHaahaahaddaddaddaddaddahoahPagMagMadsabcadtaduabGaaSaaSakzakzakzakzakAamiamjamkamlammakAadYamoabqaiZampamqamramsamtahyahyahyahyahyaaaaaaahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamPamQamQamRaaaamuatNatNatNaBmatNatNatNaBmaahaahaahamxamvamSamvamxamyamTamyadraiwadVaddaahaahagHahbahcahdahcahcahcaheahfahgagHaahaahaahaahaahaahagMadvadAadzagMagMadDadBadEaaNaTWaahakzalhalialjakAamlamGamHamIamJakAaebamKamLaiZajHamMamNamsamOahyahyahyahyahyahyahyahyahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamuanhaniamuamuamuanjankamuamuanlanmannanoamuamuaiFaioadHaBmadIayZadJaBmaahaahaahamxamvanpamvamxamyanqamyadraiwadVaddaahaahagHahqahqagPagQahrahsagTagVagVagHaahaahaahaahaahaahagMadSadUadTadWahoabcabZafwaaNaahaahakzalEakzalFakAancandaneancandakzakzaaSanfaiZaiZangaiZaiZaiZahyahyahyahyahyahyahyahyahyahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyamuamuaobaocaodaoeaofaogaohaoiaojaokaolaolaomaonamuayZayZayZaBmadXayZayZaBmaahaahaahamxaooaopaoqamxaoraosaotadraiwaiYaddaahaahagHaecahfahEahFaeeaedaefahcaehagHaahaahaahaahaahaahagMahAaepaeiaeqahaabDabZaeraaNaahaahakzaesanKanLanManNanOanPanQanRamfakzanTanUanVanWanXanYanYanZanZanZanZaoaahyahyahyahyahyahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyamuapeapfapgaphapiaphapjapkapeaplapmapmapmapnapoamuaeuaetaevaBmaewaetaexaBmaeAaeAaeAamxappapqapramxapsapqaptamxaeBanranraahagHagHahSahSagPahTaeDahVagUaeEaeHagHagHaahaahaahaahaahagMagMagMagMagMapzafgaeIafiaaNaahaahakzaoIaoJaoKaoLaoMaoNaoOaoPaoQaoRaoSaoTaoTaoUaoVaoWaoXaoYaoZapaapbapcaeJahyahyahyahyahyahyahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyahyamuapYapZaqaapZaqbaqcaqaapZapYaqdapnaqeapmaqfaqgamuatNayZatNaBmatNaeKatNaBmatNatNanramxanraqhaqiamxanraqjaqiamxapxapyanraahagHaiiagUagUagPaijaeQailagUagUagUagUagHaahaahaahaahaahaahapzaqqaqraeRapzabYabZagKaaNaahaahakzapJamfamfapKapLapMapNamfamfapOakzapPanTaeTaeSaeUanTapTapUapVapWapcaeWahyahyahyahyahyahyahyahyaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyahyamuapYapZaqaapZaqbaqcaqaapZapYaqdapnaqeapmaqfaqgamuatNayZatNaBmatNaeKatNaBmatNatNanramxanraqhaqiamxanraqjaqiamxapxapyanraahagHaiiagUagUagPaijaMNailagUagUagUagUagHaahaahaahaahaahaahapzaqqaqraeRapzabYabZagKaaNaahaahakzapJamfamfapKapLapMapNamfamfapOakzapPanTaeTaeSaeUanTapTapUapVapWapcaeWahyahyahyahyahyahyahyahyaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyahyahyahyahyahyahyahyahyahyamuaqMapZapZaqNaqOaqPaqQaqQaqRaqSaqTaqUaqVaqWaqXaqYaLqaLqaLqaLqaLqaLqaLqaLqafhaeZafkafjafxafnafzafyafxafAafOafCagbapwanraahagHagcaiAagUagPagQaeQagSagUaizaiyagdagHagHagHagHagHaahaahapzagiagearparoagnagjagoaaNaahaahakzaqFaqGaqHaqIaqJaqKaqGaqHaqFakzakzanZanZaqLanZanZanZanZanZanZanZanZanZanZaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyahyahyahyahyahyahyahyahyahyahyamuarParQarRarSarTarUarVarWarXarYarZasaasbascasdamuayZagpagrayZayZagsayZayZauNayZanransansansansagIansansagOagJasrapwanraahagHagWahUagUagPagUagTagUagUaiyagUagUaiOaiNaiMaiMagHaahaahapzassagXasuapzagYabZagZaaNaahaahakzarEarFarGarHarIarJarKarLarMakzaahaahanZahiahhahhahhahhahhahkahjanZaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyahyahyasGasGasGasHasIasJasIasKasGasGamuasLasLasMasNasOasPasNasLasLamuamuamuamuamuamuasLasQasRasRasRasRasRatNayZauNatNanranraqkaqkanranranranransahlahmanranraahagHajiajiagUagPagUahnajeajeajfajeajeajdahpajbahuagHaahaahdEOdEOdEOdEOapzahvabSafwaaNaaNaahakzaqFaqFaqFaqIaqJaqKaqFaqFaqFakzaahaahanZaAJarOanZanZanZanZaAJarNanZaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyahyahyahyahyahyahyahyahyahyahyamuarParQarRarSarTarUarVarWarXarYarZasaasbascasdamuajKagpagrayZayZagsayZayZauNayZanransansansansagIansansagOagJasrapwanraahagHagWahUagUagPagUagTagUagUaiyagUagUaiOaiNaiMaiMagHaahaahapzassagXasuapzagYabZagZaaNaahaahakzarEarFarGarHarIarJarKarLarMakzaahaahanZahiahhahhahhahhahhahkahjanZaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyahyahyasGasGasGasHasIasJasIasKasGasGamuasLasLasMasNasOasPasNasLasLamuamuamuamuamuamuasLasQasRasRasRasRasRatNakeauNatNanranraqkaqkanranranranransahlahmanranraahagHajiajiagUagPagUahnajeajeajfajeajeajdahpajbahuagHaahaahdEOdEOdEOdEOapzahvabSafwaaNaaNaahakzaqFaqFaqFaqIaqJaqKaqFaqFaqFakzaahaahanZaAJarOanZanZanZanZaAJarNanZaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyatiatiatiatiatjatkatlatmatnatoatpatqatratsattatuatvatwatxatyaiGatAatBatCatDatEatFatGatHatIasQatJatKajYatMasRatNatNahwatNahxanranranranraahaahanrahzatQatRanraeAaahagHagUagUagUahBajzahCagUagUajwagUagUaiOajvajuahDagHaahdEOdEOahHahGahJahIagaabEahLahKaaNaahakzamfatganQaqIaqJaqKatganQathakzaahamXamXamXamXamXanyanxanZanZarNanZaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyatiatiauiaujaukaulaumaunauoaupauqaurausautauuauvauwauxauyauzauAauBauCauBauDauEauFauGauHauGauIasQauJauKauLauMasRaahatNauNatNatNanraahaahaahaahaahanrasTauOasranraahaahagHajUahNahMahWahRahXagUadeajNajMajLagHajKajJagHagHaahdEOahYaibahZaigaicaikaihafwaimaaNaahakzaqFaufaugaqIaqJaqKauhaugaqFakzaahamXaoxanzanzaoyaozanzapEanZarNanZaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahahyahyahyahyahyatiauXauYauZatiavaavbavcavdaveavdavfavfavgavhaviavjavkavfavlavmavnavoavpavqatDavravsavtavuavvavwavxavyavzavAasRaahatNavBatNaahaahaahaahaahaahaahanrasTauOasranraahaahagHagHakbakcagHainahXagUagHakbakcagHagHagHagHagHahyahydEOaioaOqaipairaiqabYafvafwaisaaNaahakzauSauTakzauUauVauWakzauSauTakzaahamXaitanzanzapBaiuapDapEanZaixanZaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaxsaxsaxsaxsaxsaxsaxsaxsaahatiavKavLavMatiavNavOavdavdavPavQavfavRavSavTavUavTavVavWavXavYavZawaawbawcawdaweaweawfaweawgasQawhawiasRawjasRaahatNauNatNaahaahaahaahaahaahanranrawkaiBawmanranrahyahyahyahyahyagHaiCaiDakfagHahyahyahyaahaahaahahyahyahydEOaiEatzaiFdEOaaNaiIaiHaiJaaNaaNahyahyahyahyaiKavHavIavJaiKahyahyahyaahamXanwanzanzaquaquaquapEanZarNanZaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyatiatiauiaujaukaulaumaunauoaupauqaurausautauuauvauwauxauyauzauAauBauCauBauDauEauFauGauHauGauIasQauJauKauLauMasRaahatNauNatNatNanraahaahaahaahaahanrasTauOasranraahaahagHajUahNahMahWahRahXagUadeajNajMajLagHakrajJagHagHaahdEOahYaibahZaigaicaikaihafwaimaaNaahakzaqFaufaugaqIaqJaqKauhaugaqFakzaahamXaoxanzaksamdaozanzapEanZarNanZaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahahyahyahyahyahyatiauXauYauZatiavaavbavcavdaveavdavfavfavgavhaviavjavkavfavlavmavnavoavpavqatDavravsavtavuavvavwavxavyavzavAasRaahatNavBatNaahaahaahaahaahaahaahanrasTauOasranraahaahagHagHakbakcagHainahXagUagHakbakcagHagHagHagHagHahyahydEOamgaOqaipairaiqabYafvafwaisaaNaahakzauSauTakzauUauVauWakzauSauTakzaahamXaitanzanzapBaiuapDapEanZaixanZaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaxsaxsaxsaxsaxsaxsaxsaxsaahatiavKavLavMatiavNavOavdavdavPavQavfavRavSavTavUavTavVavWavXavYavZawaawbawcawdaweaweawfaweawgasQawhawiasRawjasRaahatNauNatNaahaahaahaahaahaahanranrawkaiBawmanranrahyahyahyahyahyagHaiCaiDakfagHahyahyahyaahaahaahahyahyahydEOaiEatzamndEOaaNaiIaiHaiJaaNaaNahyahyahyahyaiKavHavIavJaiKahyahyahyaahamXanwanzanzaquaquaquapEanZarNanZaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyaahaahaahaahaahaahaahaahaxsdFmdFnazHdFoaytayuaxsaahatiawAawBawCatiawDawEavdawFawGawHavfawIawJawKawLawMawNawOawPavmawQawQawRawSatDatEawTawUawVawWasQawXawYasRawZasRaahatNauNatNaahaahaahaahaahatNavCaxaaxbaxcaxdaxeavCavCaxfaxgaxhavCavCaxdavEawnavCavCavCavCavCavCavCaxfaxgaxhavCaiLaiQaiPavCaxkaxlaxmaxdaxnawsawsawsaxoaxpawsavHaxqavJawsaxoaxpawsawsamXaiRanwanwanwanwanwapEanZaiSanZaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyaahaahaahaALaALaALaALaALaALaALaxsdFqdFqazHazHdFrdFraxsaahatiaxtaxuaxvaxwaxxaxyavdavQaxzaxAavfaxBaxCaxDaxEaxFasCavfaxJaxHaxIawQawRbQCaxKaxKaxKaxKaxKaxKaxKaxLaxLaxLaxLaxLaahatNauNatNatNatNatNatNatNatNaxMawnaxNaxOaxPaxQaiTaxSaxTaxQaxQaxRaxVaiUaiWaiVaiVajaaiVaiVajgajcajhaiVajjaiVajkaiVaiVaiVajaaiVajmajlajnaydayeaygayfayfayhayiajpajoavJaymaymaymaymaypamXajqajtanzanzajxanwanZanZarNanZaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaALaALaALaALaALaALaALaALaxsdFsdFsazHazHdFtdFuaxsaahatiayxayyayzatiayAavbavdayBayCayDavfaxGayFavTayGavTayHayIayJayKayLayMayNayOayPayQayRayPazXaySayPayTayUayVayWayXatNatNauNayYayZayZayZazaazbazcazdawnaxlazeazfazgazkaziazjazjazgazhaziazjazlazjazgazmaznaznaznazoaznaznazpaznazqaznaznaznazmazqazpazrazsaztazuazvazvazvazwazvazvajyajAazvazvazvazvavDavGavFawoawlawlawpajBanZarOarNanZaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaALaALaALdFwdFvdFxaALdFzdFyaxsayrayraBCazHazHazIaxsazJazJazJazJazJazJazKazLazMazMazNazMazMazMazMazOazPazQazRazSazTazUazVavqavqazWayPazYaBiayPaCdaCcayPazZaAaaAbaAcaGWaAeaAfauNaAgatNatNatNaAhazbatNaAiawnaxlaxmaxdaAjaAoaAlawnaAmaAnaAkaApawnaAqawnaAraAkawnawnawnaApawnawnaAsawnaAtawnaAuawnaAkaAvaxlaAwaAxaAyaAzaAAaAAaAAaAAaACaABajCajDayfayfayfajGajEajOajIasYaoAaoAanzajPanZarOajQanZaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaALaALaALdFAaDxaDxaDxdFBdFDdFCaALayrayrazHazHaAMaAMaANaAOaAPaAQaARaASaATaAUaAVaAWaAXaAYaAZaBaaBbazMavfavfavfavfavfaBcaBdaBeaBfaBgaBhayPaDdaDeayPaIoaDgayPaBjaBkaBlayXayXaBmaBnaBoatNatNaKlatNatNatNatNavCaBpaxlaxmaxdaBqavCavCaxfaxgaxhavCavCaBraBsaAiavCavCaBtaBuaBuaBuaBvavCavCavCavCavCavCavCavCaBwaxlaAwaxdaBxawsawsawsawsawsawsawsawsawsawsawsawsawsawsamXajRanzataanzanzataanZaByaBzanZaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaALaALdFEaDxdFGdFFdFHdFFdFJdFIaALaBAaBBazHazHaBDaBEaBFaBGaBGaBHaBGaBIaBJaBKaBLaBMaBNaBOaBPaBQaBRazMaBSaBTaBUaBVaBWaBXaBYaBeaBZaCaaCbayPaIpayPayPayPaIqayPayXaCeayXayXaAeaCfayZauNdpIayZayZayZdpHayZayZavCavCaCgaChaCiavCavCahyahyahyahyahyaCjaCjaCkaCjaCjahyahyahyahyahyahyahyaahaahaahaahaahaahaClaClaCmaCnaCoaClawsaahaahaahaahaahaahaahaahaahaahaahaahaahamXamXamXamXamXamXamXanZanZaCpanZanZaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaALaALdFKaDxaJGdFLdFNdFMdFPdFOaALaCvaCwaCxaCyaCzazHaCAaCBaCCaCDaCEaCFaCGaCHaCIaCJaCKaCLaCMaCNaCNaCOaCPaCQaCRaCSaCTaCUaCVaCWaCXaCYaCZaDadEhaDbaDcaJFdEiaDfaJHaDhaDiaDjaAeaDkaDlauNatNdpJayZayZayZayZayZayZaFmaxlaxmaxdavCahyahyahyahyahyahyahyaCjaDmaDnaCjahyahyahyahyahyahyahyahyaahaahaahaahaahaDoaDpaDqaDraDsaClaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaDtaDuaDvaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaALaALdFQaDxaGVdFRdFSdFRdFTaDxaDyazHaDzaDAaDBazHazHaDCaBGaBGaDDaBGaDEaDGaDHaDIaDJaDKaDLaDMaDNaDOazMaDPaDQaDRaBVaDSaDTaDUaDVaDWaDXaDYaDZaEaaEbaEcaEdaEaaEeaEfaEgaEhaEiaEjaEkaElaEmatNayZayZdqFaFmaFmaFmaFmaFmaxlaxmaEnavCahyahyahyahyahyahyahyaCjaEoaDnaCjahyahyahyahyahyahyahyahyahyahyaahaahaahaEpaEtaEraEsaGyaClaEuaEuaEuaEuaEuaEuaEuaEuaEuaEvaEvaEvaEvaEvaEvaEvaEvaEvaEvaEvaEvaEvaEvaEwaExaDtaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaALaALaALdFUaDxaDxaDxaDxdFVaEBaALaECaEDaEEaEFdFWaEHaEFaEIaEzaDDaDFaELaEMaENaEOaEPaEQaERaESaETaEUazMaBVaEVaBVaEWaEXaEYaEZaFaaFbaFcaFdaFaaFeaFfaFeaFaaFeaFgaFeaFhayPaFiatNaFjaFkaFlatNdANdqFaFmaFmaGvajSajTaFmaFnaxcaxdaFoaFoaFoaFoaFoahyahyahyaCjaDmaCjaCjahyahyahyahyahyahyahyahyahyahyahyaahaahaFpaFqaFraFsaFtaClaFuaFvaFwajVaFyajXaLgaFAaFuaEvaFBaFBaFCaFDaFEaFFaFGaFFaFHaFDaFCaFIaEvaDtaFJaYeaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaALaALaALaALbaDaPwbfbaDxdGaaFNaFOaFPaCIaFQaEFaECaEKaEFaFSaFTaFUaFVaFWaFXaFYaFZazMaGaaGbaGcaGdaGeazMaGfaGgaGhaGiaGjaGkaGlaFaaGmaGnaGoaFaaGpaGqaGraFaaGpaGnaGraFhaahaahatNaGsaGtaGuatNayZaFmaFmakdaHPajZaLwaKwaxlaxmaGzaFoaGAaGBaGCaFoaFoahyahyaCjaDmaCjahyahyaGDaGDaGEaGFaGFaGFaGGaGFaGFaGFaGFaGHaGDaGIaGJaGKaGLaClaFKaGNaGOaGNaGPaGNaGOaGNaGQaEvaGRaGSaGRaGRaGRaGRaGRaGRaGRaGRaGRaGRaGTaDtaFJaYdaDtaDtaDtaDtaDtaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaALaALaALaALaALaALdGbdGcaGZaHaaHbaHcaHdaHeaHfaGwaHhaHiaHjaHkaHlaHmaHnaHoaHpaHqaHraHsaHtaHlaHuaHvaHwaHxaHyaHzaHAaHBaHCaFaaHDaHEaHFaFaaHGaHHaHIaFaaHJaHEaHKaFhaahaahatNaHLakaaHNatNayZaFmatLaJbaHPaHQaHRaFmaHSaxmaxdaFoaHTaHUaHVaHWaFoaFoahyaCjaDmaCjahyahyaGDaHXaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaHZaIaaIbaIcaIdaClaIeaGNaGNaIfaIgaIhaGNaGNaIiaEvaGRaIjaIkaIkaIkaIkaIkaIkaIkaIkaIkaIlaGRaDtaFJdGHakedBlaVCaVCaDtaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaALaALaALdGedGddGfaDxdGadGgaIraIsaItaIuaIvaIwaHgaIyaIzaIAaIBaICaIDaIEaIFaIGaIHaIIaIHaIJaIKaILaIMaINaIOaBXaIPaIQaGkaIRaFaaISaITaIUaFaaIVaIWaIVaFaaIVaIXaIVaFhaahaahatNaIYaIZaHNatNaFmaFmakgaJbaJcaJdaJeaJfaJgaJhaJiaJjaJkaJlaJmaJnaJoaFoahyaCjaDmaCjahyahyaGDaJpaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaJqaJraFraFsaQkaClaJsaGNaJtaJuaJvaJwaJxaGNaJyaEvaJzaJAaJBaJCaJCaJCaJCaJCaJCaJCaJDaGRaJEaDtaFJdBtaVCaVCdGIdGJaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaALaALaALdGhaGVdFRdFRdFRdGjdGiaALaJJaJKaJKaJKaJLaJMaJKaJNaJKaJOaJPaJKaJQaJRaJSaJTaJQaJUaJVaJWaFaaJXaJYaFaaJZaKaaFabnNaFaaFaaKcaKdaKeaKfaKgaKhbjdaKjaKiaKdaKkaFhaFhaahatNatNaKlaLpaLqaLraLsakiaJbaJbakjakkaFmaxlaxmaxdaKraJkaKsaKtaJkaKuaFoahyaCjaDmaCjaGDaGDaGDaGDaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaJqaKvaIbaIcaLJaDoaKyaGNaJtaJuaJvaJwaJxaGNaLKaKzaKAaJAaKBaKCaKCaKCaKCaKCaKCaKCaKDaGRaKEaDtaFJaVCaDtdGIaVCdGKaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaALaALdGkaDxaDxaDxaDxaDxdFPbqpaALaJJaKIaKIaKJaKIaKKaKLaKMaKNaKOaKPaKQaJQaKRaKSaKTaKUaKVaKWaKXaFaaKYaKZaFaaLaaLbaLcaLdaLeaLfboJaLhaLiaLjaLkaLlboJaLmaLmaLmaLmaLnaFhaahaahatNaLoaHNayZaKmaklaknakmakpakoaKoaFmaLyaxmaxdaFoaLzaLAaJkaJkaLBaFoahyaCjaLCaLDaGDaLEaLFaLGaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaLHaLIaIbaIcaLJaFpakqaLLaLLaLMaLNaLOaLLaLLaLLaLQaLRaJAaKBaKCaKCaKCaKCaKCaKCaKCaKDaGRaJEaDtaFJaDtaDtaDtaDtaDtaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaALaALdGmaDxaDxdGndGoaDxdFPbsdaALaJJaLUaKIaKIaKIaLVaLWaLXaLYaLZaMaaMbaMcaMdaKSaKSaMeaMfaMgaMhaFaaMiaMjaFaaMkaMlaMmaEAaMoaMpaLmaMqaMraMsaMtaLmaLmaMsaLmaLmaLmaLnaFhaahaahatNaMuaHNatNaFmaFmaFmaFmaFmaFmaFmaFmaMvaMwaMxaMyaMzaMAaMBaJkaMCaFoahyaCjaMDaMEaGDaMFaMGaMHaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaMIaLIaMJaEsaMKaMLaMMaMMaMMaMNaMOaMPaMMaMMaMMaMQaMRaJAaKBaKCaKCaMSaMTaMUaKCaKCaKDaGRaMVaDtaFJaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaALaALdGmaDxaDxdGqdGraDxdFPdGsaALaJJaNcaNdaNeaNeaNeaNfaNgaNhaNiaNjaNkaNlaNmaNnaNoaNpaNqaNraNsaFaaNtaNuaFaaNvaNwaFaaNxaNyaFaaLmaNzaNAaNBaNCaNDaNEaNFaNEaLmaNGaFhaFhaahaahatNaNHaNIatNaahaNJaNKaNLaNMaNNaNOaNPaxlaxmawnaFoaNQaNRaJkaJkaNSaFoahyaCjaNTaNUaNVaNWaNXaNYaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaMIaLIaNZaOaaObaOcaOdaOdaOdaOeaOdaOfaOdaOgaOdaOhaOiaOjaKBaKCaKCaOkaOlaOmaKCaKCaKDaGRaOnaDtaOoaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaALaALdGtaDxaJGaDxaDxaDxdGvdGuaALaJJaLUaOvaOwaOwaOxaOyaOzaOAaOBaOCaODaOEaOFaMdaOGaOHaKSaOIaOJaOKaOLaOMaFaaONaOOaOPaLmaLmaOQaLmaORaFhaOSaOTaOTaOUaFaaFaaOVaFaaFaaahaahaahatNatNaNIatNaahaNJaOWaOXaOYaOZaOXaPaaxlaxmawnaJjaJkaPbaPcaJkaKuaFoahyaCjaPdakraGDaPfaPgaLGaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaHZaPhaLIaIcaPiaPjaPlaPlaPlaPmaPnaPoaPlaPpaPlaPraPsaJAaKBaKCaKCaKCaKCaKCaKCaKCaKDaGRaJEaDtaPtaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaALaALaALdGwaDxaDxaDxaDxaDxaALaALaJJaKIaPxaKIaKIaKIaPyaPzaPAaPBaPCaPDaJQaKVaPEaPFaPFaPFaPGaPHaPIaPJaPKaPLaPMaPNaPOaPNaPPaPQaPNaPRaPSaUeaPUaPTaPWaFaaPXaPYdGLaFaaahaahaahaahatNaHNatNaahaNJaQaaOXaQbaQcaQdaQeaQfaQgaQhaKraJkaQiaJmaJnaQjaFoahyaCjaPdaCjaGDaGDaGDaGDaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaJqaKvaLIaIcaQmaQlaLPaQnaQnaQoaQnaQnaQpaQqaPkaLQaQsaJAaKBaKCaKCaKCaKCaKCaKCaKCaKDaGRaKEaDtaOoaDtaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaALaALaALbtpbtobtobtraALaALaahaJJaJJaPxaKIaQtaQuaQvaLXaQwaQxaQyaQzaJQaQAaQBaQCaKSaQCaQDaQEaFhaFhaFhaFhaQFboJaQGaQHaQHaMtaLmaQIaQJaPNaPPaQKaQLaFaaQMaPYaQNaFaaahaahaahaahatNaHNatNaahaNJaNJaQOaOXaQPaQQaNPawnaxmaQRaFoaJkaJkaHVaQSaFoaFoahyaCjaPdaCjaahaahaGDaxWaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaJqaQUaQVaDraQWaClaQnaQnaxYaxXaxZaQnaQnaRaaQnaQnaRbaJAaRcaRdaRdaRdaRdaRdaRdaRdaReaGRaJEaDtaFJaksaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahahyaRfaRfaRfaRfaRfaRfaRfaRfaRfaRfaRfaRfaahaahaahaALaALaALaALaALaALaALaALaahaahaRgaRhaRgaRgaJJaJJaJJaJJaJJaJJaJJaRiaRiaRiaPqaRkaPqaRiaRiaRiaahaahaFhaFhaRlaRmaPVaRoaRpaRqaRraPSaKxaRsaRnaRuaFhaFaaFaaRvaFaaahaahaahatNatNaHNatNaahaahaNJaNJaRwaRxaRyaPaawnaxmaRzaFoaRAaRBaGCaFoaFoahyahyaCjaPdaCjaahaahaGDayaaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaLHaIaaLIaIcaRCaClbZuaREaRFaRGaYSaQnaRHaRGaRIaQnaRbaRJaRKaRKaRKaRKaRKaRKaRKaRKaRKaRLaGRaRMaFJdGJaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaROaRPaRPaRPaRPaRPaRPaRPaRPaRPaRQaRfaahaahaahaahaALaALaALaALaALaALaahaahaahaRgaRRaRSaRTahyahyahyahyahyahyahyahyahyaRUaRVaRVaRVaRUahyahyaahaahaahaFhaFhaRWaRXaRXaRYaFhaFhaFhaFhaFhaFhaFhaFhaahaFaaRZaFaaahaahaahatNaSaaSbatNaahaahahyaNJaNJaNJaNJaNJaScaSdawnaFoaFoaFoaFoaFoahyahyahyaCjaPdaCjaCjaahaGDaGDaGEaGFaGFaGFaSeaGFaGFaGFaGFaGHaGDaGIaSfaGKaGLaClaQnaQnaSgaShaSiaSjaSkaSlaSmaSjaRbaSnaGRaGRaGRaGRaGRaGRaGRaGRaGRaGRaGRaDtaFJaVCaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaROaRPaSoaSpaSqaSraSsaStaSoaSuaSvaSwaRfaahaahaahaahaahaahaahaahaahaSxaSxaSxaSxaSxaSyaSzaRTahyahyahyahyahyahyahyahyahyaSAaSBaSCaSDaSAahyahyaahaahaahaahahyahyahyahyahyahyahyahyahyahyahyaahaahaahaFaaFaaFaaahaahaahatNaSEaSFatNaahaahahyahyahyahyahyaSGawnaxmawnaSGahyahyahyahyahyahyahyaCjaSHaSIaCjaahaahahyahyahyahyahyahyahyahyahyahyahyaDoaFqaSJaFsaFtaClaRDaSKaSLaSMaSNaQnaRHaSOaRIaQnaSPaGRaFCaSQaSRaFFaSSaFFaSTaSQaFCaSUaEvaDtaOoaDtaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyaahaahaahaahaALaALaALaALaALaALaxsdFqdFqazHazHdFrdFraxsaahatiaxtaxuaxvaxwaxxaxyavdavQaxzaxAavfaxBaxCaxDaxEaxFasCavfaxJaxHaxIawQawRbQCaxKaxKaxKaxKaxKaxKaxKaxLaxLaxLaxLaxLaahatNauNatNatNatNatNatNatNatNaxMawnaxNaxOaxPaxQaiTaxSaxTaxQaxQaxRaxVaiUaiWaiVaiVajaaiVaiVajgajcajhaiVajjaiVajkaiVaiVaiVajaaiVajmajlajnaydayeaygayfayfayhayiajpajoavJaymaymaymaymaypamXajqajtanzanzajxanwanZanZarNanZaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaALaALaALaALaALaALaALaxsdFsdFsazHazHdFtdFuaxsaahatiayxayyayzatiayAavbavdayBayCayDavfaxGayFavTayGavTayHayIayJayKayLayMayNayOayPayQayRayPazXaySayPayTayUayVayWayXatNatNauNayYayZayZayZazaazbazcazdawnaxlazeazfazgazkaziazjazjazgazhaziazjazlazjazgazmaznaznaznazoaznaznazpaznazqaznaznaznazmazqazpazrazsaztazuazvazvazvazwazvazvajyajAazvazvazvazvavDavGavFawoawlaoyawpajBanZaoFarNanZaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaALaALaALdGedGdaoHarCaALaxsayrayraBCazHazHazIaxsazJazJazJazJazJazJazKazLazMazMazNazMazMazMazMazOazPazQazRazSazTazUazVavqavqazWayPazYaBiayPaCdaCcayPazZaAaaAbaAcaGWaAeaAfauNaAgatNatNatNauPazbatNaAiawnaxlaxmaxdaAjaAoaAlawnaAmaAnaAkaApawnaAqawnaAraAkawnawnawnaApawnawnaAsawnaAtawnaAuawnaAkaAvaxlaAwaAxaAyaAzaAAaAAaAAaAAaACaABajCajDayfayfayfajGajEajOajIasYaoAaoAanzajPanZarOajQanZaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaALaALaAhaxYaDxaDxaBSaAOaALayrayrazHazHaAMaAMaANaCvaAPaAQaARaASaATaAUaAVaAWaAXaAYaAZaBaaBbazMavfavfavfavfavfaBcaBdaBeaBfaBgaBhayPaDdaDeayPaIoaDgayPaBjaBkaBlayXayXaBmaBnaBoatNatNaKlatNatNatNatNavCaBpaxlaxmaxdaBqavCavCaxfaxgaxhavCavCaBraBsaAiavCavCaBtaBuaBuaBuaBvavCavCavCavCavCavCavCavCaBwaxlaAwaxdaBxawsawsawsawsawsawsawsawsawsawsawsawsawsawsamXajRanzataanzanzataanZaByaBzanZaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaALaALaDvdFPaJGaDxaEBaDxaALaBAaBBazHazHaBDaBEaBFaBGaBGaBHaBGaBIaBJaBKaBLaBMaBNaBOaBPaBQaBRazMaELaBTaBUaBVaBWaBXaBYaBeaBZaCaaCbayPaIpayPayPayPaIqayPayXaCeayXayXaAeaCfayZauNdpIayZayZaHmdpHayZayZavCavCaCgaChaCiavCavCahyahyahyahyahyaCjaCjaCkaCjaCjahyahyahyahyahyahyahyaahaahaahaahaahaahaClaClaCmaCnaCoaClawsaahaahaahaahaahaahaahaahaahaahaahaahaahamXamXamXamXamXamXamXanZanZaCpanZanZaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaALaALaMudFPaDxaDxaEBaNkaDyaNHaCwaCxaCyaCzazHaCAaCBaCCaCDaCEaCFaCGaCHaCIaCJaCKaCLaCMaCNaCNaCOaCPaCQaCRaCSaCTaCUaCVaCWaCXaCYaCZaDadEhaDbaDcaJFdEiaDfaJHaDhaDiaDjaAeaDkaDlauNatNdpJayZayZayZayZayZaNMaFmaxlaxmaxdavCahyahyahyahyahyahyahyaCjaDmaDnaCjahyahyahyahyahyahyahyahyaahaahaahaahaahaDoaDpaDqaDraDsaClaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaDtaDuaPuaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaALaALaALaALdFPaSzaPwaSIaALaALaTyaDzaDAaDBazHazHaDCaBGaBGaDDaBGaDEaDGaDHaDIaDJaDKaDLaDMaDNaDOazMaDPaDQaDRaBVaDSaDTaDUaDVaDWaDXaDYaDZaEaaEbaEcaEdaEaaEeaEfaEgaEhaEiaEjaEkaElaEmatNayZayZdqFaFmaFmaFmaFmaFmaxlaxmaEnavCahyahyahyahyahyahyahyaCjaEoaDnaCjahyahyahyahyahyahyahyahyahyahyaahaahaahaEpaEtaEraEsaGyaClaEuaEuaEuaEuaEuaEuaEuaEuaEuaEvaEvaEvaEvaEvaEvaEvaEvaEvaEvaEvaEvaEvaEvaEwaExaDtaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaALaALaUGaVddFPaYcaVBaEBbaDaALaECaEDaEEaEFdFWaEHaEFaEIaEzaDDaDFbbcaEMaENaEOaEPaEQaERaESaETaEUazMaBVaEVaBVaEWaEXaEYaEZaFaaFbaFcaFdaFaaFeaFfaFeaFaaFeaFgaFeaFhayPaFiatNaFjaFkaFlatNdANdqFaFmaFmaGvajSajTaFmaFnaxcaxdaFoaFoaFoaFoaFoahyahyahyaCjaDmaCjaCjahyahyahyahyahyahyahyahyahyahyahyaahaahaFpaFqaFraFsaFtaClaFuaFvaFwajVaFyajXaLgaFAaFuaEvaFBaFBaFCaFDaFEaFFaFGaFFaFHaFDaFCaFIaEvaDtaFJaYeaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaALaALbcbdFGbdNbexbexaEBaFNaFOaFPaCIaFQaEFaECaEKaEFaFSaFTaFUaFVaFWaFXaFYaFZazMaGaaGbaGcaGdaGeazMaGfaGgaGhaGiaGjaGkaGlaFaaGmaGnaGoaFaaGpaGqaGraFaaGpaGnaGraFhaahaahatNaGsaGtaGuatNayZaFmaFmakdaHPajZaLwaKwaxlaxmaGzaFoaGAaGBaGCaFoaFoahyahyaCjaDmaCjahyahyaGDaGDaGEaGFaGFaGFaGGaGFaGFaGFaGFaGHaGDaGIaGJaGKaGLaClaFKaGNaGOaGNaGPaGNaGOaGNaGQaEvaGRaGSaGRaGRaGRaGRaGRaGRaGRaGRaGRaGRaGTaDtaFJaYdaDtaDtaDtaDtaDtaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaALaALbeyaDxbfbbfjbfjbhTaGZaHaaHbaHcaHdaHeaHfaGwaHhaHiaHjaHkaHlbidaHnaHoaHpaHqaHraHsaHtaHlaHuaHvaHwaHxaHyaHzaHAaHBaHCaFaaHDaHEaHFaFaaHGaHHaHIaFaaHJaHEaHKaFhaahaahatNaHLakaaHNatNbiZaFmatLaJbaHPaHQaHRaFmaHSaxmaxdaFoaHTaHUaHVaHWaFoaFoahyaCjaDmaCjahyahyaGDaHXaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaHZaIaaIbaIcaIdaClaIeaGNaGNaIfaIgaIhaGNaGNaIiaEvaGRaIjaIkaIkaIkaIkaIkaIkaIkaIkaIkaIlaGRaDtaFJbjkbkxdBlaVCaVCaDtaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaALaALdGtaGVbkybmcbmcboEbnyaIraIsaItaIuaIvaIwaHgaIyaIzaIAaIBaICaIDaIEaIFaIGaIHaIIaIHaIJaIKaILaIMaINaIOaBXaIPaIQaGkaIRaFaaISaITaIUaFaaIVaIWaIVaFaaIVaIXaIVaFhaahaahatNaIYaIZaHNatNaFmaFmakgaJbaJcaJdaJeaJfaJgaJhaJiaJjaJkaJlaJmaJnaJoaFoahyaCjaDmaCjahyahyaGDaJpaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaJqaJraFraFsaQkaClaJsaGNaJtaJuaJvaJwaJxaGNaJyaEvaJzaJAaJBaJCaJCaJCaJCaJCaJCaJCaJDaGRaJEaDtaFJdBtbkxaVCdGIdGJaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaALaALbplaDxbqpbsdbqRdFPbstaALaJJaJKaJKaJKaJLaJMaJKaJNaJKaJOaJPaJKaJQaJRaJSaJTaJQaJUaJVaJWaFaaJXaJYaFaaJZaKaaFabnNaFaaFaaKcaKdaKeaKfaKgaKhbjdaKjaKiaKdaKkaFhaFhaahatNatNaKlaLpaLqaLraLsakiaJbaJbakjakkaFmaxlaxmaxdaKraJkaKsaKtaJkaKuaFoahyaCjaDmaCjaGDaGDaGDaGDaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaJqaKvaIbaIcaLJaDoaKyaGNaJtaJuaJvaJwaJxaGNaLKaKzaKAaJAaKBaKCaKCaKCaKCaKCaKCaKCaKDaGRaKEaDtaFJaVCaDtdGIaVCdGKaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbtobtobtobtobtpbAvbtrbFwbtobtoaJJaKIaKIaKJaKIaKKaKLaKMaKNaKOaKPaKQaJQaKRaKSaKTaKUaKVaKWaKXaFaaKYaKZaFaaLaaLbaLcaLdaLeaLfboJaLhaLiaLjaLkaLlboJaLmaLmaLmaLmaLnaFhaahaahatNaLoaHNayZaKmaklaknakmakpakoaKoaFmaLyaxmaxdaFoaLzaLAaJkaJkaLBaFoahyaCjaLCaLDaGDaLEaLFaLGaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaLHaLIaIbaIcaLJaFpakqaLLaLLaLMaLNaLOaLLaLLaLLaLQaLRaJAaKBaKCaKCaKCaKCaKCaKCaKCaKDaGRaJEaDtaFJaDtaDtaDtaDtaDtaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbtobtobGqbFCbIgbGzbJLbJrbtoaJJaLUaKIaKIaKIaLVaLWaLXaLYaLZaMaaMbaMcaMdaKSaKSaMeaMfaMgaMhaFaaMiaMjaFaaMkaMlaMmaEAaMoaMpaLmaMqaMraMsaMtaLmaLmaMsaLmaLmaLmaLnaFhaahaahatNbNhaHNatNaFmaFmaFmaFmaFmaFmaFmaFmaMvaMwaMxaMyaMzaMAaMBaJkaMCaFoahyaCjaMDaMEaGDaMFaMGaMHaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaMIaLIaMJaEsaMKaMLaMMaMMaMMaNoaMOaMPaMMaMMaMMaMQaMRaJAaKBaKCaKCaMSaMTaMUaKCaKCaKDaGRaMVaDtaFJaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbtobtobOMbNBbTZbSCbJLbWTbtoaJJaNcaNdaNeaNeaNeaNfaNgaNhaNiaNjbXfaNlaNmaNnaQgaNpaNqaNraNsaFaaNtaNuaFaaNvaNwaFaaNxaNyaFaaLmaNzaNAaNBaNCaNDaNEaNFaNEaLmaNGaFhaFhaahaahatNbYqaNIatNaahaNJaNKaNLbZhaNNaNOaNPaxlaxmawnaFoaNQaNRaJkaJkaNSaFoahyaCjaNTaNUaNVaNWaNXaNYaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaMIaLIaNZaOaaObaOcaOdaOdaOdaOeaOdaOfaOdaOgaOdaOhaOiaOjaKBaKCaKCaOkaOlaOmaKCaKCaKDaGRaOnaDtaOoaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbtobtocgicccbSCbSCcjtciYbtoaJJaLUaOvaOwaOwaOxaOyaOzaOAaOBaOCaODaOEaOFaMdaOGaOHaKSaOIaOJaOKaOLaOMaFaaONaOOaOPaLmaLmaOQaLmaORaFhaOSaOTaOTaOUaFaaFaaOVaFaaFaaahaahaahatNatNaNIatNaahaNJaOWaOXaOYaOZaOXaPaaxlaxmawnaJjaJkaPbaPcaJkaKuaFoahyaCjaPdcjYaGDaPfaPgaLGaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaHZaPhaLIaIcaPiaPjaPlaPlaPlaPmaPnaPoaPlaPpaPlaPraPsaJAaKBaKCaKCaKCaKCaKCaKCaKCaKDaGRaJEaDtaPtaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbtobtobtocnocoHcnTcoObtobtoaJJaKIaPxaKIaKIaKIaPyaPzaPAaPBaPCaPDaJQaKVaPEaPFaPFaPFaPGaPHaPIaPJaPKaPLaPMaPNaPOaPNaPPaPQaPNaPRaPSaUeaPUaPTaPWaFaaPXaPYdGLaFaaahaahaahaahatNaHNatNaahaNJaQaaOXaQbaQcaQdaQeaQfbAoaQhaKraJkaQiaJmaJnaQjaFoahyaCjaPdaCjaGDaGDaGDaGDaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaJqaKvaLIaIcaQmaQlaLPaQnaQnaQoaQnaQnaQpaQqaPkaLQaQsaJAaKBaKCaKCaKCaKCaKCaKCaKCaKDaGRaKEaDtaOoaDtaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbtobtobtobtobtobtobtobtoaJJaJJaPxaKIaQtaQuaQvaLXaQwaQxaQyaQzaJQaQAaQBaQCaKSaQCaQDaQEaFhaFhaFhaFhaQFboJaQGaQHaQHaMtaLmaQIaQJaPNaPPaQKaQLaFaaQMaPYaQNaFaaahaahaahaahatNaHNatNaahaNJaNJaQOaOXaQPaQQaNPawnaxmaQRaFoaJkaJkaHVaQSaFoaFoahyaCjaPdaCjaahaahaGDaxWaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaJqaQUaQVaDraQWaClaQnaQncqcaxXaxZaQnaQnaRaaQnaQnaRbaJAaRcaRdaRdaRdaRdaRdaRdaRdaReaGRaJEaDtaFJcxiaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahahyaRfaRfaRfaRfaRfaRfaRfaRfaRfaRfaRfaRfaahaahaahaahaahbtobtobtobtobtobtoaahaahaRgaRhaRgaRgaJJaJJaJJaJJaJJaJJaJJaRiaRiaRiaPqaRkaPqaRiaRiaRiaahaahaFhaFhaRlaRmaPVaRoaRpaRqaRraPSaKxaRsaRnaRuaFhaFaaFaaRvaFaaahaahaahatNatNaHNatNaahaahaNJaNJaRwaRxaRyaPaawnaxmaRzaFoaRAaRBaGCaFoaFoahyahyaCjaPdaCjaahaahaGDayaaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaLHaIaaLIaIcaRCaClbZuaREaRFaRGaYSaQnaRHaRGaRIaQnaRbaRJaRKaRKaRKaRKaRKaRKaRKaRKaRKaRLaGRaRMaFJdGJaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaROaRPaRPaRPaRPaRPaRPaRPaRPaRPaRQaRfaahaahaahaahaahaahaahaahaahaahaahaahaahaRgaRRaRSaRTahyahyahyahyahyahyahyahyahyaRUaRVaRVaRVaRUahyahyaahaahaahaFhaFhaRWaRXaRXaRYaFhaFhaFhaFhaFhaFhaFhaFhaahaFaaRZaFaaahaahaahatNaSaaSbatNaahaahahyaNJaNJaNJaNJaNJaScaSdawnaFoaFoaFoaFoaFoahyahyahyaCjaPdaCjaCjaahaGDaGDaGEaGFaGFaGFaSeaGFaGFaGFaGFaGHaGDaGIaSfaGKaGLaClaQnaQnaSgaShaSiaSjaSkaSlaSmaSjaRbaSnaGRaGRaGRaGRaGRaGRaGRaGRaGRaGRaGRaDtaFJaVCaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaROaRPaSoaSpaSqaSraSsaStaSoaSuaSvaSwaRfaahaahaahaahaahaahaahaahaahaSxaSxaSxaSxaSxaSycxUaRTahyahyahyahyahyahyahyahyahyaSAaSBaSCaSDaSAahyahyaahaahaahaahahyahyahyahyahyahyahyahyahyahyahyaahaahaahaFaaFaaFaaahaahaahatNaSEaSFatNaahaahahyahyahyahyahyaSGawnaxmawnaSGahyahyahyahyahyahyahyaCjaSHcyQaCjaahaahahyahyahyahyahyahyahyahyahyahyahyaDoaFqaSJaFsaFtaClaRDaSKaSLafRaSNaQnaRHaSOaRIaQnaSPaGRaFCaSQaSRaFFaSSaFFaSTaSQaFCaSUaEvaDtaOoaDtaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSVaSWaSXaSXaSXaSXaSXaSXaSXaSYaSvaSwaRfaahaahaahaahaahaahaahaahaahaSxaSZaTaaTbaTcaTdaTeaRTahyahyahyaTfaTgaThaTiaTfahyaTjaTkaTlaTkaTjahyahyaahaahaahaahaahahyahyahyahyahyahyahyahyahyahyahyaahaahaahaahaahaahaahaahatNaHNaTmatNaahaahahyahyahyahyahyaTnawnaxmawnaTnahyaToaTpaTqaTraToahyaCjaPdaDnaCjaahaahahyahyahyahyahyahyahyahyahyahyahyaEpbdHaLIaIcaLJaClaQnaQnaQnaQnaQnaQnaQnaQnaQnaQnaEvaEvaEvaEvaEvaEvaEvaEvaEvaEvaEvaEvaEvaTtaOoaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTuaRPaTvaTwaTwaSXaTxaTyaTzaTAaSvaSwaRfaahaahaahaahaahaahaahaahaahaSxaTBaTCaTDaTEaTFaTGaRTahyahyaTfaTfaQraTIaQraTfaTfaTfaTJaTKaTJaTfaTfahyahyaahaahaahaahahyahyahyahyahyahyahyahyahyaTfaTfaTfaTfaTfaahaahaahaahaTfatNaTLatNaTfaahaahaahahyahyahyavCavCaTMaTNaTMavCaToaToaTOaTPaTQaToaToaCjaTRaCjaCjaahaahaahaahahyahyahyahyahyahyahyahyahyaFpaDpaQVaDraQkaClaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaDtaTSaTTaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTuaRPaRPaRPaTUaTUaRPaRPaRPaRPaTVaRfaahaahaahaahaahaTWaTWaTWaTWaSxaTXaTYaTZaSxaRTaUaaRTaUbaUcaTfaUdaTkaTkaTkaUhaTfaUfaTkaUgaTkaUsaTfaUiaUjaTfaTfaTfaTfaTgaThaThaThaThaThaThaThaTiaTfaUkaUlaUmaTfaTfaTfaTfaTfaTfaUnaUoaUpaTfaTfaTfaTfaTfaUqaUraTfaVcaTkaTlaTkaUtaToaUuaUvaUvaUwaUxaToaUyaUzaUAaClaClaClaClaClaClaUBaUCaUCaUCaUCaUCaUCaUDaClaGIaUEaCnaCoaClaClcllcllcllcllcllcllaDtaDtaDtaDtaDtaDtaahaahaahaahaahaahaahaTWaDtaDtaUFaUGaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaRfaRfaRfaRfaUHaUHaRfaRfaRfaRfaRfaRfaUIaUIaUIaUIaUIaUIaUJaUKaULaSxaTcaUMaSxaSxawqaUOaUPaUNaUNaUQaTkaURaUSaUTaUTaUUaUVaUTaUWaUTaUTaUUaUTaUTaUTaUXaUYaUTaUZaUTaUTaUTaUTaUSaUTaUTaUTaUUaUTaVaaUSaUUaUTaUTaVbaYIaVdaUTaVeaTkaTJaTkaVfaTkaVgaTkaTkaVhaTkaTkaTlaTkaTkaViaVjaUvaUvaVkaVlaVmaVnaVoaVnaVpaVqaVraZQaVsaVtaVnaVnaVuaVvaVnaVnaVwaVxaVyaVnaVnaVzaVAaLIaUAcpZcmkcmlakuaktaktaDtaVCaYcaYdaYeaDtaDtaDtaDtaDtaDtaDtaDtaDtaVBaVCaFJaDtaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTuaRPaTvaTwaTwaSXaTxcBXaTzaTAaSvaSwaRfaahaahaahaahaahaahaahaahaahaSxaTBaTCaTDaTEaTFaTGaRTahyahyaTfaTfaQraTIaQraTfaTfaTfaTJaTKaTJaTfaTfahyahyaahaahaahaahahyahyahyahyahyahyahyahyahyaTfaTfaTfaTfaTfaahaahaahaahaTfatNaTLatNaTfaahaahaahahyahyahyavCavCaTMaTNaTMavCaToaToaTOaTPaTQaToaToaCjaTRaCjaCjaahaahaahaahahyahyahyahyahyahyahyahyahyaFpaDpaQVaDraQkaClaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaDtaTSaTTaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTuaRPaRPaRPaTUaTUaRPaRPaRPaRPaTVaRfaahaahaahaahaahaTWaTWaTWaTWaSxaTXaTYaTZaSxaRTaUaaRTaUbaUcaTfaUdaTkaTkaTkaUhaTfaUfaTkaUgaTkaUsaTfaUiaUjaTfaTfaTfaTfaTgaThaThaThaThaThaThaThaTiaTfaUkaUlaUmaTfaTfaTfaTfaTfaTfaUnaUoaUpaTfaTfaTfaTfaTfaUqaUraTfaVcaTkaTlaTkaUtaToaUuaUvaUvaUwaUxaToaUyaUzaUAaClaClaClaClaClaClaUBaUCaUCaUCaUCaUCaUCaUDaClaGIaUEaCnaCoaClaClcllcllcllcllcllcllaDtaDtaDtaDtaDtaDtaahaahaahaahaahaahaahaTWaDtaDtaUFcEuaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaRfaRfaRfaRfaUHaUHaRfaRfaRfaRfaRfaRfaUIaUIaUIaUIaUIaUIaUJaUKaULaSxaTcaUMaSxaSxawqaUOaUPaUNaUNaUQaTkaURaUSaUTaUTaUUaUVaUTaUWaUTaUTaUUaUTaUTaUTaUXaUYaUTaUZaUTaUTaUTaUTaUSaUTaUTaUTaUUaUTaVaaUSaUUaUTaUTaVbaYIcGdaUTaVeaTkaTJaTkaVfaTkaVgaTkaTkaVhaTkaTkaTlaTkaTkaViaVjaUvaUvaVkaVlaVmaVnaVoaVnaVpaVqaVraZQaVsaVtaVnaVnaVuaVvaVnaVnaVwaVxaVyaVnaVnaVzaVAaLIaUAcpZcmkcmlakuaktaktaDtaVCcJKaYdaYeaDtaDtaDtaDtaDtaDtaDtaDtaDtcKlaVCaFJaDtaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaRfaVDaVEaVFaVGaVHaVIaVJaVOaVLaVMaVNaVOaVPaVKapRaVKaVRaVSaVTaVKaVUaVKaVPaVVaVWaVVaVRaVKaVXaVYaVZaIxaVYaVYaWbaWcaWdaWeaWdaWfaWbaWdaWdaWdaWgaWhaWdaWdaWiaWdaWdaWfaWcaWdaWdaWaaWbaWdaWjaWcaWbaWqaWdaWgaWdaWkaWhaWlaWdaWbaWdaWiaWdaWcaWdaWdaWmaWdaWfaWnaTkaTkaViaWoaWpbhcaWraWsaWtaWuaWvaWuaWwaWuaWuaWuaWuaWxaWyaWuaObaWuaWuaWuaWzaWAaWAaWAaWBakvaWuaWuakxakwakyakyakLakBakMakDaWGakIaWGaWGaWGaWGaWGakSaWGaWGaWGaWGaWGaWGaWGaWJaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGaaaazGazGazGazGazGaaaazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaRfaWKaWLaWMaWNaWLaWOaVQaynaWQaWPaWRaWPaWTaWSaYjaWUaWVaWWaWXaWYaWZaXaaXbaXcaXdaXeaXfaXgaXhaXiaXjaXkaXlaXmaXnaXmaXmaXmaXmaXoaXnaXmaXmaXpaXmaXqaXmaXmaXraXmaXmaXsaXtaXuaXmaXvaXnaXwaXxaXyaXzaXyaXyaXyaXAaXBaXCaXDaXEaXFaXGaXHaXmaXIaXtaXJaXKaTkaXLaTkaTkaTkaViaUvaXMaXNaXOaXPaXQaXRaXSaLIaLIaXTaLIaLIaXVaSfaXWaLIaLJaLIaXXaLIaXYaXZaXVaXUaYaaLIaLIaLIaUAcpZakTakKakPakUcomaDtaDtaDtaDtaDtaDtaDtaDtaFJaVCaDtaDtaDtaDtaDtaDtaDtaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGaaaazGazGazGazGazGaaaazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaRfaRfaYfaYgaYhaYibphbpiaRfaRfaRfaYkaYlaYmaRfaUIaUIaUIaUIaUIaUIaUbaYnaYnaYnaUcaUIaUIaYhaTfaYoaYpaYqaYraYsaTfaYtaTkaTkaTkaYuaTfaTfaTfaTfaTfaTfaYvaYwaUgaYxaYvaTfaTfaTfaTfaTfaTfaYyaYzaYAaTfaUqaYBaUraTfaTfaUqaYBaUraTfaYCaYDaYEaTfaUqaYBaUraTfaTfaUqaYBaUraToaRjaYGaYHaUwbgiaToaClaYJaYKaYLaClaYJaYKaYLaClaClaClaYMaUAaClaClaClaClaClaClaUAaUAaUAaClaClcllaldakValCalsakWdEoakYakXalaakZalcalbdEoaFJaVCaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaRfaRfaRfaRfaRfaRfbpkbpjaahaRfaYOaYOaYOaRfaahaahaahaahaYPaYQaYRaYRaYRaYRaYRbewaYPahyaTfaTfaYTaYUaYVaTfaTfaTfaYWaYXaYYaTfaTfaahaahaahaahaahaYZaZaaZbaZcaYZaahaahaahaahaahaTfaZdaZeaZdaTfahyahyahyahyahyahyahyahyaZfaZgaZhaZiaZfahyahyahyahyahyahyahyahyaToaToaZjaZkaZlaToaToahyahyahyahyahyahyahyahyahyahyaClaYMaUAaClaahaahaahaahaZmaZmaZnaZmaZmaahcllclldEoamddEodEodEoakYalealgalfaloalbdEoaFJadfaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahbpjbplbpmbpjaahaZoaZpaZqaZraZoaahaahaahaahaYPaZsaZtaZuaZvaZwaZxaYRaYPahyahyaZyaZzaZAaZBaZyahyaTfaUiaThaTiaTfaahaahaZCaZCaZCaZCaZDaZDaZEaZDaZDaZFaZFaZFaZFaahaZdaZGaZHaZdahyahyahyahyaZIaZJaZKaZLaZIaZIaZMaZNaZOaZIaZIaZJaZKaZLaZIahyahyahyahyaZPaYGaYHaUwbaAaZRaZRaZSaZTaZUaZRaZSaZTaZUaZRaZRaZRaZVaZRaZRaahaahaahaahaahaZmbdOaZXaZmaahaahdEoalpamEalralualtalxalwalzalyalyalAdEoamFaDtaTWaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahbpjbpjbpjbpjbpjbpjbpjbpjbpjbpjbpnbpmbpjaahaZoaZYaZZbaaaZoaahaahaahaahaYPbabbacbadbaebafbagbahaYPahyahybaibajbakbalbamahyahyahyahyahyaahaahaahaZCbanbaobapaZDbaqbarbasaZDbatbaubavaZFaahaZdaZGbaxaZdahyahyahybayaZLbKzaYFaTHbaCbKMbaEbaFbaGbaHbaIbawbazbhAaZJbaMahyahyahybaNaYGaYHaUwbdwbaLbaBbaPbaObaRbaQbaPbaSbaRbaTbaWbaVbcPbaXaZRaZRaahaahaahaahaZmanbbbcaZmaahaahdEoalBaWCalyalLalDalyalPalZalyambamadEoaZWaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdaaaaaabbdaaaaaaaaabbdaaaaaaaaaaaaaaabbdaaaaaaaaabbdaaaaaabbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahbpjbpjbpobpobpobpobpobpobpobpobpobppbpqbpjaahaZobbebbfdGNaZoaahaahaahaahaYPbbhbacbbibbjbbkbagbblaYPbbmbbnbbobbpbbqbbrbamahyahyahyaahaahaahaahaahaZCbbsbbtbbubbvbbwbbxbbybbzbbAbbBbbCaZFaahaZdaZdaZHaZdahyahybaybbDbbEbMcbfMbdCbdCdCqbbGbbHbbGbgHccSblCdCpbbLbbEbbMbaMahyahybbNbbObbPbbQbbRbbabaYbbTbbSbbTbbUbbWbbVbbWbcabcIbbXbbYbbZbcJaZRaahaahaahaahaZmbdObcbaZmaahaahdEodEBaWDamcamgameamAamhamCamBamDamadEoaZWaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdaaaaaaaaabbdbbdbbdbbdbbdbbdbbdaaaaaaaaabbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahbpjbpobpobpobpjbpjbpjbpjbpjbpjbpjbpjbpjbpjaahaZobccbcdbceaZoaahaahaahaahaYPbcfbcgbchbchbchbcibfvbcjbckbclbclbcmbcnbcobamahyahyaahaahaahaahaahaahaZCbcpbcqbcraZDbcsbctbcuaZDbcvbcwbcxaZFaahaahaZdaZHaZdahyaZIbcybbEbbFbfMdCqbbGbbGbczbcAbcBbcCbcDbbGbbGbgHdCrbbLbbEbcyaZIahyaTobcEbcFbcGbcHbcLbcKbcNbcMbcNbcQbdzbdybdzdCsbdDbcObaZdCtbdEaZRbcRbcRbcRbcRaZmaWFbcTaZmaahaahdEodEBaYbalyamWamVanaamZdEodEodEodEodEoaZWaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaRfaRfaRfaRfaRfaRfbpkbpjaahaRfaYOaYOaYOaRfaahaahaahaahaYPaYQaYRaYRaYRaYRaYRbewaYPahyaTfaTfaYTaYUaYVaTfaTfaTfaYWaYXaYYaTfaTfaahaahaahaahaahaYZaZaaZbaZcaYZaahaahaahaahaahaTfaZdaZeaZdaTfahyahyahyahyahyahyahyahyaZfaZgaZhaZiaZfahyahyahyahyahyahyahyahyaToaToaZjaZkaZlaToaToahyahyahyahyahyahyahyahyahyahyaClaYMaUAaClaahaahaahaahaZmaZmaZnaZmaZmaahcllclldEocMndEodEodEoakYalealgalfaloalbdEoaFJcOHaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahbpjcPsbpmbpjaahaZoaZpaZqaZraZoaahaahaahaahaYPaZsaZtaZuaZvaZwaZxaYRaYPahyahyaZyaZzaZAaZBaZyahyaTfaUiaThaTiaTfaahaahaZCaZCaZCaZCaZDaZDaZEaZDaZDaZFaZFaZFaZFaahaZdaZGaZHaZdahyahyahyahyaZIaZJaZKaZLaZIaZIaZMaZNaZOaZIaZIaZJaZKaZLaZIahyahyahyahyaZPaYGaYHaUwbaAaZRaZRaZSaZTaZUaZRaZSaZTaZUaZRaZRaZRaZVaZRaZRaahaahaahaahaahaZmbdOaZXaZmaahaahdEoalpamEalralualtalxalwalzalyalyalAdEoamFaDtaTWaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahbpjbpjbpjbpjbpjbpjbpjbpjbpjbpjbpnbpmbpjaahaZoaZYaZZbaaaZoaahaahaahaahaYPbabbacbadbaebafbagbahaYPahyahybaibajbakbalbamahyahyahyahyahyaahaahaahaZCbanbaobapaZDbaqbarbasaZDbatbaubavaZFaahaZdaZGbaxaZdahyahyahybayaZLbKzaYFaTHbaCbKMbaEbaFbaGbaHbaIbawbazbhAaZJbaMahyahyahybaNaYGaYHaUwbdwbaLbaBbaPbaObaRbaQbaPbaSbaRbaTbaWbaVbcPbaXaZRaZRaahaahaahaahaZmanbcQzaZmaahaahdEoalBaWCalyalLalDalyalPalZalyambamadEoaZWaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdaaaaaabbdaaaaaaaaabbdaaaaaaaaaaaaaaabbdaaaaaaaaabbdaaaaaabbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahbpjbpjbpobpobpobpobpobpobpobpobpobppbpqbpjaahaZobbebbfdGNaZoaahaahaahaahaYPbbhbacbbibbjbbkbagbblaYPbbmbbnbbobbpbbqbbrbamahyahyahyaahaahaahaahaahaZCbbsbbtbbubbvbbwbbxbbybbzbbAbbBbbCaZFaahaZdaZdaZHaZdahyahybaybbDbbEbMcbfMbdCbdCdCqbbGbbHbbGbgHccSblCdCpbbLbbEbbMbaMahyahybbNbbObbPbbQbbRbbabaYbbTbbSbbTbbUbbWbbVbbWbcabcIbbXbbYbbZbcJaZRaahaahaahaahaZmbdOcRsaZmaahaahdEodEBaWDamccSdameamAamhamCamBamDamadEoaZWaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdaaaaaaaaabbdbbdbbdbbdbbdbbdbbdaaaaaaaaabbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahbpjbpobpocTObpjbpjbpjbpjbpjbpjbpjbpjbpjbpjaahaZobccbcdbceaZoaahaahaahaahaYPbcfbcgbchbchbchbcibfvbcjbckbclbclbcmbcnbcobamahyahyaahaahaahaahaahaahaZCbcpbcqbcraZDbcsbctbcuaZDbcvbcwbcxaZFaahaahaZdaZHaZdahyaZIbcybbEbbFbfMdCqbbGbbGbczbcAbcBbcCbcDbbGbbGbgHdCrbbLbbEbcyaZIahyaTobcEbcFbcGbcHbcLbcKbcNbcMbcNbcQbdzbdybdzdCsbdDbcObaZdCtbdEaZRbcRbcRbcRbcRaZmaWFbcTaZmaahaahdEodEBaYbalyamWamVanaamZdEodEodEodEodEoaZWaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaabbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahbpjbpobpObpjbpjaahaahaahaahaahaahaahaahaahaahaZoaZpbcUaZoaZoaahaahaahaahaYPbcVbcWbcXbcYbcZbdabdbbdcbddbdebdebdfbdgbdhbaiahyahyaahaahaahaahaahaahaZCbdibdjbdkbdlbdlbdmbdlbdlbdnbdobdpaZFaahaahaZdaZHaZdahybdqbaJbbFbfMdCqbbGbbGbbGbbGbbGbbGbbGbbGbbGbbGbbGbgHdCrbdsbaKbdqahyaTobdubdvaUwbdwbaLbdFbfkbdGbLZbdIbWObNGbiVbYuaZRccRcsWdCucwuaZRbdJbdKbdLbcRbdMaYNbdOaZmaahaahaZmaZmaZmbcSaZmaZmaZmaZmaZmaahaahaahaZmaZWaZmaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaabbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahbpjbpobpjaTWaahaahaahaahaahaahaahbdPbdPbdPbdPbdPbdQbdRbdSbdTaahaahaahaahaYPaRtbdVbdWbdXbdYbdXbdZbeabebbecbecaZzbcnbedbeebefbefbefbefbefaahaahaahaZCaZCaZCaZCbdlbeibeUbeibdlaZFaZFaZFaZFaahaahaZdaZHaZdahybejbiHbfMdCqbbGbelbbGbembenbbGbbGbbGbeobepbbGbelbbGbgHdCvbiFbejahyaZPbesbetaUwaToaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRbkjbevbuJbcRbdMaYNbdOaZmaahaZmaZmbexbeybdOantbdObezbeAaZmaZmaahaahaZmaZWbIUaZmaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahbpjbpobpjaahaahaahaahaahaahaahaahbdPbeBbeCbeDbdPbeEbeFbeGbdTaahaahaahaahaYPaYPbeHbeIbeJbeKbeLaYPaYPbbmbbnbbobeMbcnbeNbeebeObePbeQbeRbefaahaahaahbegbegbdlbdlbehbeTbeUbeTbeSbdlbdlbegbegaahaahaZdaZHaZdahybcybiHdCwbeqbbGbbGbeVbeWbbGbbGbbGbbGbbGbeXbepbbGbbGbbGdCxbiFbcyahybaNaYGbetbeYaToaahaahbeZbeZbfaaFLbeZbfcbfdbfedGObfgbfhbfibfjbcRbkhbevbevbflbdMaYNbfmaZmaZmaZmbdObdObdObdObdObdObdObdObdOaZmaZmaZmaZmaZWbdObdNaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahbpjbqQbpjaahaahaahaahaahaahaahaahbdPbfqbfrbfsbdPbftbfucxEbdTaahaahaahaahaahaYPaYPbfwbfxbfyaYPaYPahyahyahybfzbfAbcnbfBbeebfCbfDbfEbfFbefbefaahaahbegbegbdlbfGbeTbfHbfIbfJbeTbfKbdlbegbegaahaahaZdaZHaZdahyaZIbfLdCybbJbbGbeVbfNbfObbGdCzdCzdCzbbGbjlbfPbfQbbGbbGdCAbfSaZIahybbNaYGbetbmQaToaahaahbeZbfTbfUbfVbfWbfXbfYbfZbfZbgabgbbgcbgdbgebgfbggbghbcRbdMbdObdObdObdObdObdObgkbgkbgkbgkbgkbgkbgkbdObdObdObdObdObglbfpbdOaZmaahaahaahaahaahaahbgmbgmbgmbgmbgmbgmbgmaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaabbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahbpjbpobpjaTWaahaahaahaahaahaahaahbdPbdPbdPbdPbdPbdQbdRbdSbdTaahaahaahaahaYPaRtbdVbdWbdXbdYbdXbdZbeabebbecbecaZzbcnbedbeebefbefbefbefbefaahaahaahaZCaZCaZCaZCbdlbeibeUbeibdlaZFaZFaZFaZFaahaahaZdaZHaZdahybejbiHbfMdCqbbGbelbbGbembenbbGbbGbbGbeobepbbGbelbbGbgHdCvbiFbejahyaZPbesbetaUwaToaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRbkjbevbuJbcRbdMaYNbdOaZmaahaZmaZmdbhdcNbdOantbdObezbeAaZmaZmaahaahaZmaZWbIUaZmaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahbpjbpobpjaahaahaahaahaahaahaahaahbdPbeBbeCbeDbdPbeEbeFbeGbdTaahaahaahaahaYPaYPbeHbeIbeJbeKbeLaYPaYPbbmbbnbbobeMbcnbeNbeebeObePbeQbeRbefaahaahaahbegbegbdlbdlbehbeTbeUbeTbeSbdlbdlbegbegaahaahaZdaZHaZdahybcybiHdCwbeqbbGbbGbeVbeWbbGbbGbbGbbGbbGbeXbepbbGbbGbbGdCxbiFbcyahybaNaYGbetbeYaToaahaahbeZbeZbfaaFLbeZbfcbfdbfedGObfgbfhbfidfJbcRbkhbevbevbflbdMaYNbfmaZmaZmaZmbdObdObdObdObdObdObdObdObdOaZmaZmaZmaZmaZWbdOdfNaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahbpjbqQbpjaahaahaahaahaahaahaahaahbdPbfqbfrbfsbdPbftbfucxEbdTaahaahaahaahaahaYPaYPbfwbfxbfyaYPaYPahyahyahybfzbfAbcnbfBbeebfCbfDbfEbfFbefbefaahaahbegbegbdlbfGbeTbfHbfIbfJbeTbfKbdlbegbegaahaahaZdaZHaZdahyaZIbfLdCybbJbbGbeVbfNbfObbGdCzdCzdCzbbGbjlbfPbfQbbGbbGdCAbfSaZIahybbNaYGbetbmQaToaahaahbeZbfTbfUbfVbfWbfXbfYbfZbfZbgabgbbgcbgdbgebgfbggbghbcRbdMaYNbdObdObdObdObdObgkbgkbgkbgkbgkbgkbgkbdObdObdObdObdObglbfpbdOaZmaahaahaahaahaahaahbgmbgmbgmbgmbgmbgmbgmaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahbpjbpobpjaahaahaahaahaahaahaahaahbdPbgnbfrbgobdPbgpbgqbgrbdTaahaahaahaahahyahyahyahyahyahyahyahyahyahybbobbobgsbcnbgtbeebefbgubgvbgwbgxbefaahaahbegbegbdlbgybeTbeibgzbeibeTbgAbdlbegbegaahaZdaZdaZHaZdahyaZIbgBdCBbfRbbGbgCbbGbbGdCCbgDbgEbgFdCDbbGbbGbgCbbGbgGbgHazDaZIaZfaTobgIbgJbgKaToaToaahbeZbgLbgMbgNbgObgPbgQbgRbgSbgTbgUbgVbgWbgXbgYbgYbgYbgYbgYbgYbgZbgZbgZbgZbgZbgkbhabhbbmzbhdbhebgkbhfbhfbhfbhfbhfbhfbglbfpaZmaahaahaahaahaahbgmbgmbhgbhhbhibhhbhjbgmbgmaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahbpjbpobpjaahaahaahaahaahaahaahaahbdPbhkbhlbhkbdPbhmbfubhnbhobhobhobhoaahaahaahahyahyahyahyahyahyahyahyaZycrkbajbhqbhrbhsbefbhtbgvbgwbhubefaahaahbegbegbdlbhvbhybhxblrbhwbeTbhvbdlbegbegaahaZdaZGaZHaZdahybdqbaUdCFbbGbbGbbGbbGdCGbgDbhAbhAbhAbgFdCFbbGbbGbbGbhBbbGbhCbhDbhEbhFbhGbetaUwbhHaToaahbeZbhIbhJbgNbhKbhLbhLbhLbhLbhMbhNbgVbhObhPbgYbhQbhRbhSbhTbgYbhUbhVbhVbhWbgZbhXbhYbhYbhZbhZbhYbiabhfbibbicbidbiebhfbdOaZWaZmaahaahaahaahaahbgmbifbigbihbiibijbikbifbgmaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyaahaahaahaahaahaahaahaahaahbpjbpobpjbilbilbilbilbilbilbilbilbilbimbinbiobipbeEbfubinbhobiqbirbhobhobhoaahaahahyahyahyahyahyahyahybambisaZzbitbiubdebivbiwbixbgwbhubefaahaahbegbegbdlbiyblsbizbiAbiBbltbiCbdlbegbegaahaZdbiDaZHaZdahybejbdrdCFbbGbbGbbGbbGdCGbiFbhAbdtbhAbiHdCFbbGbbGbbGbiIbiJbiJbiKbiLbiMbiNbiObiPbiQaToaahbeZbfTbiRbiSbeZbiTbiUblObiWbxjbfhbzjbhObiYbgYbiZbjabjbbjcbgYbSjbjebjfbjgbgZbjhbjibjjbjkbpybjmbjnbhfbibbjobjpbjqbhfbjrbjsaZmaahaahaahaahaahbgmbjtbjubjvbjwbjvbjubjxbgmaahaahbgmbgmbgmbgmbgmaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyahyahyahyaahaahaahaahaahaahbpjbpjbpobqRbilbjybjzbjAbjBbjCbjDbjEbilbjFbjGbjHbjIbjJbjKbjLbhobjMbjNbjObjPbhoaahaahaahahyahyahyahyahyahybaibjQbjRbjSbhrbecbjTbjUbjVbgwbhubefaahaahaahaahbjWbjWbjWbjWbjXbjWbjWbjWbjWaahaahaahaZdbjYaZHaZdahybcybaUdCFbbGbbGbbGbbGdCGbjZbhAbhAbhAbkadCFbbGbbGbbGbkbbbGbbGbkcaZibkdaYGbetaUwbkeaToaahbeZaEqbkgblRbeZbfhbfhbfhbfhbkibfhbALbkkbklbgYbkmbknbkobkpbgYbkqbkrbksbktbgZbkubkvbkwbkxbkybkzbkAbkBbkCbkDbkEbkFbhfbdObkGaZmaahaahbgmbgmbgmbgmbkHbkIbkHbkJbkHbkKbkHbgmbgmbgmbgmbkLbkMbkNbgmbgmaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkObkPbkRbkQbkSbkPbkPahyaahaahaahaahaahbpjbqSbpobqUbilbkTbkUbkVbkWbkXbkYbkZblablbblcbldbleblfblgblhbhoblibljblkblkbhobllbllbllbllahyahyahyahyahybbobboblmblnblobeebefblpbjVbgwblqbefaahaahaahbjWbjWbjWbjWbopblvbopbjWbjWbjWbjWaahaahaZdaZdaZHaZdahyaZIblydCwbeqbbGblzbbGbbGdCrbjZblAbkabfMbbGbbGblzbbGblBdCHdCIaZIaZfaToaZjblDaZlaToaToaahbeZblEblFblGbeZblHblIblJdGQblLblMblNbhOblWbgYbgYblPblQbpabgYblSblTblUblVbgZbrKbhZbhYblXbhYbhYblYbhfblZbmabhfbmbbhfbmcaZWaZmaahbgmbgmbifbmdbkHbmebmfbmgbmhbmibmfbmgbmjbkJbmkbmlbmibmmbmgbmnbgmbgmaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkPbmobmpbmqbmpbmobkRahyahyaahbkPbkPbkPbkPbqVbpobpobilbmrbmsbjAbmtbmubmvbmwbilbmxbfubmybdTbrebdTbrebhoblibmAbmBbmCblkbmDbmEbmFbllbmGbmHbmIbllahyahyaZyaZzbcnbhrbeebmJbmKbmLbmMbefbefaahaahaahbjWbjWblwbmNblxbpHbmObmSbmRbjWbjWaahaahaahaZdaZHaZdahyaZIbmTdCJbbJbbGbfPbfQbmUbbGbdCbdCbdCbbGbmUbeVbfNbbGbbGdCKbmVaZIahyaZPaYGaYHaUwaToaahaahbeZbmWbmXbmYbmZbnabnbbncbncbndbnebnfbngbnhbnibgYbnjbnkbnlbgYbnmbnnbnobnpbgZbnqbnrcXObnsbhYbntbnubhfbnvbnwbhfbnxbhfbnyaZWaZmaahbgmbnzbnAbnBbnCbnDbnEbnDbnFbnDbnGbihbnHbkJbnIbnJbnKbnLbihbnMaFMbgmaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnObnPbnQbnRbnRbnPbnSbnTbkPbkPbkPbnUbnVbkPbkPbsybkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbftbfubnWbdTbnXbnYbnZblkblkaybbobbocblkbodboeboebofbogbohboibllahyahybamaZzbcnbojbeebmKbmKbokbolbefaahaahaahbjWbjWbpJbombpLbmPbvMbmPborboqbrxbjWbjWaahaahaZdaZHaZdahybdqbiHdCBbfRbbGbbGbfPbfQbbGbbGbbGbbGbbGbembeWbbGbbGbbGdCxbdxbdqahybaNbbObotbouaToaahaahbeZbgLbovbgNbowboxboybozboAboBboCbgVbhOboDboEbgYboFboGboFbgYboHboIbTzboKbgZbgkboLboMbdAboLboMboOboOboOboOboOboOboOboOaZWaZmaahbgmboPboQboRbkHboSbmfanuboUboVboWbmmbmgbkHbmibmmboXboYboSboZbuPbgmaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahbpjbpobpjaahaahaahaahaahaahaahaahbdPbhkbhlbhkbdPbhmbfubhnbhobhobhobhoaahaahaahahyahyahyahyahyahyahyahyaZycrkbajbhqbhrbhsbefbhtbgvbgwbhubefaahaahbegbegbdlbhvbhybhxblrbhwbeTbhvbdlbegbegaahaZdaZGaZHaZdahybdqbaUdCFbbGbbGbbGbbGdCGbgDbhAbhAbhAbgFdCFbbGbbGbbGbhBbbGbhCbhDbhEbhFbhGbetaUwbhHaToaahbeZbhIbhJbgNbhKbhLbhLbhLbhLbhMbhNbgVbhObhPbgYbhQbhRbhSdinbgYbhUbhVbhVbhWbgZbhXbhYbhYbhZbhZbhYbiabhfbibbicdlrbiebhfbdOaZWaZmaahaahaahaahaahbgmbifbigbihbiibijbikbifbgmaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyaahaahaahaahaahaahaahaahaahbpjbpobpjbilbilbilbilbilbilbilbilbilbimbinbiobipbeEbfubinbhobiqbirbhobhobhoaahaahahyahyahyahyahyahyahybambisaZzbitbiubdebivbiwbixbgwbhubefaahaahbegbegbdlbiyblsbizbiAbiBbltbiCbdlbegbegaahaZdbiDaZHaZdahybejbdrdCFbbGbbGbbGbbGdCGbiFbhAbdtbhAbiHdCFbbGbbGbbGbiIbiJbiJbiKbiLbiMbiNbiObiPbiQaToaahbeZbfTbiRbiSbeZbiTbiUblObiWbxjbfhbzjbhObiYbgYdlQbjabjbbjcbgYbSjbjebjfbjgbgZbjhbjibjjdmFbpybjmbjnbhfbibbjobjpbjqbhfbjrbjsaZmaahaahaahaahaahbgmbjtbjubjvbjwbjvbjubjxbgmaahaahbgmbgmbgmbgmbgmaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyahyahyahyaahaahaahaahaahaahbpjbpjbpodmIbilbjybjzbjAbjBbjCbjDbjEbilbjFbjGbjHbjIbjJbjKbjLbhobjMbjNbjObjPbhoaahaahaahahyahyahyahyahyahybaibjQbjRbjSbhrbecbjTbjUbjVbgwbhubefaahaahaahaahbjWbjWbjWbjWbjXbjWbjWbjWbjWaahaahaahaZdbjYaZHaZdahybcybaUdCFbbGbbGbbGbbGdCGbjZbhAbhAbhAbkadCFbbGbbGbbGbkbbbGbbGbkcaZibkdaYGbetaUwbkeaToaahbeZaEqbkgblRbeZbfhbfhbfhbfhbkibfhbALbkkbklbgYbkmbknbkobkpbgYbkqbkrbksbktbgZbkubkvbkwdmPdmLbkzbkAbkBbkCbkDbkEbkFbhfbdObkGaZmaahaahbgmbgmbgmbgmbkHbkIbkHbkJbkHbkKbkHbgmbgmbgmbgmbkLbkMbkNbgmbgmaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkObkPbkRbkQbkSbkPbkPahyaahaahaahaahaahbpjbqSbpobqUbilbkTbkUbkVbkWbkXbkYbkZblablbblcbldbleblfblgblhbhoblibljblkblkbhobllbllbllbllahyahyahyahyahybbobboblmblnblobeebefblpbjVbgwblqbefaahaahaahbjWbjWbjWbjWbopblvbopbjWbjWbjWbjWaahaahaZdaZdaZHaZdahyaZIblydCwbeqbbGblzbbGbbGdCrbjZblAbkabfMbbGbbGblzbbGblBdCHdCIaZIaZfaToaZjblDaZlaToaToaahbeZblEblFblGbeZblHblIblJdGQblLblMblNbhOblWbgYbgYblPblQbpabgYblSblTblUblVbgZbrKbhZbhYblXbhYbhYblYbhfblZbmabhfbmbbhfdnIaZWaZmaahbgmbgmbifbmdbkHbmebmfbmgbmhbmibmfbmgbmjbkJbmkbmlbmibmmbmgbmnbgmbgmaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkPbmobmpbmqbmpbmobkRahyahyaahbkPbkPbkPbkPbqVbpobpobilbmrbmsbjAbmtbmubmvbmwbilbmxbfubmybdTbrebdTbrebhoblibmAbmBbmCblkbmDbmEbmFbllbmGbmHbmIbllahyahyaZyaZzbcnbhrbeebmJbmKbmLbmMbefbefaahaahaahbjWbjWblwbmNblxbpHbmObmSbmRbjWbjWaahaahaahaZdaZHaZdahyaZIbmTdCJbbJbbGbfPbfQbmUbbGbdCbdCbdCbbGbmUbeVbfNbbGbbGdCKbmVaZIahyaZPaYGaYHaUwaToaahaahbeZbmWbmXbmYbmZbnabnbbncbncbndbnebnfbngbnhbnibgYbnjbnkbnlbgYbnmbnnbnobnpbgZbnqbnrcXObnsbhYbntbnubhfbnvbnwbhfbnxbhfdnJaZWaZmaahbgmbnzbnAbnBbnCbnDbnEbnDbnFbnDbnGbihbnHbkJbnIbnJbnKbnLbihbnMaFMbgmaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnObnPbnQbnRbnRbnPbnSbnTbkPbkPbkPbnUbnVbkPbkPbsybkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbftbfubnWbdTbnXbnYbnZblkblkaybbobbocblkbodboeboebofbogbohboibllahyahybamaZzbcnbojbeebmKbmKbokbolbefaahaahaahbjWbjWbpJbombpLbmPbvMbmPborboqbrxbjWbjWaahaahaZdaZHaZdahybdqbiHdCBbfRbbGbbGbfPbfQbbGbbGbbGbbGbbGbembeWbbGbbGbbGdCxbdxbdqahybaNbbObotbouaToaahaahbeZbgLbovbgNbowboxboybozboAboBboCbgVbhOboDdnKbgYboFboGboFbgYboHboIbTzboKbgZbgkboLboMbdAboLboMboOboOboOboOboOboOboOboOaZWaZmaahbgmboPboQboRbkHboSbmfanuboUboVboWbmmbmgbkHbmibmmboXboYboSboZbuPbgmaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkQbmqbpbbpcbpcbmqbpdbpebpfbpgbNxbLLbRubOUbUHbRvbUMbUIbWrbWqbWsbprbpsbprbptbpubpvbpwbpxbMKbpzbpzbpzbpAblkblkbpBblkblkbpCbpDbpEbpEbpEbpFbpGbllahyahybamaZzbcnbfBbeebefbefbefbefbefaahaahaahbjWbjWbrybukbonbpIbpIbpIbonbukbrzbjWbjWaahaahaZdaZHaZdahybejbiHdCDdCLbbGbelbbGbfPbenbbGbbGbbGbeobeWbbGbelbbGdCHdCMbdxbejahybbNaYGaYHaUwbpPahyaahbeZbpQbpRbgNbpSbpTbpUbpVbpVbpWbpXbpYbpZbqabqabqbbqcbqdbqcbqebqcbqfbqgbqhbqibqjbqkbqhbqlbqmbqnboObqoaCqbqqbqrbqsbqtboOaZWaZmaahbgmbqubqvbqwbkJbqxbqybqzbgmbqAbqBbqCbqCbqDbsnbqCbqEbqFbqGboZaycbgmaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaacAacOacAacAacAacAacAacAacAacOacAacAacAacOacAacAacAacAaaaaaaacAacAacAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqIaadahybkQbnPbqJbpcbpcbqKbqLbqMbqNbqObqPbWubXYbWwbXZbqTbYbbYabqWbqXbYcbqYbqZbrabrbbrcbrdbgqbinbMNbrfbrgbpzbrhbrebribrjbrkbrlbrmbrnbrobrpbrqbrrbrsbllahyahybambrtbrubrvaZyahyahyahyahyahyahyaahaahbjWbsQbsRbukbonbpKbsSbpKbonbukbxbbsTbjWaahaahaZdaZHaZdahybcyaTsbrBdCDdCLbbGbbGbbGbbGbbGbbGbbGbbGbbGbbGbbGdCHdCCbrCbdBbcyahyaTobrEaYHbrFbrGahyahybeZbfTblFbrHbeZbrIbrJbvUbrLbEEblMbrNbrObrPbrQbrRbrSbrTbrSbrSbrSbrUbrVbrWbrXbrYbrZbrYbsabrYbrYbsbbscaCrbsebsfbsgbsgboOaZWaZmaahbgmboPbshboRbkHbmibsibsjbskbslbmmbmmbsmbkHbuYbmmbsobspbmiboZbsqbgmaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaacAaaaaadaaaaaaaaaaaaaadaadaaaaaaaadaadaaaaadaadaadaaaaadaadaadaaaacAaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsrahyahybssbmqbstbpcbpcbmqbsubsvbswbsxbYdbszbsAbkPbkPbsybkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbsBbfubsCbdTbekbsEbsFbsFbsGbsHbsIbsJbrlbsKbrnbsLbsMbsNbrrbsObsPahyahybamaZzbcnbhrbamahyahyahyahyahyahyaahaahbjWbjWbrybukbRVbpIbTDbpIbonbukbrzbjWbjWaahaahaZdaZHaZdahyaZIbdqbbEbsVdCDdCLbbIbbJbbKbbGbbGbbGbbIbbJbbKdCHdCCbrCbbEbdqaZIahyaZPaYGbetaUwbrGahyahybeZbeZbsWbeZbeZblMblMblMbsXbsXbsXbsXbsYbsZbsXbsXbtabtbbtcbtdbtdbtebtfbtbbtgbthbtibtjbtkawrbtmboObtnaCsaCuaCtaCuaDwboOaZWaZmaahbgmbtsbttbnBbtubnDbtvbnDbtwbmmbtxbmmbtybkJbyTbijbtzbtAbtBbtCbtDbgmaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaacAaaabtEbtFbtGaaabtEbtFbtGaaabtEbtFbtGaaabtEbtFbtGaaabtEbtFbtGaaaacAaadaadaaaaaaaaaaaaaaaaaabtHbtIbtJbtKaaaaaabtLbtMbtNbtLbtLbtObnPbnQbtPbtQbnPbtRbnTbkPbkPbkPbtSbnTbkPbYhbYebEUbtHaahaahaahaahaahaahaahbdTbtTbtUbtVbMKbtWbtXbtYbpzbtZbeEbuabubbucbudbuebufbufbufbugbuhbuiahyahybamaZzbcnbhrbamahyahyahyahyahyaahaahaahbjWbjWbVfbpMboobpIbpIbpIbqHbpNcgdbjWbjWaahaahaZdaZHaZdahyahybbMbaMbbEbsVdCDdCNdCPdCOdCzdCzdCzdCNdCPdCOdCCbrCbbEbaybbDahyahybaNbdubdvbunbrGahyahybuoberbuqburbusbutbuubuvbsXbuwbuxbuybuzayjaykbuCbuDbuEbuFbuGbuHbuIbtfbHXbuKbuLbuMbuNbuObuLbuNboObwxbuQbuRbuSbuTbuUboOaZWaZmaahbgmbgmbifbuVbkHboSbuWbmmbmfbmmbmmbtCbuXbkJbCQbwubuZbvabsmbvbbgmbgmaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaacAaadbtEbvcbtGaadbtEbvcbtGaadbtEbvcbtGaadbtEbvcbtGaadbtEbvcbtGaadacOaaaaadaadaaaaaaaaaaaaaaabtHbtHbvdbvebtHbvfbvgbvhawxbvjbvkbkPbmobmpbmqbmpbmobkRahyahyahyahyahyahybtHbYqbYebZebtHaahaahaahaahaahaahaahbdTbvlbvmbvnbMNbvobvpbvqbvrbMKbvsbvtbvubvvbvwbvxbvybvzbvAbvBbvCbllahyahybaiaZzbMObhrbaiahyahyahyaahaahaahaahaahaahbjWbjWbrwbpMckQbZfclHcqpbrMbjWbjWaahaahaahaZdaZHaZdahyahyahybbMaZLbaJbgEbgEbvGbvHbiEbhzbiEbvKbvLbgEbgEbiGaZJbbDahyahyahybbNaYGbRLaUwbvNahyahybvObosbuqbvQboNbvSbvTcqsbsXanvbvWbvXbvYbvYbvZbwabwbbwcbwdbwebwebwfbwgbQwbwibwjbwkbwlbwmbwnbwoboObwpbwqbwrbtqbwsbwtboOaZWaZmaahaahbgmbgmbgmbgmbAQbwvbwwbmfbyUbwybwzbkJbkJbGRbkJbwAbwBbwCbgmbgmaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaacAaaabtEbvcbtGaaabtEbvcbtGaaabtEbvcbtGaaabtEbvcbtGaaabtEbvcbtGaaaaadaaaaaaaadaadaaaaaaaaaaaabtHbwDbwEbwFbtHbwGbwHbwIbwJbwKbwLbkObkPbkRbkQbkSbkPbkPaahaahahyahyahyahybtHbtHbYebEUbwMbwMbwMbwMbwMbwMbwMbwMbwMbwNbwObwPbdTbrAbwRbwSbwTbMNbwUbuabsCbucbwVbwWbwXbllbwYbwZbwYbllahybeebeeblmblnblobboahyahyaahaahaahaahaahaahaahbjWbjWbjWcuwcuvbZgcuHcvCbjWbjWbjWaahaahaZdaZdaZHaZdaZdahyahyahyaZIaZJaZKaZLaZIaZIaZJaZKaZLaZIaZIaZJaZKaZLaZIahyahyahyahyaToaZjblDaZlaToaToahybxcbxdbxebvSbxfbxgbxhbxibsXanAbxkbxlbxmbvYbvYbxnbqhbxpbxqbthbthbxrbtfbxsbxtbxubxvbxwbxxbADbvRboOboOboOboObxAboOboOboOaZWaZmaahaahaahaahaahbgmbxBbxCbkJbxDbkJbxBbxEbkJbxFbxGbkJbxHbxIbkJbgmaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaacAaaaaadaaaaaaaaaaaaaadaadaaaaaaaadaadaaaaadaadaadaaaaadaadaadaaaacAaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsrahyahybssbmqdnLbpcbpcbmqbsubsvbswbsxbYdbszbsAbkPbkPbsybkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbsBbfubsCbdTbekbsEbsFbsFbsGbsHbsIbsJbrlbsKbrnbsLbsMbsNbrrbsObsPahyahybamaZzbcnbhrbamahyahyahyahyahyahyaahaahbjWbjWbrybukbRVbpIbTDbpIbonbukbrzbjWbjWaahaahaZdaZHaZdahyaZIbdqbbEbsVdCDdCLbbIbbJbbKbbGbbGbbGbbIbbJbbKdCHdCCbrCbbEbdqaZIahyaZPaYGbetaUwbrGahyahybeZbeZbsWbeZbeZblMblMblMbsXbsXbsXbsXbsYbsZbsXbsXbtabtbbtcbtdbtdbtebtfbtbbtgbthbtibtjbtkawrbtmboObtnaCsaCuaCtaCuaDwboOaZWaZmaahbgmbtsbttbnBbtubnDbtvbnDbtwbmmbtxbmmbtybkJbyTbijbtzbtAbtBbtCbtDbgmaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaacAaaabtEbtFbtGaaabtEbtFbtGaaabtEbtFbtGaaabtEbtFbtGaaabtEbtFbtGaaaacAaadaadaaaaaaaaaaaaaaaaaabtHbtIbtJbtKaaaaaabtLbtMbtNbtLbtLbtObnPbnQbtPbtQbnPbtRbnTbkPbkPbkPbtSbnTbkPbYhbYednMbtHaahaahaahaahaahaahaahbdTbtTbtUbtVbMKbtWbtXbtYbpzbtZbeEbuabubbucbudbuebufbufbufbugbuhbuiahyahybamaZzbcnbhrbamahyahyahyahyahyaahaahaahbjWbjWbVfbpMboobpIbpIbpIbqHbpNcgdbjWbjWaahaahaZdaZHaZdahyahybbMbaMbbEbsVdCDdCNdCPdCOdCzdCzdCzdCNdCPdCOdCCbrCbbEbaybbDahyahybaNbdubdvbunbrGahyahybuoberbuqburbusbutbuubuvbsXbuwbuxbuybuzayjaykbuCbuDbuEbuFbuGbuHbuIbtfbHXbuKbuLbuMbuNbuObuLbuNboObwxbuQbuRbuSbuTbuUboOaZWaZmaahbgmbgmbifbuVbkHboSbuWbmmbmfbmmbmmbtCbuXbkJbCQbwubuZbvabsmbvbbgmbgmaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaacAaadbtEbvcbtGaadbtEbvcbtGaadbtEbvcbtGaadbtEbvcbtGaadbtEbvcbtGaadacOaaaaadaadaaaaaaaaaaaaaaabtHbtHbvdbvebtHbvfbvgbvhawxbvjbvkbkPbmobmpbmqbmpbmobkRahyahyahyahyahyahybtHdobbYebZebtHaahaahaahaahaahaahaahbdTbvlbvmbvnbMNbvobvpbvqbvrbMKbvsbvtbvubvvbvwbvxbvybvzbvAbvBbvCbllahyahybaiaZzbMObhrbaiahyahyahyaahaahaahaahaahaahbjWbjWbrwbpMckQbZfclHcqpbrMbjWbjWaahaahaahaZdaZHaZdahyahyahybbMaZLbaJbgEbgEbvGbvHbiEbhzbiEbvKbvLbgEbgEbiGaZJbbDahyahyahybbNaYGbRLaUwbvNahyahybvObosbuqbvQboNbvSbvTcqsbsXanvbvWbvXbvYbvYbvZbwabwbbwcbwdbwebwebwfbwgbQwbwibwjbwkbwlbwmbwnbwoboObwpbwqbwrbtqbwsbwtboOaZWaZmaahaahbgmbgmbgmbgmbAQbwvbwwbmfbyUbwybwzbkJbkJbGRbkJbwAbwBbwCbgmbgmaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaacAaaabtEbvcbtGaaabtEbvcbtGaaabtEbvcbtGaaabtEbvcbtGaaabtEbvcbtGaaaaadaaaaaaaadaadaaaaaaaaaaaabtHbwDbwEbwFbtHbwGbwHbwIbwJbwKbwLbkObkPbkRbkQbkSbkPbkPaahaahahyahyahyahybtHbtHbYedoobwMbwMbwMbwMbwMbwMbwMbwMbwMbwNbwObwPbdTbrAbwRbwSbwTbMNbwUbuabsCbucbwVbwWbwXbllbwYbwZbwYbllahybeebeeblmblnblobboahyahyaahaahaahaahaahaahaahbjWbjWbjWcuwcuvbZgcuHcvCbjWbjWbjWaahaahaZdaZdaZHaZdaZdahyahyahyaZIaZJaZKaZLaZIaZIaZJaZKaZLaZIaZIaZJaZKaZLaZIahyahyahyahyaToaZjblDaZlaToaToahybxcbxdbxebvSbxfbxgbxhbxibsXanAbxkbxlbxmbvYbvYbxnbqhbxpbxqbthbthbxrbtfbxsbxtbxubxvbxwbxxbADbvRboOboOboOboObxAboOboOboOaZWaZmaahaahaahaahaahbgmbxBbxCbkJbxDbkJbxBbxEbkJbxFbxGbkJbxHbxIbkJbgmaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaabtEbvcbtGaaabtEbvcbtGaaabtEbvcbtGaaabtEbvcbtGaaabtEbvcbtGaaaaadaaaaaaaaaaadaadaaaaaaaaabtHbxJbxKbxLbtHdDfbxMbxNbxObxPbxQbtLaahaahaahahyahyaahaahahyahyahyahyaahaahbtHbEUbwMbwMbxRbxSbxTbxUbxVbxWbxXbwMbxYbxZbyabdTbybbycbydbyebdTbyfbuabygbyhbyhbyhbyhbyhbyibyjbykbyhbfzbeebylaZzbcnbymbboaZdaahaahaahaahaahaahaahaahaahbjWbjWbjWbvDbjWbjWbjWbjWbjWaahaahaZdaZdaZGaZHaZGaZdaZdahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyaZdaToaYGbynbiPbyoaTobypbyqbyrbysbytbyubyvbywbyxbyybyzbyAbyBbyCbvYbxobsXbyEbtbbyFbyGbyHbyIbyJbyKbyLbyMbyNbxybyPbyQbyRbySbIxbCLbyVbyWbyXbyYbySaZWaZmaahaahaahaahaahbgmbyZbzabzbbzcbzdbzebzfbzgbzhbzibkJdkQbzkbzlbgmaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAacAacAaadaaabtEbvcbtGaaabtEbvcbtGaaabtEbvcbtGaaabtEbvcbtGaaabtEbvcbtGaaaaadaaaaaaaaaaaaaadbzmbznbznbznbznbzobtHbtHbtLbzpbzqbzrbzsawybtLaahaahaahaahahyahyahyahyahyahyaahaahaahbtHbEUbwMbzubzvbzwbzxbzybzzbzAbzBbzCbzDbzEbzFbzGbzHbzIbzJbzKbzLbzMbzNbzObzPbzQbzRbzSbzPbzTbzUbzVbzWbzXbzYbecbajbhqbhrbzZaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaahaahblubxablubluaZdaZdaZdaZdaZdaZdbAabAbbAcbAdaZGaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdbAebAfbAgbAhaUvbAibAjbAkbvSbAlbvSbAmbxgbAnbAobuCbApbAqbArbAsbAtbAubuCbAvbAwbqmbAxbAxbAybtfbAzbwibAAbABbACbADbAEbAFbySbAGbAHbAIbyWbyWbAJbySbAKaZmaahaahaahaahaahbgmbgmdkRbAMbANbAObAPcBYbARbASbATbAUbAVbAWbAXbgmaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaaaadaaaaaaaadaivaadaaaaadaivaadaaaaadaivaadaaaaadaivaadaaaaadaivaadaaaaadaaaaaabkfbBabBabBbbBcbBdbBebBfbBgbBhbBibtLbBjbBkbBlbBmbztbtLaahaahaahaahaahahyahyahyahyaahaahaahaahbtHbEUbwMbBnbzwbBobBpbBqbBrbBsbBrbBtbBubBvbBwbBxbjJbBybjJbBzbjJbjJbBAbBBbBCbBDbBEbBFbBGbBHbBIbBJbBKbBLbBMbBNbBObBPbBQbBRbBSbBTbBUbBUbBUbBUbBVbBUbBWaZdaZdaZdaZdbBXaZdaZdaZdbBYbBZbBZbBZbBZbBZbCabCbbCcbCdbCdbCdbCdbCdbCdbCdbCebCdbCdbCdbCfbCgbCgbCgbCgbCgbCgbCgbCgbChbCgbCibCjbCkbClbCmbbRbCnbCobCpbCqbCrbvQbCsbvSbCtbCubwabCvbCwbCxbCzbyDbCybwabCBbCCbCDbCEbCEbCFbCGbwhbxtbCHbCIbCJbCKbIcbySbySbCMbCNbCObCPbyWbAJbySbAKaZmaahaahaahaahaahaahbgmbgmbgmbJJbCRbgmbgmbgmbgmbgmbgmbCSbCTbgmbgmaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAacAacAaadaaabtEbvcbtGaaabtEbvcbtGaaabtEbvcbtGaaabtEbvcbtGaaabtEbvcbtGaaaaadaaaaaaaaaaaaaadbzmbznbznbznbznbzobtHbtHbtLbzpbzqbzrbzsawybtLaahaahaahaahahyahyahyahyahyahyaahaahaahbtHbEUbwMbzubzvbzwbzxbzybzzbzAbzBbzCbzDbzEbzFbzGbzHbzIbzJbzKbzLbzMbzNbzObzPbzQbzRbzSbzPbzTbzUbzVbzWbzXbzYbecbajbhqbhrbzZaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaahaahblubxablubluaZdaZdaZdaZdaZdaZdbAabAbbAcbAdaZGaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdbAebAfbAgbAhaUvbAibAjbAkbvSbAlbvSbAmbxgbAnbBEbuCbApbAqbArbAsbAtbAubuCdopbAwbqmbAxbAxbAybtfbAzbwibAAbABbACbADbAEbAFbySbAGbAHbAIbyWbyWbAJbySbAKaZmaahaahaahaahaahbgmbgmdkRbAMbANbAObAPcBYbARbASbATbAUbAVbAWbAXbgmaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaaaadaaaaaaaadaivaadaaaaadaivaadaaaaadaivaadaaaaadaivaadaaaaadaivaadaaaaadaaaaaabkfbBabBabBbbBcbBdbBebBfbBgbBhbBibtLbBjbBkbBlbBmbztbtLaahaahaahaahaahahyahyahyahyaahaahaahaahbtHbEUbwMbBnbzwbBobBpbBqbBrbBsbBrbBtbBubBvbBwbBxbjJbBybjJbBzbjJbjJbBAbBBbBCbBDcMebBFbBGbBHbBIbBJbBKbBLbBMbBNbBObBPbBQbBRbBSbBTbBUbBUbBUbBUbBVbBUbBWaZdaZdaZdaZdbBXaZdaZdaZdbBYbBZbBZbBZbBZbBZbCabCbbCcbCdbCdbCdbCdbCdbCdbCdbCebCdbCdbCdbCfbCgbCgbCgbCgbCgbCgbCgbCgbChbCgbCibCjbCkbClbCmbbRbCnbCobCpbCqbCrbvQbCsbvSbCtbCubwabCvbCwbCxbCzbyDbCybwabCBbCCbCDbCEbCEbCFbCGbwhbxtbCHbCIbCJbCKbIcbySbySbCMbCNbCObCPbyWbAJbySbAKaZmaahaahaahaahaahaahbgmbgmbgmbJJbCRbgmbgmbgmbgmbgmbgmbCSbCTbgmbgmaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaadbCUbCVbCVbCVbAYbCVbCVbCVbAYbCVbCVbCVbAYbCVbCVbCVbAYbCVbCVbCVbAYbCVbCVbCVbCVdiNbAZbDabCZbDcbDdbDebDfbDgbDhbDibDjbtLbtLbDkbtLbtLbDlbtLaahaahaahaahaahaahaahahyahyaahaahaahaahbtHbEUbwMbDmbDnbDobDpbDqbDrbDsbDtbwMbDubDvbDwbDxbDybDzbDAbDBbDCbDDbDEbDFbyhbDGbDHbDIbDJbDKbDLbzVbzWbzXbzYbecbecbDMbDNbDOaZdbDPbDQbDRbDSbDTbDUbDVbDWbDXbDYbDZbEabEbbBUbBUbBUbEcaZdaZdaZdaZdaZGbEdbEebEfbEgbEgbEgbEgbEgbEgbEgbEhbEgbEgbEgbEibEjbEjbEjbEjbEjbEjbEjbEkbiDbjYaZdbElaYGbetbEmaVlbEnbEobEpbEqbErbEsbEtbEubEvbEwbsXbsYbsZbExbsYbEybsZbsXbEzbtbbyFbyGbyHbEAbtfbEBbuKbECbEDbuKbySbySbySdBabEFbEGbEHbEIbyWbAJbySbAKaZmaahaahaahaahaahaahaahbgmbEJbEKbELbgmaahaahaahaahbgmbgmbgmbgmaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaaaadaaaaaaaadaivaadaaaaadaivaadaaaaadaivaadaaaaadaivaadaaaaadaivaadaaaaadaaaaaabkfbBabBabENbEObEPbEQbznbERbESbETbEUbEUbEVbEWbtHbEXbtHaahaahaahaahaahaahaahaahaahaahaahaahaahbtHbEUbwMbEYbEZbFabFbbFcbFdbFebFfbwMbFgbfubFhbFibFjbFkbFlbFmbFibFnbFobFnbyhbyhbyhbyhbyhbrDbFqbFrbyhbfzbeebFsbecbcnbFtbboaZdbFubFubFubFubFubFubFvbFwaZdbFxbFybFxaZdbFzbFAbFBbFCaZdaahaahaZdaZdaZGaZHaZGbFDbFEbFFbFGbEgbFHaylbFJaLTaLSbFLbFMbFpbFNbFPbFNbHvbHubEjbFQbEjaZdaZdaTobFRbgJaUvbFSaTobypbyqbFTbAlbFUbFVbFWbFXbEqbFYbFZbGabGbbGcbGdbGebGfbGgbGhbGibGjbGjbGkbGlbtbbGmbGnbGobGpbySbGqbGrbGsbGtbGubGvbGwbyWbAJbySaZWaZmaZmaahaahaahaahaahaahbgmbxzbGybGzbgmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAacAacAaadaadbtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaaaadaaaaaaaaaaaaaaabGBbznbznbznbznbtHbtHbGCbGDbDibGEbGFbGGbGHbtHaahaahaahaahaahaahaahaahaahaahaahaahaahbtHbEUbwMbwMbwMbGIbGJbGJbGJbwMbwMbwMbGKbGLbyfbGMbGNbGObGPbGQbFibGSbGUbGTbGWbGVbIsbGXbGYbFnbGZbFnbGYahybeebeebHabcnbecbHbbHcbFubHdbyObHfbHgbFubFubFubFuawzbHibHhbHjbHjbHkbHlbHjbHmaahaahaahaZdaZdaZHbEgbEgbHnbHobHpbEgaMnbHrbHsbHsbHsbHtbHwbHybHxbHxbHzbKBbJbbHAbHBbEjahyahyaToaZjblDbHCaToaToahybxcbHDbHEbCqbHFbHGbHHbCqbHIbHJbHKbHLbHMbHNbHMbHObHPbHPbHQbHPbHPbHRbHSbHTbHUbHVbHWdBkbySbHYbHZbIabGtbGubGvbIbbyWbAJbySbbbbJraZmaahaahaahaahaahaahbgmbHebIedGPbgmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaaaadaaaaaaaaaaahaahaahaahaahaahaahaahbtHbtHbtHbtHbtHbIgbIhbIibtHaahaahaahaahaahaahaahaahaahaahaahaahaahbtHbEUbwMbIjbGJbGIbGJbGJbGJbGJbIkbwMbIlbfubImbInbIobIpbIqbIrbFibItbIAbIybIubIubIwbIubJXbJWbIzbJYbKcahyahybIBbecbRQbecbICbHcbIDbFObIFbIFbIGbIHbIIbIJbFuaxjaxibIMbHjbINbIObIPbHjaahaahaahaahaZdaZGaZHbEgbIQbIRbISbITbEgaMWbIVbIWbFJbFJbIXbIYbIZbJabJabJabJabJabJbbJcbJdahyahybJeaYGbRSaUvbpPahyahybuobosbvSbvSbJfbJgbvSbvSbJhbJibJjbJkbxqbJlbJmbJnbthbJobJpbJqbKLbJsbJtbJubJvbJwbJxbJybJzbJAbJBbJCbJDbJEbJFbJGbJHbJIbySbglbfpaZmaahaahaahaahaahaahbgmbgmbLDbJKbgmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaaacAaaaaaaaahaahahyahyahyahyahyahyahyahyaahaahaahbtHbtHbJLbIibtHaahaahaahaahaahaahaahaahaahaahaahaahbtHbtHbEUbwMbJMbGJbJNbJObGJbGJbGJbIkbwMbJPbtUbJQbJRbJSbIdbJUbJVbFibGYbKabJZbIubIubIubIubKbbIubIubLzboTahyahybKdbecbcnbecbKebHcbIEbKgbKhbKibKjbKhbKhbKkbFubKlbILbKmbHjbKnbKobKpbHjaahaahaahaahaZdbKqaZHbEgbIQbKrbKsbKtbEgbKfbKvbKwbFJbKxbKycuybKAbJabJabJabJabJabKBbKCbKDahyahybrGbKEbynbKFbrGahyahybvObsDbKHbKHbKIbKKbMHaGMbKNbKNbKObKPbKQbKRbKNbKSbKTbKUbKVbKSbKWbKWbKWbKWbKWbKXbKYbKZbLabySbySbySbySbySbySbySbySbySbySbLbbLcaZmbLdbLebLebLebLdbLdbLfbLgbLhbLibLfbLdaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaadbtEbGAbtGaadbtEbGAbtGaadbtEbGAbtGaadbtEbGAbtGaadbtEbGAbtGaadacAaaabLjaahbLkbLkbLlbkQbkQbkQbLmbLkbLkahyaahaahaahbtHbLnbIibtHaahaahaahaahaahaahaahaahaahaahaahaahbtHbZhbEUbwMbLobLpbLqbGJbLrbGJbLsbwMbwMbLtbfubImbFibLubLvbLwbLxbLybGYbLCbLBbIvbIubIubIubKbbIvbIubLEboTahyahybKdbLGbhqbecbKebHcbKubLIbKhbLJbLKbLMbZjbLNbLObLPbLQbLRbLSbLTbLUbLVbHjaahaahaahaahaZdaZdaZHbEgbEgbLWbEgbEgbEgbLXbLYcAgbMabKxbMbcuBbMdbMebMfbMgbMhbKBbKBbMibKDahyahybvNbMjbgJaUvbvNahyahybMkbMlbMmbKJbOcbMkbMkbMkbMkaPubMqbMrbMsbMtbMsbKSbMubMvbMwbMxbKWbMybMzbMAbMBbMCbMDbMEbMFbMGbOdbMIbMJbRXbMLbMMdFecbabUSbMQbMRbMSbMTbMUbMVbMWbMXbMYbMZbNabNbbNabNcbLdaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOaaabtEbNdbtGaaabtEbNdbtGaaabtEbNdbtGaaabtEbNdbtGaaabtEbNdbtGaaaaadaadbLjaahbLkbNebNfbNgbNfbNgbNfbNebLkahyahyaahaahbtHbNhbIibtHbtHaahaahaahaahaahaahaahaahaahaahaahbtHcapbEUbwMbwMbwMbwMbwMbwMbwMbwMbwMbNibNjbfubyfbGMbNkbNlbNmbLxbNnbGYbPkbNsbRfbPnaxraxUbRibRfbRkbRjbLFahyahybKdbecbDMbDNbKebNtbFubNubKhbNvbNwcaqbPsbNybFubNzbNAaGUbNCbNCbNCbNCbNCbNCbNCbNCaahaahaZdaZHbEgbNDbNEaMYaMXbNHbFJbFJaMZbFJbNJbEgbNKbNLbNMbNNbNObKBbNPbNQbNRbNSahyahyaTobNTbetbNUaToahyahybMkbNVbNWbNXbNYbSkbUXbMnbMobNBbMqbMrbOebOfbOgbKSbOhbOibOjbOkbKWbOlbOmbOnbOobOpbOqbOrbOsbOtbOtbOubOvbOqbOtbOwbOtbOxbOybOzbOAbOBbOCbODbOEbOEbOFbOEbOGbOHbOIbOJbOKbLdaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaaaadaaaaaaaaaaadaadaadaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaadaaaaadaadaahaahaahbOLbOMbONbOObOPbOQbOLbORahyahyaahaahbtHbOSbIibOTbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHcbKbOVbOWbOXbOYbOZbzHbPabPbbPcbPdbPebPfbPgbImbInbIobPhbPibLxbPjbGYbSRbSQbSSbNqbNqbNrbNpbSSbRlbSTbGYahyahybKdbecbcnbecbPobHcbFubPpbKhbPqbPrbKhbPsbPtbFubPubPvbPwbNCbPxbPybPzbPAbNCbPBbNCbNCaahaZdaZHbEgbPCbPDbPEbPEbPFbPEbPEaNabFJbPHbEgbPIbPJbPKbPLbPMbPNbPIbPJbPKbEjbPObPPaToaZjblDbHCaToaToahybMkbPQbPRbPSbPTbPUbPVbPWbPXbPYbPZbQabQbbQcbQdbKSbQebQfbQgbQhbKWbQibQjbQkbMBbQlbQmbQnbQobQpbQqbQrbQsbQtbQpbQubQvdGRbMPbMQbQxbQybQzbMUbMVbWWbQBbOJanDbQDbQEbOJcAfbLdaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaaaadaaaaaaaadaivaadaaaaadaivaadaaaaadaivaadaaaaadaivaadaaaaadaivaadaaaaadaaaaaabkfbBabBabENbEObEPbEQbznbERbESbETbEUbEUbEVbEWbtHbEXbtHaahaahaahaahaahaahaahaahaahaahaahaahaahbtHbEUbwMbEYbEZbFabFbbFcbFdbFebFfbwMbFgbfubFhbFibFjbFkbFlbFmbFibFnbFobFnbyhbyhbyhbyhbyhbrDbFqbFrbyhbfzbeebFsbecbcnbFtbboaZdbFubFubFubFubFubFubFvdoyaZdbFxbFybFxaZdbFzbFAbFBdoCaZdaahaahaZdaZdaZGaZHaZGbFDbFEbFFbFGbEgbFHaylbFJaLTaLSbFLbFMbFpbFNbFPbFNbHvbHubEjbFQbEjaZdaZdaTobFRbgJaUvbFSaTobypbyqbFTbAlbFUbFVbFWbFXbEqbFYbFZbGabGbbGcbGdbGebGfbGgbGhbGibGjbGjbGkbGlbtbbGmbGnbGobGpbySdoSbGrbGsbGtbGubGvbGwbyWbAJbySaZWaZmaZmaahaahaahaahaahaahbgmbxzbGydpKbgmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAacAacAaadaadbtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaaaadaaaaaaaaaaaaaaabGBbznbznbznbznbtHbtHbGCbGDbDibGEbGFbGGbGHbtHaahaahaahaahaahaahaahaahaahaahaahaahaahbtHbEUbwMbwMbwMbGIbGJbGJbGJbwMbwMbwMbGKbGLbyfbGMbGNbGObGPbGQbFibGSbGUbGTbGWbGVbIsbGXbGYbFnbGZbFnbGYahybeebeebHabcnbecbHbbHcbFubHdbyObHfbHgbFubFubFubFuawzbHibHhbHjbHjbHkbHlbHjbHmaahaahaahaZdaZdaZHbEgbEgbHnbHobHpbEgaMnbHrbHsbHsbHsbHtbHwbHybHxbHxbHzbKBbJbbHAbHBbEjahyahyaToaZjblDbHCaToaToahybxcbHDbHEbCqbHFbHGbHHbCqbHIbHJbHKbHLbHMbHNbHMbHObHPbHPbHQbHPbHPbHRbHSbHTbHUbHVbHWdBkbySbHYbHZbIabGtbGubGvbIbbyWbAJbySbbbdpMaZmaahaahaahaahaahaahbgmbHebIedGPbgmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaaaadaaaaaaaaaaahaahaahaahaahaahaahaahbtHbtHbtHbtHbtHdqabIhbIibtHaahaahaahaahaahaahaahaahaahaahaahaahaahbtHbEUbwMbIjbGJbGIbGJbGJbGJbGJbIkbwMbIlbfubImbInbIobIpbIqbIrbFibItbIAbIybIubIubIwbIubJXbJWbIzbJYbKcahyahybIBbecbRQbecbICbHcbIDbFObIFbIFbIGbIHbIIbIJbFuaxjaxibIMbHjbINbIObIPbHjaahaahaahaahaZdaZGaZHbEgbIQbIRbISbITbEgaMWbIVbIWbFJbFJbIXbIYbIZbJabJabJabJabJabJbbJcbJdahyahybJeaYGbRSaUvbpPahyahybuobosbvSbvSbJfbJgbvSbvSbJhbJibJjbJkbxqbJlbJmbJnbthbJobJpbJqbKLbJsbJtbJubJvbJwbJxbJybJzbJAbJBbJCbJDbJEbJFbJGbJHbJIbySbglbfpaZmaahaahaahaahaahaahbgmbgmbLDbJKbgmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaaacAaaaaaaaahaahahyahyahyahyahyahyahyahyaahaahaahbtHbtHdqbbIibtHaahaahaahaahaahaahaahaahaahaahaahaahbtHbtHbEUbwMbJMbGJbJNbJObGJbGJbGJbIkbwMbJPbtUbJQbJRbJSbIdbJUbJVbFibGYbKabJZbIubIubIubIubKbbIubIubLzboTahyahybKdbecbcnbecbKebHcbIEbKgbKhbKibKjbKhbKhbKkbFubKlbILbKmbHjbKnbKobKpbHjaahaahaahaahaZdbKqaZHbEgbIQbKrbKsbKtbEgbKfbKvbKwbFJbKxbKycuybKAbJabJabJabJabJabKBbKCbKDahyahybrGbKEbynbKFbrGahyahybvObsDbKHbKHbKIbKKbMHaGMbKNbKNbKObKPbKQbKRbKNbKSbKTbKUbKVbKSbKWbKWbKWbKWbKWbKXbKYbKZbLabySbySbySbySbySbySbySbySbySbySbLbbLcaZmbLdbLebLebLebLdbLdbLfbLgbLhbLibLfbLdaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaadbtEbGAbtGaadbtEbGAbtGaadbtEbGAbtGaadbtEbGAbtGaadbtEbGAbtGaadacAaaabLjaahbLkbLkbLlbkQbkQbkQbLmbLkbLkahyaahaahaahbtHbLnbIibtHaahaahaahaahaahaahaahaahaahaahaahaahbtHdqcbEUbwMbLobLpbLqbGJbLrbGJbLsbwMbwMbLtbfubImbFibLubLvbLwbLxbLybGYbLCbLBbIvbIubIubIubKbbIvbIubLEboTahyahybKdbLGbhqbecbKebHcbKubLIbKhbLJbLKbLMbZjbLNbLObLPbLQbLRbLSbLTbLUbLVbHjaahaahaahaahaZdaZdaZHbEgbEgbLWbEgbEgbEgbLXbLYcAgbMabKxbMbcuBbMdbMebMfbMgbMhbKBbKBbMibKDahyahybvNbMjbgJaUvbvNahyahybMkbMlbMmbKJbOcbMkbMkbMkbMkdqdbMqbMrbMsbMtbMsbKSbMubMvbMwbMxbKWbMybMzbMAbMBbMCbMDbMEbMFbMGbOdbMIbMJbRXbMLbMMdFecbabUSbMQbMRbMSbMTbMUbMVbMWbMXbMYbMZbNabNbbNabNcbLdaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOaaabtEbNdbtGaaabtEbNdbtGaaabtEbNdbtGaaabtEbNdbtGaaabtEbNdbtGaaaaadaadbLjaahbLkbNebNfbNgbNfbNgbNfbNebLkahyahyaahaahbtHdqebIibtHbtHaahaahaahaahaahaahaahaahaahaahaahbtHcapbEUbwMbwMbwMbwMbwMbwMbwMbwMbwMbNibNjbfubyfbGMbNkbNlbNmbLxbNnbGYbPkbNsbRfbPnaxraxUbRibRfbRkbRjbLFahyahybKdbecbDMbDNbKebNtbFubNubKhbNvbNwcaqbPsbNybFubNzbNAaGUbNCbNCbNCbNCbNCbNCbNCbNCaahaahaZdaZHbEgbNDbNEaMYaMXbNHbFJbFJaMZbFJbNJbEgbNKbNLbNMbNNbNObKBbNPbNQbNRbNSahyahyaTobNTbetbNUaToahyahybMkbNVbNWbNXbNYbSkbUXbMnbModqPbMqbMrbOebOfbOgbKSbOhbOibOjbOkbKWbOlbOmbOnbOobOpbOqbOrbOsbOtbOtbOubOvbOqbOtbOwbOtbOxbOybOzbOAbOBbOCbODbOEbOEbOFbOEbOGbOHbOIbOJbOKbLdaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaaaadaaaaaaaaaaadaadaadaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaadaaaaadaadaahaahaahbOLdrabONbOObOPbOQbOLbORahyahyaahaahbtHbOSbIibOTbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHcbKbOVbOWbOXbOYbOZbzHbPabPbbPcbPdbPebPfbPgbImbInbIobPhbPibLxbPjbGYbSRbSQbSSbNqbNqbNrbNpbSSbRlbSTbGYahyahybKdbecbcnbecbPobHcbFubPpbKhbPqbPrbKhbPsbPtbFubPubPvbPwbNCbPxbPybPzbPAbNCbPBbNCbNCaahaZdaZHbEgbPCbPDbPEbPEbPFbPEbPEaNabFJbPHbEgbPIbPJbPKbPLbPMbPNbPIbPJbPKbEjbPObPPaToaZjblDbHCaToaToahybMkbPQbPRbPSbPTbPUbPVbPWbPXbPYbPZbQabQbbQcbQdbKSbQebQfbQgbQhbKWbQibQjbQkbMBbQlbQmbQnbQobQpbQqbQrbQsbQtbQpbQubQvdGRbMPbMQbQxbQybQzbMUbMVbWWbQBbOJanDbQDbQEbOJcAfbLdaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAacAacAaczaczacOacAaadaadaadacAaadaadaadaadaaaaaaaaaaadaadaadacOaadaaaaahaahaahbNgbQFbQGbQHbQHbQIbNgahyahyahyaahaahbtHbQJbQKbQLbQLbQLcbNbQLbQLbQLbQLbQLbQLbQLbQLbQLbQLbQMbQNbQObQPbQQbQRbQSbQTbQUbQVbQWbQXbQYbQZbyfbJRbRabRbbRcbRdbRebGYbNobNpbNpbNpbNpbNpbNpbNpbRlbSUbGYahyahybKdbecbcnbRmbRnbRobRpbRqbRrbRsbRtcvjcoFbRwbFubRxbPvbRybNCbRzbRAbRBbRBbRCbRDbREbNCaahaZdaZHbEgcSPbRGbFJbRHbRIbFJbFJbFJbFJbRJbEgbupbTlbTkbRNbRObRPbRObRPbvEbRTbRUbRUcCibRWbetaUvbvFaToahybMkbRYbRZbSabNWbSbbScbSdbSebSfbSgbShbSibMpbvIbKSbXibQfbSlbSmbKWbKWbKWbKWbKWbSnbSobSpbSpbSpbSpbSpbSqbSrbSqbSqbSqbSqbSqbSsbStbSubSvbSwbSwbSwbLdbLdbSxbSycNtbSxbLdbLdaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahbOLbSAbQGbQHbQHbSBbOLbORahyahyaahaahbtHbSCbIibSDbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbSEbSEbSFbSGbSEbSHbSIbSJbSKbSLbSMbSNbSObSPbSLbSLbSLbSLbSLbGYbUDbPlbPmbNpbNpbSzcpCcpubRlbXTbGYahyahybKdbecbcnbSVbbobbobFubFubFubFubFubSWbFubFubFubSXbSYbSZbNCbTabTbbTcbTdbNCbTebTfbNCaahaZdaZHbEgbFLbvJbEgbEgbThbTibTibTibTibEgbEgbTjbTkbTlbTmbTnbTkbTlbTkbTobTpaUvaUvaUvaUvbTqbTrbTsaToahybMkbGxbTubTvbTubTtbScbTxbTybVhbTAbTBbTCcCjbTEbKSbTFbTGbTHbTIbTJbTKbTLbTMbTNbTObTPbTQbTRbTSbTTbSpbTUbTVbTWbOabTXbTZbSqbUabUbbSubUcbUdbUebSuaahaahbSxbUfbUgbSxaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahbOLbSAbQGbQHbQHbSBbOLbORahyahyaahaahbtHdrdbIibSDbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbSEbSEbSFbSGbSEbSHbSIbSJbSKbSLbSMbSNbSObSPbSLbSLbSLbSLbSLbGYbUDbPlbPmbNpbNpbSzcpCcpubRlbXTbGYahyahybKdbecbcnbSVbbobbobFubFubFubFubFubSWbFubFubFubSXbSYbSZbNCbTabTbaAIbTdbNCbTebTfbNCaahaZdaZHbEgbFLbvJbEgbEgbThbTibTibTibTibEgbEgbTjbTkbTlbTmbTnbTkbTlbTkbTobTpaUvaUvaUvaUvbTqbTrbTsaToahybMkbGxbTubTvbTubTtbScbTxbTybVhbTAbTBbTCcCjbTEbKSbTFbTGbTHbTIbTJbTKbTLbTMbTNbTObTPbTQbTRbTSbTTbSpbTUbTVbTWbOabTXdrebSqbUabUbbSubUcbUdbUebSuaahaahbSxbUfbUgbSxaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahbLkbNebNfbNgbUhbNgbNfbNebLkahyahyaahaahbtHbtHbIibtHbtHaahaahaahaahaahaahaahaahaahaahaahaahaahaahbSEbUibUjbUkbUlbSEbUmbUnbUnbUobUpbUqbUrbUsbUtbUubUvbUwbUxbGYbXUbRgbYYbNpbNpcbIbRgcGibRlcGQbGYahyahybKdbecbcnaZzbUFahybUGcbJcUbbUJbUKbULcVLbLHbUGbUNbUObUPbNCbNCbIKbNCbNCbNCbNCbNCbNCaahaZdaZHaZdcZhbUTbUUbUVbUWbUWbUWbUWbUWbYobUYbTkbTlbUZbVabVbbVcbTkbTlbVdbVeaUvaUvcCpbVgbdvaUvbvPaToahybMkbVibVjbVkbVlbVmbVnbVobVpbVqbVrbVsbMpcCMcDxbKSbKSbKSbKSbKSbTJbVtbVubVvbVwbVxbVybVzbVAbVBbVCbSpbVDbVEbVFbVGbVGbVHbSqbVIbVJbSubVKbVLbVMbSuaahaahbSxbVNcAhbSxaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahbLkbLlbVPbVQbVRbVSbVTbLmbLkahyaahaahaahaahbtHbIibtHaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbSEbVUbVVbVWbVXbVYbVZbWabWbbWcbWdbWebWfbWgbWhbWibWibWjbWkbUEcNkcIgcNkdHrdHrcNkdHscNkdHtcNkbUEahyahybKdbWobcnaZzbamahybWpcascZicZjcasbULbULcZvbYfbYgdaybUPbWxbWybWzbWAbWBbWCbWDbWEbNCaahaZdbWFanEbWHbWIbWJclZbWLbWKbTwbWKbWLbWKbWJbTlbTkbWNdBObVabWPbTlbTkbWQbURbPObPPaTobHCblDbHCaToaToahybMkbWRbWSbMkbWRbWSbMkbMkbMkbYAbWUbWVbCAbKNbKNbKNaahaahaahaahbTJbWXbWYbWZbTNbXabXbbTQbXcbXdbXebSpbXfbXgbXhcccbXjbXkbSqbXlbXmbXnbXobXpbSubSuaahaahbSxbXqbXrbSxbSxaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahbLkbLlbVPbVQbVRbVSbVTbLmbLkahyaahaahaahaahbtHbIibtHaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbSEbVUbVVbVWbVXbVYbVZbWabWbbWcbWdbWebWfbWgbWhbWibWibWjbWkbUEcNkcIgcNkdHrdHrcNkdHscNkdHtcNkbUEahyahybKdbWobcnaZzbamahybWpcascZicZjcasbULbULcZvbYfbYgdaybUPbWxbWybWzbWAbWBbWCbWDbWEbNCaahaZdbWFanEbWHbWIbWJclZbWLbWKbTwbWKbWLbWKbWJbTlbTkbWNdBObVabWPbTlbTkbWQbURbPObPPaTobHCblDbHCaToaToahybMkbWRbWSbMkbWRbWSbMkbMkbMkbYAbWUbWVbCAbKNbKNbKNaahaahaahaahbTJbWXbWYbWZbTNbXabXbbTQbXcbXdbXebSpdrhbXgbXhdrHbXjbXkbSqbXlbXmbXnbXobXpbSubSuaahaahbSxbXqbXrbSxbSxaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahahyahybXsbXtbXubXvbXsahyahyahyaahaahaahaahbtHbIibtHaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbSEbXwbXxbXybXzbXAbXBbXCbXDbXEbXFbXGbXHbXIbXJbXKbXLbXMbXNbUEbUybUzbUAbUBbUBbUybUzbUybUCanGbUEahyahybKdbXVbhqbXWbamahybXXdaAdazdaCdaBdaRdaOciCbUGbWvdbZbYibYjbYjbYkbNFbLAbYnbYnbTYbNCaahaZdbYpaZddcabTkbTlbWJbYrbWJbYrbWJbYrbWJbYsbTkbTlbUZbYtbVbbVcbTkbTlcgwbURahyahyaTobYvbetbYwaToahyahyahyahyahyahyahyahyahyahybKNbKNbYxbYybKNbKNaahaahaahaahaahaahbTJbTJbTJbTJbTJbYzciWbSpbSpbSpbSpbSpbSqbSqbSqbSqbSqbSqbSqbYBbYCbSubSubSubSuaahaahaahbSxbYDbVObYEbSxaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahahybYFbYGbYHbYIbYFahyahyahyaahaahaahaahbtHbYJbtHaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbSEbYKbYLbYMbYNbYObYPbXMbYQbYRbYSbYTbYUbYRbYQbXMbXMbXMbYVbUEbWlbWmbWlbWnbUBbWlbWmbWlbUCanGbUEahyahyanHbecbDMbZbbamahybZcdcqdcbddebZibULddydeAddCbWvbZkbZlbZmbZnbZobZpbZqbZrbZsbUQbNCaahaZdbYpaZdaZdbTlbTkbTlbTkbTlbTkbTlbTkbTlbTkbTlbTkbTlbZvbTjbZwbTlbTkbTjbZybZxahybJeaUvbetaUvbJeahyahyahyahyahyahyahyahyahyahyahybZzbZAbZBbZzbeubeubeubeubeubeuaahbZCbZDbZEbZFbZGbTObTPbZHbZIbZJbZKbZLaahaahaahaahaahaahbZMbZNbZObZPbZQbZMaahaahaahaahbSxbZRbZSbZTbSxaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahahybZUbZVbZWbZUbZUahyahyaahaahaahaahaahbZXbZYbZXaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbSEbZZcaacabcacbSEcadcaecaecaecafcagcahcaicaecaecaecajcakbUEbXObUBbUBbXPbXQbXRbXRbXRbXSdHwbUEahyahyanIbecbcnaZzdHyahycaocascardeBbWtbULdeHdeIbUGbWvcatcaucavcavcawcaxcaybYnbYncazbNCaahaZdbYpanJaZdcaAbTlbTkbTlbTkbTlbTkbTlbTkbTlbTkbTlbTkcaCcaDcaEcaFcaGcaHcaIahyahybrGaUvbetcaJbrGahyahyahyahyahyahyahyahyahyahyahycaKcaLcaMcaNbeubZMbZMbZMbZMbeuaahbZCcaOcaPcaQcaRcaScaTcaUcaVcaWcaXbZLaahaahaahaahaahaahbZMcaYcaZbJTcbbbZMaahaahaahaahcbccbdcbecbfcbcaahahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahahybYFbYGbYHbYIbYFahyahyahyaahaahaahaahbtHbYJbtHaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbSEbYKbYLbYMbYNbYObYPbXMbYQbYRbYSbYTbYUbYRbYQbXMbXMbXMbYVbUEbWlbWmbWlbWnbUBbWlbWmbWlbUCanGbUEahyahyanHbecbDMbZbbamahybZcdcqdcbddebZibULddydeAddCbWvbZkbZlbZmbZnbZobZpbZqbZrbZsbUQbNCaahaZdbYpaZdaZdbTlbTkbTlbTkbTlbTkbTlbTkbTlbTkdalbTkbTlbZvbTjbZwbTlbTkbTjbZybZxahybJeaUvbetaUvbJeahyahyahyahyahyahyahyahyahyahyahybZzbZAbZBbZzbeubeubeubeubeubeuaahbZCbZDbZEbZFbZGbTObTPbZHbZIbZJbZKbZLaahaahaahaahaahaahbZMbZNbZObZPbZQbZMaahaahaahaahbSxbZRbZSbZTbSxaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahahybZUbZVbZWbZUbZUahyahyaahaahaahaahaahbZXbZYbZXaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbSEbZZcaacabcacbSEcadcaecaecaecafcagcahcaicaecaecaecajcakbUEbXObUBbUBbXPbXQbXRbXRbXRbXSdHwbUEahyahyanIbecbcnaZzdHyahycaocascardeBbWtbULdeHdeIbUGbWvcatcaucavcavcawcaxcaybYnbYncazbNCaahaZdbYpanJaZdcaAbTlbTkbTlbTkbTlbTkbTlbTkbTlbTkbTlbTkcaCcaDcaEcaFcaGcaHcaIahyahybrGaUvbetcaJbrGahyahyahyahyahyahyahyahyahyahyahycaKcaLcaMcaNbeudrZbZMbZMbZMbeuaahbZCcaOcaPcaQcaRcaScaTcaUcaVcaWcaXbZLaahaahaahaahaahaahbZMcaYcaZbJTcbbbZMaahaahaahaahcbccbdcbecbfcbcaahahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahahycbgcbhcbicbjcbgahyahyaahaahaahaahaahbZXbZYbZXaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbSEcbkcblcbmcbnbSEbNZcbpcbqcbrcbscbtcbucbvcbwcbxcbycbzcbAbUEbWlbWmbWlbYWbUBbWlbWmbWlbYXdHzbUEbYZbZabeeccHdHAdHBbeeahybUGbZdbULcbLcbMdfxdfvbUGcbOcbPcbQcbObNCcbRcbScbTcbUcbVcbWcbXbNCaahaZdbYpaZGaZdanSbTkbTlbTmbTnbTkbTlbTkcbZbTmbTlbTkbTlccabTnccbbTlbTkdBQcaIahyahybrGccdbgJaUvbrGahyahyahyahyahyahyahyahyahyahyahyccBccfccgcaNbeudGTcgndGUbZMbeuaahbZCcchcciccjbZGcckcclbZHccmccnccobZLaahaahaahaahaahaahbZMbZNbZMbZMbZMbZMaahaahaahaahcbcccpaEGccrccscctccuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahahyahybXsccvccwccxbXsahyahyaahaahaahbZXbZXbZXbZYbZXaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbSEbSEccycczbSEbSEbSLbSLbSLbSLbSLccAbSLbSLbSLccEccCccDbSLbUEbUybUybUybUBbUBbUybUybUybYXcalcamcanbecbecbecbcnaZzbeeahybUGbUGbUGbUGbUGbUGbUGbUGccIccJccKccLbNCbNCbYmbNCbNCbNCccNccObNCccPaZdccQaZdaZdcDsbTlbUZdBRbVbbVcccTccUbVbbVaccVccWbUZbVadBOccXbTkbTlcbYcaIahyahybrGaUvbetaUvbvNahyahyahyahyahyahyahyahyahyahyahyccBccYccZcaNbeucgncgndGWbZMbeuaahbZCbZCbZCbZCbZCcdacdbbZLbZLbZLbZLbZLaahaahaahaahaahaahbZMbZNbZMaahaahaahaahaahaahaahcbccdccddcdecdfcdgcdhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahahyahybYFcdiccwcdjbYFahyahyaahaahaahbZXcdkcdlcdmbZXbZXbZXbZXaahaahaahaahaahaahaahaahaahaahaahaahaahbSEbSEbSEbSEaahaahaahaahbZXcdncdobZXahyahyahyahyahyahybUEcbBcbCbUBbUBbUBbUBcbDbUBcbEcbFcamcancbGcbHbecbcnaZzcbOcbOcbOcbOcdpcdqcdrcdscdtcoucdvcdwcdxcdycdzcdAcdBcdCcdDcbOcbOcbOcbOcbOcdEcdFcdGbURbURaouccUbVbbYtccVaovbUZbYtdBObVccdIccUcdJcdKcdLcdMcdNcdOcdSahyahybrGcdQbetcdRaTocaNahyahyahyahyahyahyahyahyahyahycelcdTcdUcaNbeudGYdGXdGZbZMbeuaahaahaahaahaahbZMcdVcdWbZMaahaahaahaahaahaahaahaahaahaahbZMbZNbZMaahaahcbccbccbccbccbccbccdXcdXcbccbccbccbcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahahyahybYFcdiccwcdjbYFahyahyaahaahaahbZXcdkcdlcdmbZXbZXbZXbZXaahaahaahaahaahaahaahaahaahaahaahaahaahbSEbSEbSEbSEaahaahaahaahbZXcdncdobZXahyahyahyahyahyahybUEcbBcbCbUBbUBbUBbUBcbDbUBcbEcbFcamcancbGcbHbecbcnaZzcbOcbOcbOcbOcdpcdqcdrcdscdtcoucdvcdwcdxcdycdzcdAcdBcdCcdDcbOcbOcbOcbOcbOcdEcdFcdGbURbURaouccUbVbbYtccVaovbUZbYtdBObVccdIccUcdJcdKcdLcdMcdNcdOcdSahyahybrGcdQbetcdRaTocaNahyahyahyahyahyahyahyahyahyahycelcdTcdUcaNbeudGYdGXdscbZMbeuaahaahaahaahaahbZMcdVcdWbZMaahaahaahaahaahaahaahaahaahaahbZMbZNbZMaahaahcbccbccbccbccbccbccdXcdXcbccbccbccbcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahbZUbVSbVQbZUcdYccwcdZbZUbVSbVQbZUbZUbZXbZXceacebceccedceecefbZXaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbZXcegcehceiceiceiceiceiahyahybUEbUEbUEcdPccFccFccGbUEbUEbUEbUEbUEbYZbZabeecejbjSaZzcekceLcemcbOcenceocepceocencencenccJccKcencencencdBceqcercescbOcetceLceucevcewcexceycezceAceBceCceDceAceEceAceFceCceBceGceBceCceHceIbTkbTlceJbURahyahybvNaUvbetaUvceKcaNcgqceMceMceMceMceMceMceMceMceNcaNceOcePcaNbZMdHabZMbZMaTWbeuaahaahaahbZMbZMbZMceQceRbZMaahaahaahaahaahaahaahaahaahbZMbZMbZNbZMaahaahcbcceSceTceTceTceTceUceUceVceTceTceWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahbZUceXceYceXceZcfacfbcfccfdcfecffcfgcfhcficfjcfkcflcfmcfncfobZXaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbZXcfpcfqcfrcfscftcfuceiahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahybbocfvcfwcfxcfycfzcfAcfBcfCcfDcfEcfFcfFcfFcfFcfGcfHcfFcfFcfFcfIcfJcfDcfKcfLcfMcfNcfOcfPcfQcfRcfSbTpcfTbTlbTkbTlbTkcfUbTkbTlbTkbTlcfVbTlbTkcfWbTkbTlbTkcfXbZyahyahyaTocfYbyncfZaVlcgacgbcgbcgbcgccgbcgbcgbcgbcgbcgbcgbcgecgfcggbZMdGYcgicgnbZMbZMbZMbZMbZMbZMcgjcgkcglcgmbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMdHbbZNbZMaahaahcbccgocgpcgTcgrcgscgtcgucgvcqbcgxceTceWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahbZUceXceYceXceZcfacfbcfccfdcfecffcfgcfhcficfjcfkcflcfmcfncfobZXaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbZXcfpcfqcfrcfscftcfuceiahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahybbocfvcfwcfxcfycfzcfAcfBcfCcfDcfEcfFcfFcfFcfFcfGcfHcfFcfFcfFcfIcfJcfDcfKcfLcfMcfNcfOcfPcfQcfRcfSbTpcfTbTlbTkbTlbTkcfUbTkbTlbTkbTlcfVbTlbTkcfWbTkbTlbTkcfXbZyahyahyaTocfYbyncfZaVlcgacgbcgbcgbcgccgbcgbcgbcgbcgbcgbcgbcgecgfcggbZMdGYcgndsdbZMbZMbZMbZMbZMbZMcgjcgkcglcgmbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMdsgbZNbZMaahaahcbccgocgpcgTcgrcgscgtcgucgvcqbcgxceTceWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahbZUcgycgzcgAccwcgBccwccwcgCccwcgDbZUcgEcgFcgEcgGcgHcgIcgJbZXbZXbZXbZXbZXbZXbZXbZXbZXbZXbZXbZXbZXbZXbZXbZXbZXbZXbZXbZXbZXbZXbZXbZXcgKcgLceicgMcgNcgOceiahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyaZycgPcgQcgRcgSchucgUcbOcgVcgWcgXcgYcgZchacgWcgWchbcgWchcchdchechfcgWchgcbOcgUchuchhchichjcevcevchkaowcdNcdMcdNchlchmcdMchncdMcdNchochpcdMchqchrchschtchLchvahyahybJechwchxbbQbbRchychzchzchzchAchzaoBchBchzchzchzchzchCchDchEchFchGchHchGchGchGchGchGchGchGchGchGchIchJchJchJchJchJchJchJchJchJchJchJchJchJchKbZMaahaahcbccgocgpciscgucgucgucgucgucgucguchMchNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahbZUchOchPchQchRchSchTchUccwchVchWbZUchXchYchZchYciacibciccidcidcidcidcidcidcidaoCcidcidcidcidcidcidcidcidcidcidcidcidciecifcidcidcigcihciicijcikcilceiahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahybamcimbcnbeccbOcbOcbOcbOcinciocipciqcirciwcitciucivciAcixciycizciGciBcpbcbOcbOcbOcbOciDcfQciEciFbURbURciXciHciHciHciHciHciHciHciHciHciHciHciHciIbURciXchvahyahyahybrGciJciKciLciKciMciNciNciOciNciNaoEciPciNciNciNciOciQciRciSbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMciTciUciVcqcbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMaahaahcbccgocgpcjAciYciZcjacjbcjccjdcjeceTcjfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahcjgcjgbZUbZUcjhcjicjjcgBcjkcjlcjlcjmbZUbZUcjnchYcjochYcjpcjqcjrcjsbZXbZXbZXaoFcjvcjvaoGcjvaoHapdbZXbZXbZXbZXbZXbZXbZXbZXbZXcjtcjucjvcjvcjwcjxcjyceiceiceiceiahyahycjzcjzcjzcjzcjzcjzcjzahyahyahyahyahyahyahybaicimbcnbeccjBahyahycbOcbOcbOcjHcjCcjDcjEcjDcjDcjFcjDcjEcjDcjCcjGcbOcbOcbOahyahyckhcjIcjJcjKciFaahaahahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahybvNaUvaUvcjLcjMcaNcgqceMceMceMapuapAapvceMceMceNcaNcaNcaNcaNbZMaahaahaahaahaahaahaahaahbZMbZMbZMciVbZMbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahcbccjNceTceTceTceTceTceTceVceTceTcjfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahcjgcjgcjOcjPcjgbVScjQbVQcjRbVScjQbVQbZUchYapCcjTchYcjUchYcjVcjWcjXcjqaahaahamYamYamYamYapFamYamYamYamYaahaahaahaahaahaahaahbZXbZXcjucjYbZXcjZbYlbZXaahahyahyahyahycjzcjzckbckcckdckeckfcjzcjzahyahyahyahyahybbobbockgblnccHbbobboahyahyahyckEahyahyahyahyahyahyahyahyahyahyahyahyckEahyahyahyciFciFckicfQcfRciFciFaahaahaahahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyciFciFckjckjckkciFciFahyahyahyahyapGapAapGahyahyahyaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbZMciVbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahcbccbccbccbccbccbccbccbccbccbccbccbcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahbZUchOchPchQchRchSchTchUccwchVchWbZUchXchYchZchYciacibciccidcidcidcidcidcidcidaoCcidcidcidcidcidcidcidcidcidcidcidcidciecifcidcidcigcihciicijcikcilceiahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahybamcimbcnbeccbOcbOcbOcbOcinciocipciqcirciwcitciucivciAcixciycizciGciBcpbcbOcbOcbOcbOciDcfQciEciFbURbURciXciHciHciHciHciHciHciHciHciHciHciHciHciIbURciXchvahyahyahybrGciJciKciLciKciMciNciNciOciNciNaoEciPciNciNciNciOciQciRciSbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMciTciUciVdsRbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMaahaahcbccgocgpcjAdtjciZcjacjbcjccjdcjeceTcjfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahcjgcjgbZUbZUcjhcjicjjcgBcjkcjlcjlcjmbZUbZUcjnchYcjochYcjpcjqcjrcjsbZXbZXbZXdxLdxdcjvaoGcjvdycapdbZXbZXbZXbZXbZXbZXbZXbZXbZXdyxcjucjvcjvcjwcjxcjyceiceiceiceiahyahycjzcjzcjzcjzcjzcjzcjzahyahyahyahyahyahyahybaicimbcnbeccjBahyahycbOcbOcbOcjHcjCcjDcjEcjDcjDcjFcjDcjEcjDcjCcjGcbOcbOcbOahyahyckhcjIcjJcjKciFaahaahahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahybvNaUvaUvcjLcjMcaNcgqceMceMceMapuapAapvceMceMceNcaNcaNcaNcaNbZMaahaahaahaahaahaahaahaahbZMbZMbZMciVbZMbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahcbccjNceTceTceTceTceTceTceVceTceTcjfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahcjgcjgcjOcjPcjgbVScjQbVQcjRbVScjQbVQbZUchYapCcjTchYcjUchYcjVcjWcjXcjqaahaahamYamYamYamYapFamYamYamYamYaahaahaahaahaahaahaahbZXbZXcjudyQbZXcjZbYlbZXaahahyahyahyahycjzcjzckbckcckdckeckfcjzcjzahyahyahyahyahybbobbockgblnccHbbobboahyahyahyckEahyahyahyahyahyahyahyahyahyahyahyahyckEahyahyahyciFciFckicfQcfRciFciFaahaahaahahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyciFciFckjckjckkciFciFahyahyahyahyapGapAapGahyahyahyaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbZMciVbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahcbccbccbccbccbccbccbccbccbccbccbccbcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcjgcjgcklckmcknckockpckqckrckscktckuckvckwckxapHckzchYckAchYckBckCckDcjqaahaahamYaqwapIdfCapQapSanCaqwamYaahaahaahaahaahaahaahaahbZXcjubZXbZXbZXbZXbZXahyahyckKckFckFckGckHckIckIckIckIckIckIcjzahyahyahyahybbobbocFUcimbcnbecbDObboclmckLckMciFclmckLckLckLckLckLckLckLckLckLckLckMciFclmckLckMciFckNckOckPcfRcJfciFciFciFciFciFclmckLckLckLckLckLckLckLckLckLckLckRciFclmckLckRciFckScfRcfRckTckUciFciFahyahOahOahOapXahOahOahOaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbZMciVbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyahyahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcjgckVckmcknckWckXckYckZclaclbchVclccldclecleclfclgclhcjUchYclicljclkcjqaahaahamYdfDaoDaoDaqlaqnaqmaucamYaahaahaahaahaahaahaahaahbZXcjubZXaahaahaahaahahyahyclYclncloclpclqclrclscltcluclvclwcjzahyahyahyahyaZycrkbecclyclzclAclAclBclCclCclCclDclCclCclCclEclFcfRcfRcfRcKgclGcKhclIclJclIclIclIclKclLclMclNclIclIclKclIclOclIclPclIclIclQclIclIclIclIclIclRclIclSclIclTclIclQclIclKclIclUclUclVclWbKGcmpahyahOaqoaieaqsaqpaqtahOaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbZMciVbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyahyahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahcjgcsTcknckncmabFKcmcbZUbZUcmdbZUbZUchYcmeclecmfcmgcmhcmichYcjqcjqcjqcjqaahaahamYaqvaoDaqwaqxaqwaoDaqyamYcmjcmjcmjcmjaahaahaahbZXbZXcjubZXdEldEldEldElahyahycmRcmqcmrcmscmtcmtcmucmvcmwcmtcmxcjzahyahyahyahybambisbeccimcsUbecbeccmzcfRcfRcfRcfRcmAcmBcmBcmBcmCcmDcmDcmDcmEcmDcmFcmDcmGcmDcmDcsVcmHcmIcmJcmKcmDcmDcmHcsZcmDcmDcmLcmDcmDcmDcmMcmDcmDcmDcmDcmGcmDcmDcmDcmEcmDcmDcmDcmHcmNcmBctacmOcmPcmQcncahyahOaieaieaqzaieaqAahOaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbZMbZMciVbZMbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahcjgcmScmTcmUcmVcmWcjgcmXbObcmZcnacnbcnScndcnecnfcngcnhcmichYaahaahaahaahaahaahamYartaoDaqwaqBaqwaoDanFamYcnicnjcnkcmjaahaahaahbZXcnocjubZXbWTckJccqdEldElahyclYcnpcnqcnrcnsckIcntcnucnvckIcnwcjzahyahyahyahybaibjQbeccimbDMbDNbeccmzcfRcnxcfRcnycnzcnAcnBcfRcnCcfRcfRcfRcnDcfRcnEcfRcnFcfRcnxcfRcjKcnGchicnHcevcevcnIcevcnJcevcnKcnMcevcnLcxCcevcevcevcevcnJcevcevcevcnNcevcevcevcnIcnOcnQcnPcnRcfRbKGcodahyahOaqDaqCaqZaqEaraahOaahaahaahaahaahaahaahaahaahaahbZMbZMbZMbZMbZMbZMcnTciVcgnbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbLjaahaahcjgcnUckXcnVcnWcnXcnYcnZcoacobcoacoccoocoecleclecofchYbRKchYaahaahaahaahaahaahamYanBarbardarcaoDaoDdgramYcogcohcoicmjaahaahaahbZXconcjubZXclxcrlcmycrqdElahycowckFckFcopcoqckIckIcorckIckIcoscjzahyahyahyahybbobbocotcimbcnbeccoAbboclmckLckMciFclmckMciFcovcoGcoxcoycozcoScoxcoBcovciFclmckLckMciFcoCckicoDcmBcoEciFclmckLckMciFciFclmckLckMczAclmckLckMciFciFdCQckMciFclmckLckMciFcKickickicfRcoXciFciFaahahOareaiearfaieargahOaahaahaahaahaahaahaahaahaahbZMbZMcoHcoIcoJcoJcoJcoJcoKcoLcoLcoLcoLcoLcoLcoLcoMcoNcoObZMbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbLjaahaahcjgcoPckncoQcmacoRcpqcoTcoUcoVcoacoWcpPcoYcoZcpactwchYcpcchYaahaahaahaahaahaahamYariarharkarjarmarlarnamYcpdcohcpecmjaahaahaahcpjbZXarqbZXcpjcvVcrrcxidElahyahyahyahycjzcplcpmcpncpocppcpTcprcjzahyahyahyahyahybbobbocpscptcmzbbobboahyahyahyahyahyahycovawtcpvcpwcpxcpycpzcpAcpBawucovahyahyahyciFciFcpDcpEckjciFciFahyahyahyczZcEVcEVcEVcEvcEvcEvcEVcEVcEWczZahyahyahyahyahyahyciFciFcjIcjIcjKciFciFaahaahahOahOaiaarraidahOahOaahaahaahaahaahaahaahaahaahbZMcpFcpGcpHbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMcpIcoMcpJbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaahaahaahcjgbfncpLcpMcpNcpOcqecpQcoacpRcoacpSchYcqzcpUcqzcpVcpWchZchYcpXcpXcpXcpXcpXcpXamYamYarsauQaruauRarvamYamYcmjcpYcmjcmjcpXcpXcpjcpjcFucFrcqdcpjdElcxWcyjdElcrIcqfcqfcqgcjzcjzcjzcjzcqhcjzcjzcjzcjzcrIcqfcqfcqfcqgcpjcqicqjcqkcqlcqmcpjcpjahyahyahyahyahycovcqncqocKmcqqcrJcqrcKXcpBcqucovahyahyahyahycqvcqwcqxcqycqvahyahyahyahyczZcuIarwcxUcEvcEvcEVcEVcEVcIFczZahyahyahyahyahyahyahycrNckicqAcqBciFaahaahaahaahahOahOahOahOahOaahaahaahaahaahaahaahaahaahaahbZMcqCcgnbZMbZMaahaahaahaahaahaahaahaahaahaahaahbZMbZMcgncqDbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaahaahaahcjgctxckncqFcqGcqHcqIcqJcqJcqKcqLcqMcqNcqOcqOcqPcqQcqRcqScqTcqUcqVcqWcqXcqYcqYcqZcqOarxcracqYcqYcqYcqYarycqOcrdarzcrfcrgcrhcricrjcMIcMjcrmcrncrocOZcrudBNcrscrtcrucrucrvcrucricrwcrxcrycrzcrAcrBcrAcrCcrAcrDcrAcrzcrAcrEcrFcrGcrucrHcrRahyahyahyahyahycrWcqtcrKcrLcrMcrLcrMcrLcpBcqtcrWahyahyahyahycsKcrOcrPcqycsKahyahyahyahycIHcEVcEVcEVcEVcEVcEVcEVcEVcJKcrQcrQcrQcsLcrScrTcrUcrQcrQctccsNctccrQcrQcrQcrQaahaahaahaahaahaahaahaahaahaahaahcrXcrXcrXcrXcrXbZMcrYcrZcrZcrZcrZcrZaahaahaahaahaahaahaahcsacsacsacsacsacsbbZMcsccsccsccsccscaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahcjgcmScmTcmUcmVcmWcjgcmXbObcmZcnacnbcnScndcnecnfcngcnhcmichYaahaahaahaahaahaahamYartaoDaqwaqBaqwaoDanFamYcnicnjcnkcmjaahaahaahbZXdzicjubZXdzjckJccqdEldElahyclYcnpcnqcnrcnsckIcntcnucnvckIcnwcjzahyahyahyahybaibjQbeccimbDMbDNbeccmzcfRcnxcfRcnycnzcnAcnBcfRcnCcfRcfRcfRcnDcfRcnEcfRcnFcfRcnxcfRcjKcnGchicnHcevcevcnIcevcnJcevcnKcnMcevcnLcxCcevcevcevcevcnJcevcevcevcnNcevcevcevcnIcnOcnQcnPcnRcfRbKGcodahyahOaqDaqCaqZaqEaraahOaahaahaahaahaahaahaahaahaahaahbZMbZMbZMbZMbZMbZMdzPciVcgnbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbLjaahaahcjgcnUckXcnVcnWcnXcnYcnZcoacobcoacoccoocoecleclecofchYbRKchYaahaahaahaahaahaahamYanBarbardarcaoDaoDdgramYcogcohcoicmjaahaahaahbZXconcjubZXclxcrlcmycrqdElahycowckFckFcopcoqckIckIcorckIckIcoscjzahyahyahyahybbobbocotcimbcnbeccoAbboclmckLckMciFclmckMciFcovcoGcoxcoycozcoScoxcoBcovciFclmckLckMciFcoCckicoDcmBcoEciFclmckLckMciFciFclmckLckMczAclmckLckMciFciFdCQckMciFclmckLckMciFcKickickicfRcoXciFciFaahahOareaiearfaieargahOaahaahaahaahaahaahaahaahaahbZMbZMdzQcoIcoJcoJcoJcoJcoKcoLcoLcoLcoLcoLcoLcoLcoMcoNdzZbZMbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbLjaahaahcjgcoPckncoQcmacoRcpqcoTcoUcoVcoacoWcpPcoYcoZcpactwchYcpcchYaahaahaahaahaahaahamYariarharkarjarmarlarnamYcpdcohcpecmjaahaahaahcpjbZXarqbZXcpjcvVcrrdBKdElahyahyahyahycjzcplcpmcpncpocppcpTcprcjzahyahyahyahyahybbobbocpscptcmzbbobboahyahyahyahyahyahycovawtcpvcpwcpxcpycpzcpAcpBawucovahyahyahyciFciFcpDcpEckjciFciFahyahyahyczZcEVcEVcEVcEvcEvcEvcEVcEVcEWczZahyahyahyahyahyahyciFciFcjIcjIcjKciFciFaahaahahOahOaiaarraidahOahOaahaahaahaahaahaahaahaahaahbZMcpFcpGcpHbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMcpIcoMcpJbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaahaahaahcjgbfncpLcpMcpNcpOcqecpQcoacpRcoacpSchYcqzcpUcqzcpVcpWchZchYcpXcpXcpXcpXcpXcpXamYamYarsauQaruauRarvamYamYcmjcpYcmjcmjcpXcpXcpjcpjcFucFrcqdcpjdElcxWcyjdElcrIcqfcqfcqgcjzcjzcjzcjzcqhcjzcjzcjzcjzcrIcqfcqfcqfcqgcpjcqicqjcqkcqlcqmcpjcpjahyahyahyahyahycovcqncqocKmcqqcrJcqrcKXcpBcqucovahyahyahyahycqvcqwcqxcqycqvahyahyahyahyczZcuIarwdBTcEvcEvcEVcEVcEVcIFczZahyahyahyahyahyahyahycrNckicqAcqBciFaahaahaahaahahOahOahOahOahOaahaahaahaahaahaahaahaahaahaahbZMcqCcgnbZMbZMaahaahaahaahaahaahaahaahaahaahaahbZMbZMcgncqDbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaahaahaahcjgctxckncqFcqGcqHcqIcqJcqJcqKcqLcqMcqNcqOcqOcqPcqQcqRcqScqTcqUcqVcqWcqXcqYcqYcqZcqOarxcracqYcqYcqYcqYarycqOcrdarzcrfcrgcrhcricrjcMIcMjcrmcrncrocOZcrudBNcrscrtcrucrucrvcrucricrwcrxcrycrzcrAcrBcrAcrCcrAcrDcrAcrzcrAcrEcrFcrGcrucrHcrRahyahyahyahyahycrWcqtcrKcrLcrMcrLcrMcrLcpBcqtcrWahyahyahyahycsKcrOcrPcqycsKahyahyahyahycIHcEVcEVcEVcEVcEVcEVcEVcEVdBXcrQcrQcrQcsLcrScrTcrUcrQcrQctccsNctccrQcrQcrQcrQaahaahaahaahaahaahaahaahaahaahaahcrXcrXcrXcrXcrXbZMcrYcrZcrZcrZcrZcrZaahaahaahaahaahaahaahcsacsacsacsacsacsbbZMcsccsccsccsccscaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaahaahcjgcsdcknckncsecsfcsgcshcshcsicshcsjcskcslcsmcsncsncsncsocspcsqcsrcsqcsqcsqcsscsqcsqcsqcstcsqcsqcsqcsscsqcsqcsqcstcsqcsqcsucsvcswcsxcsycswcswcsvdBPcswcswcszcsAcsBcrucrucrucricrucsCcswcsDcswcsEcswcswcswcsFcswcsvcswcsGcsHcsIcrucsJcsRahyahyahyahyahyctmcqtcrKcrLcsMcrLcsMcrLcpBcqtctmahyahyahyctucsOcrOcsPcsQcumcsSahyahyahycMYcEVcEVcDncEVcEVcEVcEVcFecrQcrQcwtctdcsXcwtcwvcsXcsYcwwctbcsYctbctecxOcwxcrQcrQaahaahaahaahaahaahcrXcrXcrXcrXcrXctfctgayocrXctictjcrZayqctlcurcrZcrZcrZcrZcrZcsacsacsacsactnctoayscsactqctrcscayvcttcuTcsccsccsccsccscaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaabLjbLjcjgctvcvWcALctycmacjgbRMctActBctCctDctEctFctGctHcrfcrfcrfctIctJctKcrfctLctMctNcrfctFctOcrfcrfctPctQctRctSctTctQctQctUctVctWcrocrpctXctYctZcuacubdCbcuadCfcuacuccudcuacuacuacubcuecufcuacubcuacugcuacuhcuicuacuacubcuacujcrucukcruculcuYahyahyahyahyahyctmcuncuocrLcupcrLcupcrLcuqcunctmahyahyahycvacqycrOcrPcqycqycvaahyahyahycMYcJacEVcLvcEVcQdcEVcEVcEVcrQcxScsYcwrcwscwscwscwscwscwsczmczlczoczncPbcPbcBjcrQaahaahaahaahaahaahcrXcuuazEcuucrXcNfcuxdGMcrXcuzcuAcrZcuNcuCcuDcrZcuEazFcuEcrZcuGaAdcuGcsacOScuJdHccsacuLcuMcsccwEcuOcuPcsccuQaADcuQcscaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaadcuScuScvgcuUcuScuVcuWcuScuScuScuXcvocuZcuXcvrcvbcuXcvccvdcvecvfcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpjcvNcvhcrFcvicLtcpjcpjcpjcpjcrIcqfcqfcqfcqfcqgcpjbRRcvlcqdcpjcrIcqfcqgcpjcrIcqfcqgcpjcvmcrucrucrGcvncpjcpjahyahyahyahyahycwjcvpcuocrLcrLcrLcrLcrLcuqcvqcwjahyahyahycqvcwqcrOcrPcqycvscqvahyahyahycRUcWRcEVcEVcEVcEVcEVcEVcWRcrQcBkcsYcsYcsYcvucvucvucvucvuctbcDpcwzcsYcsYcsYcducrQaahaahaahaahaahaahcrXaAEcvxaAEcrXcrXcvycrXcrXcwFcwGcrZcrZcvBcrZcrZaAFcvDaAFcrZaAGcvFaAGcsacsacvGcsacsacvHcvIcsccsccvJcsccscaAHcvLaAHcscaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMaadaaacxfcvOcvPbHqbIfcvScvTcvUdEKdEJcvXcvYcvZcwacwbcwccuXcpXcpXcpXcpXcpXaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahcpjcwdcwecwfcwgcwdcpjdELdELdELahyahyahyahyahyahycpjcwhcwicwhcpjahyahyahyahyahyahyahycxAcqicqicqicwkcqicxAahyahyahyahyahyahycovcuncwlcwmcwncwocuncuncuqcwpcovahyahyahycsKcqycrOcrPcqycqycsKahyahyahyczZcPicEVcEVcEvcPocEVcEVcEVcrQcvucvucsYcsYcBicDqdBUcxPbdUctbcxRcsYcFdcFdcFdcFdcrQaahaahaahaahaahaahcrXcwBcwCcwDcPvcwDcwJcwHcwLcwKcwUcwTcwXcwVcwMcwNcwMcwOcwPcrZcwQcwRcwScPBcwScyacyecybcyqcyfcwYcwZcxacxbcxccxbcxdcxecscaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMaadaaacxNcxgcxgcxgcxgcvScvTcxhcxhcytcuXcxjcxkcxlcxmcxncuXcxocxpcxqcxraahaahaahaahaahcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxscxtcxucxvcxwcwhcwhcwhcwhcwhcwhcwhcwhcwhcwhcwhcxxcxycwhahyahyahyahyahyahyahyahycxzcyBcxBczkcxDcyBcxzahyahyahyahyahyahycovcovdHdcxFcxGcxHcxIcxJdHecovcovahyahyahycumcsScxLcxMcqyctucsOahyahyahyczZczZcEVcTdcQncUncEVcEVddacrQcEFcxPcsYcsYcxQcxQcxQcxQcxQctbcxRcsYcFdcFdcFdcFbcrQaahaahaahaahaahaahcrXcxVaAKaAIcxYcxZcyucyrcrXcyccydcrZcAkcyvcygcyhcyidENcykcrZcyldEPcyncyocypczEcAucsacyscAxcBocBncAqcywcyxcyydEQcyAcscaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMczTcyCcyDcyEcyFcxgcxgcvScyGcyHcyIcyJcyKcyLcyMaGXcyOcyPcuXcxqcxqcxqcxrcxrcxrcxrcxrcxrcxrcyQcyRcyScyScyScyScyScyScyScyScyScyScyScyTcyScyUcyVcyWcyXcyYcyVcyZczaczbczaczaczaczaczaczaczaczaczaczccwhahyahyahyahyahycxzcxzcxzcxzczdczebTgczgczhcxzcxzcxzcxzahyahyahyahycovcovcovcziczjczicovcovcovahyahyahyahyahycvacrOcrPcqycvaahyahyahyahyahyczZczZczZczZbgjczZczZczZcrQcxQcxQcDocwycwycwycFccHvcHrcJzcHxcsYcFdcFdcFdcFdcrQaahaahaahaahaahaahcrXcrXcrXcrXcrXcrXcBqcrXcrXczpcuAcrZcrZcBrcrZcrZcrZcrZcrZcrZcsacsacsacsacsacBucsacsacuLcBvcsccsccsccsccsccsccsccsccscaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMczrczsczrczscztczuczvczwczxczyczzcxgcArczBczCczDcCxcuXcuXczFczGczGczGczGczGczGczGczGczGczGczHcxqcxrcxrcxrcxrcxrczIczIczJcxrcOHczKcxqcxrczLczMczNczOczPcwhczQczQddgddmddkczQczQcwhcwhcwhcwhczRcwhahyahyahyahyahycxzczSczScABczUczVczWczXczYcAIcAacAacxzaahahyahyahyahyaahaahczicAbcziaahaahaahahyahyahyahyahycqvcAccAdcAecqvahyahyahyahyahyahyahyahycBgcWQcBgahyaahcrQcJNcxTcKMcxTcxTcFacFacKNcxTcxTcMecDrcFdcFdcFdcmYcrQaahaahaahaahaahaahcAicCbaEJcCbcAicAjcBxaywcAicAmcAncAoayEcCccBbcAocCfaFxcCfcAocCkaFzcCkcAscAtcClazxcAscAwcCmcAyazycAAcBAcAycCoaFRcCocAyaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMaadaaacxfcvOcvPbHqbIfcvScvTcvUdEKdEJcvXcvYcvZcwacwbcwccuXcpXcpXcpXcpXcpXaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahcpjcwdcwecwfcwgcwdcpjdELdELdELahyahyahyahyahyahycpjcwhcwicwhcpjahyahyahyahyahyahyahycxAcqicqicqicwkcqicxAahyahyahyahyahyahycovdCccwlcwmcwncwocuncuncuqcwpcovahyahyahycsKcqycrOcrPcqycqycsKahyahyahyczZcPicEVcEVcEvcPocEVcEVcEVcrQcvucvucsYcsYcBicDqdBUcxPbdUctbcxRcsYcFdcFdcFdcFdcrQaahaahaahaahaahaahcrXcwBcwCcwDcPvcwDcwJcwHcwLcwKcwUcwTcwXcwVcwMcwNcwMcwOcwPcrZcwQcwRcwScPBcwScyacyecybcyqcyfcwYcwZcxacxbcxccxbcxdcxecscaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMaadaaacxNcxgcxgcxgcxgcvScvTcxhcxhcytcuXcxjcxkcxlcxmcxncuXcxocxpdCicxraahaahaahaahaahcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxscxtcxucxvcxwcwhcwhcwhcwhcwhcwhcwhcwhcwhcwhcwhcxxcxycwhahyahyahyahyahyahyahyahycxzcyBcxBczkcxDcyBcxzahyahyahyahyahyahycovcovdHdcxFcxGcxHcxIcxJdHecovcovahyahyahycumcsScxLcxMcqyctucsOahyahyahyczZczZdCjcTdcQncUncEVcEVddacrQcEFcxPcsYcsYcxQcxQcxQcxQcxQctbcxRcsYcFdcFdcFdcFbcrQaahaahaahaahaahaahcrXcxVaAKaSMcxYcxZcyucyrcrXcyccydcrZcAkcyvcygcyhbTcdENcykcrZcyldEPcyicyocypczEcAucsacyscAxcBocBncAqcywcyxcyndEQcyAcscaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMczTcyCcyDcyEcyFcxgcxgcvScyGcyHcyIcyJcyKcyLcyMaGXcyOcyPcuXcxqcxqcxqcxrcxrcxrcxrcxrcxrcxrdCmcyRcyScyScyScyScyScyScyScyScyScyScyScyTcyScyUcyVcyWcyXcyYcyVcyZczaczbczaczaczaczaczaczaczaczaczaczccwhahyahyahyahyahycxzcxzcxzcxzczdczebTgczgczhcxzcxzcxzcxzahyahyahyahycovcovcovcziczjczicovcovcovahyahyahyahyahycvacrOcrPcqycvaahyahyahyahyahyczZczZczZczZbgjczZczZczZcrQcxQcxQcDocwycwycwycFccHvcHrcJzcHxcsYcFdcFdcFdcFdcrQaahaahaahaahaahaahcrXcrXcrXcrXcrXcrXcBqcrXcrXczpcuAcrZcrZcBrcrZcrZcrZcrZcrZcrZcsacsacsacsacsacBucsacsacuLcBvcsccsccsccsccsccsccsccsccscaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMczrczsczrczscztczuczvczwczxczyczzcxgcArczBczCczDcCxcuXcuXczFczGczGczGczGczGczGczGczGczGczGczHcxqcxrcxrcxrcxrcxrczIczIczJcxrdCEczKcxqcxrczLczMczNczOczPcwhczQczQddgddmddkczQczQcwhcwhcwhcwhczRcwhahyahyahyahyahycxzczSczScABczUczVczWczXczYcAIcAacAacxzaahahyahyahyahyaahaahczicAbcziaahaahaahahyahyahyahyahycqvcAccAdcAecqvahyahyahyahyahyahyahyahycBgcWQcBgahyaahcrQcJNcxTcKMcxTcxTcFacFacKNcxTcxTdEDcDrcFdcFdcFdcmYcrQaahaahaahaahaahaahcAicCbaEJcCbcAicAjcBxaywcAicAmcAncAoayEcCccBbcAocCfaFxcCfcAocCkaFzcCkcAscAtcClazxcAscAwcCmcAyazycAAcBAcAycCoaFRcCocAyaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcACcADcACcAEcAFcxgcxgcvScvTcAGczzcAHcBTcAJcAKcMdbWMcuXcxqcANcxqcxqcxrcxrcxrcxrcxrcxrcxrcxrcAOcxrcxraahaahaahcxrcAPcAPcAPcxrcxrcxrcxrcwdcwdcAQcARcAScwdcwdcwhcwhcwhcwhcwhczQcwhcwhaahaahcwhczRcwhaahahyahyahyahycxzcATczecAUcAVczeczeczgcAWcAXczecAYcxzaahahyahyaahaahaahaahczicAZcziaahaahaahcBacCScBccBacqvcqvcBdcBecBfcqvcBgcBgcBgcBgcBgahyahyahycBgcWQcBgaahaahcrQcvucvucMXcGzcGAcGAcGAcNJcGAcGzcNMcsYcNVcNVcNWcNXcrQaahaahaahaahaahaahcAiaGxaHMaGxcAicBmcDydHfcAiczpcBpcAocDDcDCcBscAoaJaaHOaJacAoaKbaJIaKbcAscBtcDMdHgcAscBwcBvcAycFkcBycBzcAyaKnaKpaKncAyaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcEBcyCcBBcBCcxgcxgcxgcBDcvTcAGczzcBEcuXcvrcvbcuXcuXcuXcxrcANcBFcxrcxraahaahaahaahaahaahcxrcBGcBHcxraahaahaahcBIcBIcBJcBIcBIaahaahaahaahcwdcBKcxucxvcwdaahaahaahaahaahcwhczQcwhaahaahaahcwhczRcwhaahaahaahahyahycxzcxzcxzcxzcBLcBMcBNcBOcbocxzcxzcxzcxzaahaahaahaahaahaahaahczicAbczicziczicBacBacymcBRcBacBScEIcrOcrPcqycBUcBgcBVcBWcBXcBgcBgahyahycBgcWQcBgaTWaahcrQcNRcxPcMXcGzcHscHtcHucNUdFccGzcNMcsYcPccPccPccOVcrQaahaahaahaahaahaahcAiaKqaKFaHMcAicAicFlcAicAicCdcvAcAocFmcCecAocAoaHOaKGaKHcAoaLuaLtaJIcAscAscFncAscAscvHcFycAycAycCncAycAyaKpaLxaLvcAyaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcACcADcACcCrcyFcxgcxgcvScvTcAGczzcCscCtcCucCvcCwcFBcCycCzcCAcxrcxraahaahaahaahaahaahaahcxrcCBcCCcxrcxraahaahcBIcBQcCEcCDcBIcCGcCGcCGaahcwdcCHcCIcCJcCKcCKcCKcCKcCKcCKcCKcCLcCKcCKaahahycwhczRcwhaahaahaahaahahycxzcLucCNcABcCOczVcCPcCQcCRcEKcCTcCUcxzaahaahaahaahaahaahaahczicCVcCWcCXcCXcCYcCZcDacDbcDccDdcDecDfcDgcDhcBScBgcDjcDkcDlcDmcBgcBgcBgcBgcWQcQzcBgcBgcrQclXcxQcMXcGzcHscHtcIGcOYcHwcGzcNMcsYcQHcQHdERcPacrQaahaahaahaahaahaahcAicDtcDucDvcDwcDvcFAcFzcDzcDAcwIcDBcHFcHAcDEcDFcDEcDGcDHcAocDIcDJcDKcDLcDKcHGcHKcDOcwWcHNcDPcDQcDRcDScDTcDScDUcDVcAyaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcDWcDXcDWcDYcDZcEacEbcEccEdcEeczzcEfcCtcEgcEhcEicEjcEkcCtcxrcxraahaahaahaahaahaahaahaahcxrcElcEmcxqcxraahaahcBIcBQcCEcCDcBIcEncEocCGcCGcwdcEpcEqcErcCKcEscEtcEuddpcEwcEwcEwcExcCKahyahycwhczRcwhaahaahaahaahaahcxzcATczecEycAVczecEzczgcEAcFHczeczecxzaahaahaahaahaahaahaahczicECcEDcEEcEDcBackacEGcEHcFXcEJcGfcELcEMcENcEOcEPcEQcERcERcEScETcEUcEUcQecZMcEXcQfcEYcEZcxTcxTcQgcQhcHscJLcJMcQFcHwcGzcNMcQIcQGcQGcQGcQGcQGaahaahaahaahaahaahcAicFfdEScFhcFicFjcIjcIJcAicyccydcAocIPcIKcFocFpcFqdEUcFscAocFtdEVcFvcFwcFxcILcIRcAscyscAxcKacJRcIQcFCcFDcFEdEWcFGcAyaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcGjcFIcFJcFKcDZcxgcxgcvScFLcyHcFMcFNcFOcFPcFQcFRcFScFTcCtaahaahaahaahaahaahaahaahaahaahcxrcMscMocMPcxraahaahcBIcCFcCEcCDcBIcFWcGpcFYcFZcwdcGacGbcGccCKcGdcGecEwcEwcEwcEwcEwcEwcCKahyahycwhczRcwhaahaahaahaahaahcxzcxzcxzcxzcGqczecGgcGhcOIcGBczecGkcxzaahaahaahaahaahaahaahczicECcGlcziczicBacGmcGncGocGScEJcHccGrcrPcqycGscBgcGtcGucGvcGwcBgcBgcBgcGxcXdcERcERddqcrQcrQcrQcrQcrQcKJcKKcKLdhfcHwcGzcNMcQGcQGdkBdkBdlCcQGaahaahaahaahaahaahcAicAicAicAicAicAicKbcAicAiczpcuAcAocAocFmcAocAocAocAocAocAocAscAscAscAscAscKScAscAscuLcBvcAycAycAycAycAycAycAycAycAyaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMaadaaacHHcGCcGDcGEcGEcGFcGGcGGcGGcGGcGHcGIcGIcGJcGKcGLcCtbkQbkQahyahyahybkQbkQaahaahaahcxrcIdcIecxrcxraahaahcBIcFgcGPcFFcBIcGRcHRcCGcCGcwdcGTcCIcGUcGVcGWcGWcGWcGXcGXcGXcGXcGYcCKahyahycwhczRcwhaahaahaahaahaahcxzcGZczecABcHaczVcCPcCQcHbcHSczecGkcxzaahaahaahaahaahaahaahczicAbczicziaahcBacHdcHedmEcHgcHfcHccHicHjcHkcHlcHmcHncHocHmcHpcHmaahcBgcBgcHqcGxcGxdnjcOUdBScFVcMfcrQcrQcMgcMhdhfcHwcGzdBVdDhdDgdDjdDidDkcQGaahaahaahaahaahaahaahaahaahaahcHycHzcKTazzcHycHCcHDcHEazAcKWcIzcHEaahaahaahaahaahaahaahcHIcHJcLgazBcHIcHMcLhcHOazCcHQcJtcHOaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcEBcyCcBBcBCcxgcxgcxgcBDcvTcAGczzcBEcuXcvrcvbcuXcuXcuXcxrcANcBFcxrcxraahaahaahaahaahaahcxrcBGcBHcxraahaahaahcBIcBIcBJcBIcBIaahaahaahaahcwdcBKcxucxvcwdaahaahaahaahaahcwhczQcwhaahaahaahcwhczRcwhaahaahaahahyahycxzcxzcxzcxzcBLcBMcBNcBOcbocxzcxzcxzcxzaahaahaahaahaahaahaahczicAbczicziczicBacBacymcBRcBacBScEIcrOcrPcqycBUcBgcBVcBWdCZcBgcBgahyahycBgcWQcBgaTWaahcrQcNRcxPcMXcGzcHscHtcHucNUdFccGzcNMcsYcPccPccPccOVcrQaahaahaahaahaahaahcAiaKqaKFaHMcAicAicFlcAicAicCdcvAcAocFmcCecAocAoaHOaKGaKHcAoaLuaLtaJIcAscAscFncAscAscvHcFycAycAycCncAycAyaKpaLxaLvcAyaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcACcADcACcCrcyFcxgcxgcvScvTcAGczzcCscCtcCucCvcCwcFBcCycCzcCAcxrcxraahaahaahaahaahaahaahcxrcCBcCCcxrcxraahaahcBIcBQcCEcCDcBIcCGcCGcCGaahcwdcCHcCIcCJcCKcCKcCKcCKcCKcCKcCKcCLcCKcCKaahahycwhczRcwhaahaahaahaahahycxzcLucCNcABcCOczVcCPcCQcCRcEKcCTcCUcxzaahaahaahaahaahaahaahczicCVcCWcCXcCXcCYcCZcDacDbcDccDdcDecDfcDgcDhcBScBgcDjcDkcDlcDmcBgcBgcBgcBgcWQdDacBgcBgcrQclXcxQcMXcGzcHscHtcIGcOYcHwcGzcNMcsYcQHcQHdERcPacrQaahaahaahaahaahaahcAicDtcDucDvcDwcDvcFAcFzcDzcDAcwIcDBcHFcHAcDEcDFcDEcDGcDHcAocDIcDJcDKcDLcDKcHGcHKcDOcwWcHNcDPcDQcDRcDScDTcDScDUcDVcAyaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcDWcDXcDWcDYcDZcEacEbcEccEdcEeczzcEfcCtcEgcEhcEicEjcEkcCtcxrcxraahaahaahaahaahaahaahaahcxrcElcEmcxqcxraahaahcBIcBQcCEcCDcBIcEncEocCGcCGcwdcEpcEqcErcCKcEscEtdDOddpcEwcEwcEwcExcCKahyahycwhczRcwhaahaahaahaahaahcxzcATczecEycAVczecEzczgcEAcFHczeczecxzaahaahaahaahaahaahaahczicECcEDcEEcEDcBackacEGcEHcFXcEJcGfcELcEMcENcEOcEPcEQcERcERcEScETcEUcEUcQecZMcEXcQfcEYcEZcxTcxTcQgcQhcHscJLcJMcQFcHwcGzcNMcQIcQGcQGcQGcQGcQGaahaahaahaahaahaahcAicFfdEScyycFicFjcIjcIJcAicyccydcAocIPcIKcFocFpcFhdEUcFscAocFtdEVcFqcFwcFxcILcIRcAscyscAxcKacJRcIQcFCcFDcFvdEWcFGcAyaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcGjcFIcFJcFKcDZcxgcxgcvScFLcyHcFMcFNcFOcFPcFQcFRcFScFTcCtaahaahaahaahaahaahaahaahaahaahcxrcMscMocMPcxraahaahcBIcCFcCEcCDcBIcFWcGpcFYcFZcwdcGacGbcGccCKdDScGecEwcEwcEwcEwcEwcEwcCKahyahycwhczRcwhaahaahaahaahaahcxzcxzcxzcxzcGqczecGgcGhcOIcGBczecGkcxzaahaahaahaahaahaahaahczicECcGlcziczicBacGmcGncGocGScEJcHccGrcrPcqycGscBgcGtcGucGvcGwcBgcBgcBgcGxcXdcERcERddqcrQcrQcrQcrQcrQcKJcKKcKLdhfcHwcGzcNMcQGcQGdkBdkBdlCcQGaahaahaahaahaahaahcAicAicAicAicAicAicKbcAicAiczpcuAcAocAocFmcAocAocAocAocAocAocAscAscAscAscAscKScAscAscuLcBvcAycAycAycAycAycAycAycAycAyaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMaadaaacHHcGCcGDcGEcGEcGFcGGcGGcGGcGGcGHcGIcGIcGJcGKcGLcCtbkQbkQahyahyahybkQbkQaahaahaahcxrcIdcIecxrcxraahaahcBIcFgcGPcFFcBIcGRcHRcCGcCGcwdcGTcCIcGUcGVcGWcGWcGWcGXcGXcGXcGXcGYcCKahyahycwhczRcwhaahaahaahaahaahcxzcGZczecABcHaczVcCPcCQcHbcHSczecGkcxzaahaahaahaahaahaahaahczicAbczicziaahcBacHdcHedmEcHgcHfcHccHicHjcHkcHlcHmcHncHocHmcHpcHmaahcBgcBgcHqdDXcGxdnjcOUdBScFVcMfcrQcrQcMgcMhdhfcHwcGzdBVdDhdDgdDjdDidDkcQGaahaahaahaahaahaahaahaahaahaahcHycHzcKTazzcHycHCcHDcHEazAcKWcIzcHEaahaahaahaahaahaahaahcHIcHJcLgazBcHIcHMcLhcHOazCcHQcJtcHOaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMaadaaacJwcGCcDXcHTcDXcHUcHVcxgcxgcHWcCtcHXcGKcHYcHZcIacCtbkQcIbcIccIccIccIcbkQaahcJecJecJgcNHcJgcJgaahaahaahcBIcBQcIfcGOcBIcIhcIicKkcIkcwdcIlcImcIncCKcGecIocGecEwcGecEwcEwcEwcCKahyahycwhczRcwhaahaahaahaahaahcxzcIpczecIqcAVcIrcIscItcAWcIuczecGkcxzaahaahaahaahaahaahaahczicAbcziaahaahcBacIvcIwcHhcFXcIycKDcrOcrPcIAcDicHmcIBcICcIDcIEcHmaahaahcBgcHqcBgcOTdDlcNKcNTcNLcNNctzcNOcNPcNQdDmcNScNTdDncQGdDodDqdDpdDrcQGaahaahaahaahaahaahcHycHycHycHycHycIIcMpdHhcHyczpcuAcHEcMqcIMcINcHEcHEcHEcHEcHEcHIcHIcHIcHIcIOcMrdHicHIcuLcBvcHOcMtcIScITcHOcHOcHOcHOcHOaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcvMcvMcvMcvMcvMaadaadaadcuScuScuScuScuScuScuScIUcIVcIWcIXcIYcIZddOcJbcCtcCtahycIccJccJdcJccIcahyahycJebPGbNIbZtbQAcJeaahaahaahcBIcBQcJhcJicJjcJkcJlcJmcJmcwdcJncJocJpcCKcJqcGecEwcEwcEwcEwcJrcExcCKahyahycwhczRcwhaahaahaahaahaahcxzcJsczecMLcJuczVcJvczXczYcNgczeczecxzaahaahaahaahaahaahaahczicAbcziaahaahcBacJxcJycIxcGScJAcJBcJCcJDcJEcJFcHmcJGcJHcJIcJJcHmaahaahcBgcGycBgcBgcBgcrQdFdcsYcOWdHjcrQcHtdDscOYdDtcsYdDucQGdDvcQGdDwcQGcQGaahaahaahaahaahaahcHycJOcJPcJQcHycHycMucHycHycJScvAcHEcMvcJTcHEcHEcJUcJVcJWcHEcJXcJYcJZcHIcHIcMwcHIcHIcvHcMxcHOcHOcKccHOcHOcKdcKecKfcHOaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaaaaadbkQaahaahaahaahaahcuScuScuScuScCtcCtcCtcCtcCtcCtaahahycIccJccJccJccIcahyahycJebRFbRhcaBbWGcJecKjcKjcKjcBIcBIcLKcKlcBIcMncKncKocKpcKqcKrcKscKtcKqcKucGedeccKvcEwcKwcKwcKwcCKahyahycwhczRcwhaahaahaahaahaahcxzcKxczecHScKyczecKzczgcKAcHScKBcKBcxzaahaahaahaahaahaahaahczicAbcziaahcKCcKCcNYcKEcKFcKCcKCcKCcKGcKHcKIcKCcKCcKCcKCcKCcKCcKCcKCaahcBgcHqcBgaahaahcrQcrQcQAcQBcQCcrQcQDcQEdDydDxcsYcsYcQGdDzcQGdDAcQGaahaahaahaahaahaahaahcHycKOcKPcKQcKRcKQcMzcMycKUcDAcwIcKVcMBcMAcKYcKZcKYcLacLbcHEcLccLdcLecLfcLecMCcMDcLicwWcHNcLjcLkcLlcLmcLncLmcLocLpcHOaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaahyaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahycIccLqcLrcLscIcahyaahcJecdHcceccMdEXcJecLwcLxcLycLzcBIcLAcBIcCGcCGcLBcCGcLCcKqcLDcLEcLFcKqcLGcLGcLGcLGcLGcLGcLGcLGahyahyahycwhczRcwhcziaahaahaahaahcxzcxzcxzcxzcLHcLIcLJcMEcLLcxzcxzcxzcxzaahaahaahaahaahaahcziczicAbczicKCcKCcLMcLNcLOawvcLQcLRcLScLTcLUcLVcLWcLXcLYcLZcMacMbcMccKCcKCcBgcHqcBgahyaahaahcrQcrQcrQcrQcrQcrQcrQcrQcrQdDCdDBcQGcQGcQGcQGcQGaahaahaahaahaahaahaahcHycMidEYcMkcMlcMmcTedBWcHycyccydcHEdBYcVedCadBZdCcdEZdCedCddCgdFadCidChdCkcVkdClcHIcyscAxdCodCncXCcMFcMGcMHdFbcMJcHOaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaaaaadbkQaahaahaahaahaahcuScuScuScuScCtcCtcCtcCtcCtcCtaahahycIccJccJccJccIcahyahycJebRFbRhcaBbWGcJecKjcKjcKjcBIcBIcLKdEacBIdEecKncKocKpcKqcKrcKscKtcKqcKucGedeccKvcEwcKwcKwcKwcCKahyahycwhczRcwhaahaahaahaahaahcxzcKxczecHScKyczecKzczgcKAcHScKBcKBcxzaahaahaahaahaahaahaahczicAbcziaahcKCcKCcNYcKEcKFcKCcKCcKCcKGcKHcKIcKCcKCcKCcKCcKCcKCcKCcKCaahcBgcHqcBgaahaahcrQcrQcQAcQBcQCcrQcQDcQEdDydDxcsYcsYcQGdDzcQGdDAcQGaahaahaahaahaahaahaahcHycKOcKPcKQcKRcKQcMzcMycKUcDAcwIcKVcMBcMAcKYcKZcKYcLacLbcHEcLccLdcLecLfcLecMCcMDcLicwWcHNcLjcLkcLlcLmcLncLmcLocLpcHOaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaahyaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahycIccLqcLrcLscIcahyaahcJecdHcceccMdEXcJecLwcLxcLycLzcBIcLAcBIcCGcCGcLBcCGcLCcKqcLDcLEcLFcKqcLGcLGcLGcLGcLGcLGcLGcLGahyahyahycwhczRcwhcziaahaahaahaahcxzcxzcxzcxzcLHcLIcLJcMEcLLcxzcxzcxzcxzaahaahaahaahaahaahcziczicAbczicKCcKCcLMcLNcLOawvcLQcLRcLScLTcLUcLVcLWcLXcLYcLZcMacMbcMccKCcKCcBgcHqcBgahyaahaahcrQcrQcrQcrQcrQcrQcrQcrQcrQdDCdDBcQGcQGcQGcQGcQGaahaahaahaahaahaahaahcHycMidEYcFEcMlcMmcTedBWcHycyccydcHEdBYcVedCadBZcMkdEZdCedCddCgdFacMHdChdCkcVkdClcHIcyscAxdCodCncXCcMFcMGdmodFbcMJcHOaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyahybkQcIccMKcNZcMMcIcbkQcMNcMNcMNcMNcghcMOcKjcMQcMRcMScMTcMUcMVcMWdDDdbAcMZcNacMUcNbcNccNdcNecrVcOpcNhcNicNjcTfcLGcNlcLGcLGahyahycwhcNmcNncziczicziczicziczicNocNpcxzcNqcxzcNrcxzcNqcxzcEDcEDcziczicziczicziczicziczicUqcXxcUucKCcNucLPcLPcNvcNwcNwcNxcNycNzcNAcNBcNCcNDcNEcNEcNEcNFcLPcNGcKCcZgdDEcBgahyahyaahaahaahaahaahaahaahaahcWudDFdbMdbMdDGcWuaahaahaahaahaahaahaahaahaahaahcHycHycHycHycHycHycHycHycHyczpcuAcHEcHEcHEcHEcHEcHEcHEcHEcHEcHIcHIcHIcHIcHIcHIcHIcHIcuLcBvcHOcHOcHOcHOcHOcHOcHOcHOcHOaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyahybkQbkQcOsahycOMbkQbkQcMNcOacObcOccjScOecOfcOgcOhcOicMTcOjcOkcOlcOlcOmcOncOocPFcOqcNccNdcNecOrcPPcOtcOtcyzdDHcOvcOtcOwcLGahyahycwhcOxcOycOzcOAcOBcOCcOCcOCcOCcOAcOAcOAcODcOEcOFcOAcOCcOCcOGcOCcOCcOCcOCcOCcOCcOCcOCdlDdBIdBHcKCcOKcLPcLPcOLcLPcLPcPYcONcOOcOPcOQcONcPYcLPcLPcLPcORcLPcLPcKCdBJcHqcBgahyahyahyaahaahaahaahaahaahaahcWudDIdbMdbMdDJcWuaahaahaahaahaahaahaahaahaahaahcPdcPecPfcPgcPhaGYcPjcPkcPdcPlcPmcPncuscPpcPpcPqcPpcutcPrcPscPpcPtcPpcPucPpcPpcvkcPncPwbfocPxcPycPzcPAaEycPCcPDcPEcPxaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyahycQscPGcPGcPHcPGcPIcPJcPKcMNcPLcPMcPMckycPOcRfcPQcPRcPScMTcPTcPUcOocPVcPWcOocPXcRucPZcNccQacQbcQcdcEdDKdDMdDLdDNcQicQjcQkcLGahyahycwhcQlczQczicziczicziczicziczicziczicEDcEDcEEcNscEDczicziczicziczicziczicziczicziczicQmcEDdBKcKCcQocQocLPcQpcQqcQrcRJcQtcOOcQucQvcQwcRJcQxcQocLPcQycQqcQocKCdCRcHqcBgahyahyahyahyaahaahaahaahaahaahcWucWudDPbsUcWucWuaahaahaahaahaahaahaahaahaahaahcPdcQJcQKcQKcQLcQKcQKcQMcQNcQOcQPcQQcQRcQRcQRcQScQRcQTcQUcQVcQWcQXcQRcQYcQRcQRcQRcQQcQZarAcRbcRccRccRccRdcRccRccRecPxaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbLjbLjaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahycSAcRgcRhcRicRjcRkcRlcRmcRncRocRpcRqcRrcmbcRtcSLcRvcRwcRxcMTcRycPUcRzcRAcRBcRCcOlcRDcREcRFcRGcRHcRIcTadDQcRKcRLcRMcRNcROcRPcLGahyahycwhcRQcwhcziahyahyahyahyahyahyahycziczicziczicziczicziaahaahaahaahaahaahaahaahaahcziczicRRdCScKCcRWcRWcRVcLPcRWcNIcRJcRYcOOcOPcOQcRZcRJcRWcRWcLPcRVcRWcRWcKCdCTcSccBgahyahyahyahyahyaahaahaahaahaahahydDRdbMdDUdDRahyaahaahaahaahaahcXGcXGcXGcXGaahcPdcSdcSecSfcSgcShcSicSjcSjcSkcSlcSmcSlcSlcSlcSncSlcSlcSlcSocSpcSqcSqcSrcSqcSqcSqcSscStarBcSucSucSvcSwcSxcSycSyarCcPxaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahbLjbLjaahaahaahaahaahaahaahaahaahbkQbkQahyahyahybkQbkQcTZcSBcSCcPMcSDcPMcSEcSFcSGcSHcPMcPMcSIcmmcSKcUlcSMcSNcSOcMTdgscSQcSRcSScSTcSUcSVcSWcSXcSYcSZcNecRIcUscTbcOtcTccOtdhqarDcTgcLGahyahycwhcRQcwhahyahyahyahyahyahyahyahyahyahyahyahyaahaahaahaahaahaahaahaahaahaahaahaahaahczicThcRScKCcTicTjcTkcLPcTlcTjcRJcTmcTncTocOQcTmcRJcTjcTjcTpcLPcTlcTqcKCcSbcTrcBgahyahyahyahyahyahyahyahyahyahyahydDTdbMdDUdDTahyahyahyaahaahcXGcXGasfasecXGaahcPdcPdcTscTtcTucTvcTwcTxcPdcPncPncPncTycTzcTzcTAcTBcTCcTDcTEcTFcTGdCUcTHcTzcTzasgcPncTDashcPxcTJcTKasicTMcTNcTOcPxcPxaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahbkQcIccIccIccIccIcbkQcTZcSBcTPcTQcTRcTScTTcTUcTVcTWcPMcPMcTXcmncTYcKjcUvcUacUvcMTdgxcUccUdcUecUecUfcPXcPFcUgcUhcUicUjcRIcUkcUycUmcUodcLcUkcUkcUkcLGahyahycwhcUpcwhahyahyahyahyahyahyahyahyahyahyahyahyahyahyaahaahaahaahaahaahaahaahaahaahahyczidCVcRScKCcUrcLPcORcLPcLPcLPcUHcONcOOcOPcOQcONcUHcLPcLPcOLcLPcLPcUtcKCcSbdCWcBgahyahyahyahyahyahyahyahyahyahyahycWudDWdDVcWuahyahyahyahyaahcXGasjaskdaDcXGaahaahcPdcUIcUwcUwcUwcUxcPdcPdaahaahcPncPncUYcUzcUzcUAcPncUBcUCcUDcPncPncPncPncPncPncPncUBcPmcPxcPxcPxcPxcPxcPxcPxcPxaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahahycIccUEcUEcUFcUGcVucVgcUJcUKcULcUMcPMcUMcUNcUOcUPcUQcURcUScmocUUcUVcRqcUWcUXcVQcUZcOocOocOocOocOocVacRucVbcUhcVccNecVddkucVfcWicVhcVicVjdlscVlcVmahyahycwhcRQcwhahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyaahaahaahahyahyahyahyahyahyczicVncEDcKCcLPcLPcVocNEcNEcNEcNDcNCcVpcVqcVrcNycNxcNwcNwcVscLPcLPcLPcKCcGxcVtcBgahyahyahyahyahyahyahyahyahyahyahydDRdbMdbSdDRahyahyahyahyahycXGaslaskasmcXGahyahyahyahyahyahyahyahyaahaahaahaahaahahyahyahyahyahycWvcVvcVwcVxcPnaahaahaahaahaahabTasoasnabTaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahahycIccVycVzcVAcNZahycTZcVBcVCcVDcVEcVFcUMcVGcVHcVIcVJcVKcVKcnlcVMcVNcPMcVOcVPcWBcVRcVScVScVTcOocVUcVVcMTcVWcVXcVYcNecVZcWacWbcWicWccWdcWecWfcWgcVmcwhcwhcwhcRQcwhcWhcWhcWOcWjcWkcWhcWhcWOcWjcWkcWhcWhahyahyahyahyahyahyahyahyahyahyahyahycziczicWlczicKCcWmcWncWocWpcvtcLPcLRcONcOOcOOcOQcONcLRcLPcvtcWpcWqcWrcWscKCcBgcWtcBgcBgahyahyahyahyahyahyahyahyahyahydDTdbMdbSdDTahyahyahyahyahycXGcXGaspcXGcXGahyahyahyahyahyahyahyaahaahaahaahaahahyahyahyahyahyahycXncWwcWxcWycWuaahabTabTabTabTabTastasqabTabTabTabTabTaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahbkQcIccUEcUEcWzcWAcVucXucWCcWDcWEcWFcWGcWHcWIcWJcWJcWJcWFcWFcnmcWKcWLcPMcWMcWNcMTcMTcXycWPcwAcvvcXycWPcWScWTcWUcVYcNecWVcWWcWXcWicWYcWZcXacXbcXccVmdDXcXecXecXfczQcWhcXgcXhcXicXjcXkcXlcXhcXmcXhcXhcWhcWhcXHcXocXocXocXocXocXpcXqcXHcXpcXqcXqcXrcXscXtcKCcKCcNYcKEcKFcKCcKCcKCcYfcXvcXvcKIcYfcKCcKCcKCcNYcKEcKFcKCcKCcXtcXwdCXcXqcXqcZncXzcXzcXzcXAcWucWucWudDYcWucWwdDZcWucZncXzcXzcXAcWucWucXBasvdHkcWucWucWucWucZncXzcXzcXAcWucWucWucWucWucWucWucZncXzcXzcXAcWucXDcXEcXFcWuabTabTaswacwacwasxacuaeVaszasyacwacwabTabTaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahbkQcIccIccIccIccIcbkQcZocXIcXJcVDcXKcXLcUMcUNcXMcXMcXNcUOcVEcnncXPcWFcXQcXRcXScXTcXUcXVcXWcXXcXYcXZcYacYbcYacYccYdcNecYecWacNcdaTcYgcYhcYicYjcYkcVmcRQczQcYlczQczQcYmcYncYocYpcYqcYncYrcYpcYscYtcYucYvcYwcYxcYycYxcYxcYzcYxcYAcYBcYxcYxcYCcYDcYEcYFcYGcYHcYCcYxcYIcYxcYycYJcYKcYxcYxcYxcYLcYxcYMcYNcYycYxcYxcYxcYCcYxcYGcYOcYPcYPcYQcYRcYScYRcYTcYRcYUcYVdCYcYRcYScYRbtlcYRcYRcYRcYWcYRcYXcYScYYasAcYZdCYcYXcYRcZacYRcYRcZbcYRcYRcZccYUdCYcYRcYRcZdcYRcYRcYScYRcYXcZecZfcXFasBasDdlJacuacuacuasEasFaeVacuacuacuacuawwabTaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahbkQcIccZkcZkcZlcZmdbDdbdcZpcZqcVMcZrcPMcUMcUNcZscZtcZucVGcVHcojcZqcZwcZxcZycZqcZzcZAcZBcZCcZDcZEcZFcZGcZHcZGcZIcZJcZKcZLdmbcZNcZOcZPcZQcZRcZScZTcVmcRQcwhcwhcZUcwhcZVcZWcZXcWhcZVcZWcZYcWhcZVcZZdaadabdacdaddaddaddaedaddaddafdaddaddaddagdaedahdaidajdakdagdaddajdaddaddaddaedaddaddaddaddaddafdaddaddaddaddaddagdakdajdaldaddaedagdamdamdamdandamdamdaodamdamdamdambujdamdamdamdapdamdaqdaodardasdatdaudaqdamdandamdamdaodamdamdamdamdamdamdamdavdamdamdaudamdaqdawdaxasUasSasWasVasXasXatbasZatdatcacJacuacuacuadKabTaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahahycIcdaEdaFdaGcNZahycTZdaHdaIdaJdaKcTSdaLcUNdaMdaNaImcUNcPMcokcPMdaQcPMddBcoldaSdaSdbIdaUdaVdaWdbIdaUdaSdaXdaYdaZdbadbbdbcdbNdbedbfdbgdbNdbedbcdbccRQcwhdbhdbidbjcZVdbkdbldbmcWhdbndbldbocZVcWhdbpcXhdbqdbrdbrdbrdbsdbtdbrdbrdbudbrdbrdbvdbwdbxdbydbzcOddbBdbCdcedbCdbCdbEdbFdbCdbCdbGdbCdbCdbCdbHdbCdbCdcfdbCdbBdbJdbzdbydbKdbLdbvdbMdcrdbMdbMdbMdbMdbOdbMdbVdbMdbMdbMdbMdbMdbMdbPdbMcWwdbQdbRdbScXEdbTcWwdbMdcrdbMdbMdbUdbMdbVdbMdbMdbMdbVdbMdbMdbMdbMdbWdbMcWwdbWdbXcXFdbYadCacuacuateatOatfatSatPacJacuacuacuatTabTaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahbkQcIccZkcZkdccdcddcDdczdcgdchdcidaPcPMcUMdcjdckdcldcmdcndcocpfcTQdcpdcmcpgcphdcJdcsdctdcudcvdcwdcxdcydcxddbdcAdcBdcCddndmkdcFdcGdcHdcIddtdcKczfdbcdcMcwhdcNdbidcOcZVdcPdcQdcRcWhdcSdcTdcUcZVcWhcWhcWhcWhcXHcXocXocXocXocXocXpdcVcXHcXpdcWdcXdpPdqIdpQdcXdcWddDdcVcXHcXocXocXocXocXpdcVcXHcXocXocXocXocXpdcVddDddcddddskdtrdstddddddddPddhcZncXzcXzcXzcXzcXAddhcZncXzcXzcXzcXzcXAddhddPddiddjdBAdBCdBBddjddiddPddhcZncXzcXzcXzcXzcXAddhcZncXzcXzcXzcXzcXAddhddPddodBEdBDdBFddsabTaezacuaeVacuacuatVatUacuacuacuacuaeCabTaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyahybkQbkQcOsahycOMbkQbkQcMNcOacObcOccjScOecOfcOgcOhcOicMTcOjcOkcOlcOlcOmcOncOocPFcOqcNccNdcNecOrcPPcOtcOtcyzdDHcOvcOtcOwcLGahyahycwhcOxcOycOzcOAcOBcOCcOCcOCcOCcOAcOAcOAcODcOEcOFcOAcOCcOCcOGcOCcOCcOCcOCcOCcOCcOCcOCdlDdBIdBHcKCcOKcLPcLPcOLcLPcLPcPYcONcOOcOPcOQcONcPYcLPcLPcLPcORcLPcLPcKCdBJcHqcBgahyahyahyaahaahaahaahaahaahaahcWudDIdbMdbMdDJcWuaahaahaahaahaahaahaahaahaahaahcPdcPecPfcPgcPhaGYcPjcPkcPdcPlcPmcPncuscPpcPpcPqcPpcutcPrdEfcPpcPtcPpcPucPpcPpcvkcPncPwbfocPxcPycPzcPAaEycPCcPDcPEcPxaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyahycQscPGcPGcPHcPGcPIcPJcPKcMNcPLcPMcPMckycPOcRfcPQcPRcPScMTcPTcPUcOocPVcPWcOocPXcRucPZcNccQacQbcQcdcEdDKdDMdDLdDNcQicQjcQkcLGahyahycwhcQlczQczicziczicziczicziczicziczidEgdEjcEEcNscEDczicziczicziczicziczicziczicziczicQmcEDdEkcKCcQocQocLPcQpcQqcQrcRJcQtcOOcQucQvcQwcRJcQxcQocLPcQycQqcQocKCdCRcHqcBgahyahyahyahyaahaahaahaahaahaahcWucWudDPbsUcWucWuaahaahaahaahaahaahaahaahaahaahcPdcQJcQKcQKcQLcQKcQKcQMcQNcQOcQPcQQcQRcQRcQRcQScQRcQTcQUcQVcQWcQXcQRcQYcQRcQRcQRcQQcQZarAcRbcRccRccRccRdcRccRccRecPxaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbLjbLjaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahycSAcRgcRhcRicnlcRkcRlcnncRncRocRpcRqcRrcmbcRtcSLcRvcRwcRxcMTcRycPUcRzcRAcRBcRCcOlcRDcREcRFcRGcRHcRIcTadDQcRKcRLcRMcRNcROcRPcLGahyahycwhcRQcwhcziahyahyahyahyahyahyahycziczicziczicziczicziaahaahaahaahaahaahaahaahaahcziczicRRdCScKCcRWcRWcRVcLPcRWcNIcRJcRYcOOcOPcOQcRZcRJcRWcRWcLPcRVcRWcRWcKCdCTcSccBgahyahyahyahyahyaahaahaahaahaahahydDRdbMdDUdDRahyaahaahaahaahaahcXGcXGcXGcXGaahcPddEmcSecSfcSgcShcSicSjcSjcSkcSlcSmcSlcSlcSlcSncSlcSlcSlcSocSpcSqcSqcSrcSqcSqcSqcSscStarBcSucSucSvcSwcSxcSycSydEncPxaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahbLjbLjaahaahaahaahaahaahaahaahaahbkQbkQahyahyahybkQbkQcTZcSBcSCcPMcUMcPMcSEcUNcSGcSHcPMcPMctscmmcSKcUlcSMcSNcSOcMTdgscSQcSRcSScSTcSUcSVcSWcSXcSYcSZcNecRIcUscTbcOtcTccOtdhqarDcTgcLGahyahycwhcRQcwhahyahyahyahyahyahyahyahyahyahyahyahyaahaahaahaahaahaahaahaahaahaahaahaahaahczicThcRScKCcTicTjcTkcLPcTlcTjcRJcTmcTncTocOQcTmcRJcTjcTjcTpcLPcTlcTqcKCcSbcTrcBgahyahyahyahyahyahyahyahyahyahyahydDTdbMdDUdDTahyahyahyaahaahcXGcXGasfasecXGaahcPdcPdcTscTtcTucTvcTwcTxcPdcPncPncPncTycTzcTzcTAcTBcTCcTDcTEcTFcTGdCUcTHcTzcTzasgcPncTDashcPxcTJcTKasicTMcTNdEpcPxcPxaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahbkQcIccIccIccIccIcbkQcTZcSBcTPcTQcTRcTScTTcTUcTVcTWcPMcPMcSIcmncTYcKjcUvcUacUvcMTdgxcUccUdcUecUecUfcPXcPFcUgcUhcUicUjcRIcUkcUycUmcUodcLcUkcUkcUkcLGahyahycwhcUpcwhahyahyahyahyahyahyahyahyahyahyahyahyahyahyaahaahaahaahaahaahaahaahaahaahahyczidCVcRScKCcUrcLPcORcLPcLPcLPcUHcONcOOcOPcOQcONcUHcLPcLPcOLcLPcLPcUtcKCcSbdCWcBgahyahyahyahyahyahyahyahyahyahyahycWudDWdDVcWuahyahyahyahyaahcXGasjaskdaDcXGaahaahcPdcUIcUwcUwcUwcUxcPdcPdaahaahcPncPncUYcUzcUzcUAcPncUBcUCcUDcPncPncPncPncPncPncPncUBcPmcPxcPxcPxcPxcPxcPxcPxcPxaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahahycIccUEcUEcUFcUGcVucVgcUJcUKcULcUMcPMcUMcUNcUOcUPcPMcPMcUOcmocUUcUVcRqcUWcUXcVQcUZcOocOocOocOocOocVacRucVbcUhcVccNecVddkucVfcWicVhcVicVjdlscVlcVmahyahycwhcRQcwhahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyaahaahaahahyahyahyahyahyahyczicVncEDcKCcLPcLPcVocNEcNEcNEcNDcNCcVpcVqcVrcNycNxcNwcNwcVscLPcLPcLPcKCcGxcVtcBgahyahyahyahyahyahyahyahyahyahyahydDRdbMdbSdDRahyahyahyahyahycXGaslaskasmcXGahyahyahyahyahyahyahyahyaahaahaahaahaahahyahyahyahyahycWvcVvcVwcVxcPnaahaahaahaahaahabTasoasnabTaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahahycIccVycVzcVAcNZahycTZcVBcVCcVDcVEcVFcUMcVGcVHcVIcZqcVKcRjcRmcVDcPMcPMcVOcVPcWBcVRcVScVScVTcOocVUcVVcMTcVWcVXdEEcNecVZcWacWbcWicWccWdcWecWfcWgcVmcwhcwhcwhcRQcwhcWhcWhcWOcWjcWkcWhcWhcWOcWjcWkcWhcWhahyahyahyahyahyahyahyahyahyahyahyahycziczicWlczicKCcWmcWncWocWpcvtcLPcLRcONcOOcOOcOQcONcLRcLPcvtcWpcWqcWrcWscKCcBgcWtcBgcBgahyahyahyahyahyahyahyahyahyahydDTdbMdbSdDTahyahyahyahyahycXGcXGaspcXGcXGahyahyahyahyahyahyahyaahaahaahaahaahahyahyahyahyahyahycXncWwcWxcWycWuaahabTabTabTabTabTastasqabTabTabTabTabTaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahbkQcIccUEcUEcWzcWAcVucXucWCcWDcWEcWFcWGcWHcWIcWJcWJcWJcWFcWFcnmcWKcPMcPMcWMcWNcMTcMTcXycWPcwAcvvcXycWPcWScWTcWUcVYcNecWVcWWcWXcWicWYcWZcXacXbcXccVmdEqcXecXecXfczQcWhcXgcXhcXicXjcXkcXlcXhcXmcXhcXhcWhcWhcXHcXocXocXocXocXocXpcXqcXHcXpcXqcXqcXrcXscXtcKCcKCcNYcKEcKFcKCcKCcKCcYfcXvcXvcKIcYfcKCcKCcKCcNYcKEcKFcKCcKCcXtcXwdCXcXqcXqcZncXzcXzcXzcXAcWucWucWudDYcWucWwdDZcWucZncXzcXzcXAcWucWucXBasvdHkcWucWucWucWucZncXzcXzcXAcWucWucWucWucWucWucWucZncXzcXzcXAcWucXDcXEcXFcWuabTabTaswacwacwasxacuaeVaszasyacwacwabTabTaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahbkQcIccIccIccIccIcbkQcZocXIcXJcVDcXKcXLcUMcUNcXMcXMcXNcUOcVEcSDcXPcWJcXQcXRcXScXTcXUcXVcXWcXXcXYcXZcYacYbcYacYccYdcNecYecWacNcdaTcYgcYhcYicYjcYkcVmcRQczQcYlczQczQcYmcYncYocYpcYqcYncYrcYpcYscYtcYucYvcYwcYxcYycYxcYxcYzcYxcYAcYBcYxcYxcYCcYDcYEcYFcYGcYHcYCcYxcYIcYxcYycYJcYKcYxcYxcYxcYLcYxcYMcYNcYycYxcYxcYxcYCcYxcYGcYOcYPcYPcYQcYRcYScYRcYTcYRcYUcYVdCYcYRcYScYRbtlcYRcYRcYRcYWcYRcYXcYScYYasAcYZdCYcYXcYRcZacYRcYRcZbcYRcYRcZccYUdCYcYRcYRcZdcYRcYRcYScYRcYXcZecZfcXFasBasDdlJacuacuacuasEasFaeVacuacuacuacuawwabTaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahbkQcIccZkcZkcZlcZmdbDdbdcZpcZqcVMcZrcPMcUMcUNcZscZtcZucVGcVHcojcZqcVKcZxcZycZqcZzcZAcZBcZCcZDcZEcZFcZGcZHcZGcZIcZJcZKcZLdmbcZNcZOcZPcZQcZRcZScZTcVmcRQcwhcwhcZUcwhcZVcZWcZXcWhcZVcZWcZYcWhcZVcZZdaadabdacdaddaddaddaedaddaddafdaddaddaddagdaedahdaidajdakdagdaddajdaddaddaddaedaddaddaddaddaddafdaddaddaddaddaddagdakdajdEFdaddaedagdamdamdamdandamdamdaodamdamdamdambujdamdamdamdapdamdaqdaodardasdatdaudaqdamdandamdamdaodamdamdamdamdamdamdamdavdamdamdaudamdaqdawdaxasUasSasWasVasXasXatbasZatdatcacJacuacuacuadKabTaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahahycIcdaEdaFdaGcNZahycTZdaHdaIdaJdaKcTSdaLcUNdaMdaNaImcUNcPMcokcPMdaQcPMddBcoldaSdaSdbIdaUdaVdaWdbIdaUdaSdaXdaYdaZdbadbbdbcdbNdbedbfdbgdbNdbedbcdbccRQcwhdErdbidbjcZVdbkdbldbmcWhdbndbldbocZVcWhdbpcXhdbqdbrdbrdbrdbsdbtdbrdbrdbudbrdbrdbvdbwdbxdbydbzcOddbBdbCdcedbCdbCdbEdbFdbCdbCdbGdbCdbCdbCdbHdbCdbCdcfdbCdbBdbJdbzdbydbKdbLdbvdbMdcrdbMdbMdbMdbMdbOdbMdbVdbMdbMdbMdbMdbMdbMdbPdbMcWwdbQdbRdbScXEdbTcWwdbMdcrdbMdbMdbUdbMdbVdbMdbMdbMdbVdbMdbMdbMdbMdbWdbMcWwdbWdbXcXFdbYadCacuacuateatOatfatSatPacJacuacuacuatTabTaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahbkQcIccZkcZkdccdcddcDdczdcgdchdcidaPcPMcUMdcjdckdcldcmdcndcocpfcTQdcpdcmcpgcphdcJdcsdctdcudcvdcwdcxdcydcxddbdcAdcBdcCddndmkdcFdcGdcHdcIddtdcKczfdbcdcMcwhdEsdbidcOcZVdcPdcQdcRcWhdcSdcTdcUcZVcWhcWhcWhcWhcXHcXocXocXocXocXocXpdcVcXHcXpdcWdcXdpPdqIdpQdcXdcWddDdcVcXHcXocXocXocXocXpdcVcXHcXocXocXocXocXpdcVddDddcddddskdtrdstddddddddPddhcZncXzcXzcXzcXzcXAddhcZncXzcXzcXzcXzcXAddhddPddiddjdBAdBCdBBddjddiddPddhcZncXzcXzcXzcXzcXAddhcZncXzcXzcXzcXzcXAddhddPddodBEdBDdBFddsabTaezacuaeVacuacuatVatUacuacuacuacuaeCabTaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahbkQcIccIccIccIccIcbkQddWdducXJddvddwcTSddxcPMcUOcVFcVEcPMcPMcpkddzcWLddAdfwcpideedcsdcudcudcvdcwddEddEddFddGddHddIdcCddJddKddKddKddLddMddNddNdBGdbccRQcwhdekddQddRcZVddSddTddScWhddUddVddUcZVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadeqddXddYddZdeadebdeqaaaaaaaaaaaaaaadeddeddeddeddeddeddedaaaaaaaaaaaaaaadeWdefdegdehdeidejdeWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfbdeldemdendeodepdfbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfcderdesdetdeuddsatWatYatXauaatZaegacuaeXaubaciaeYabTabTaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahbkQcIcdevdevdewcZmdbDdbddexcZqdeydezcVNcUMcPMdcjdclcVHcSHcPMcpKcWLcVIcVJcqacqEdeCdeDdcudeEdeFdeGcvzcuRdeJdeKdeLdeMdeNddJddKddKdeOdePdeQdeRddKdeSdbccRQcwhahyahyahycZVddSdeTddScWhddUdeUddUcZVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVaaaaaadfhdeXdeYdeZdeadfadfmaaaaaaaaaaaadeddeddeddeddeddeddeddeddedaaaaaaaaaaaadfBdfddegdfedffdfgdfBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfIdfidfjdfkdeodfldfIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfLderdesdfndfoddsabTabTabTaflaflafmaflaflabTabTabTabTaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahahycIcdfpdfqdfrcNZahycTZdfscPMcUMcWLcVIdeydftcZqdfucZqdftcZqcrbcWLcPMcPMdhcdhddfydfzdcudcudfAaIndcucAvdfEddbdfFdfGdfHddndfXdfJdfKdfYdfMdfYdfNdbcdbccRQcwhahyahyahyahyddSdfOddScZVddUdfPddUdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdgwdfRdfSdfTdfUdfVdfWdhgdcWaaaaacaaadeddeddeddeddeddeddeddeddeddeddedaaaaacaaaddcdhudfZdgadgbdgcddcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddidgddemdgedgfdggddiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddodghdgidgjdgkddsaahaflagBaflaudafBaueafDafEaflaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahahycIcdevdevdgldcddcDdczdgmcTSdgncWLcPMdgocTTcTSdgpcTScTScTScrcdgpdgqcPMdiccredaSdgtdcudgudgvdhzcAzcAvdgydgzdgAddIdgBdgCdgCdgCdgCdgCdgCdgCdgCdbcdgDdgEcwhcwhcwhahyahydgFdgGdgHaaadgIdgJdgKdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdgLdgMdgNdgOdgPdgQdgRdfadeqaaaaaaaaadeddeddeddeddeddeddeddeddeddeddedaaaaaaaaadeWdfddgSdgTdeidfgdeWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfbdfidemdgUdgVdfldfbaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfcderdgWdgjdgXddsaahaflauPaflafPafQafRaflaflaflaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahbkQcIccIccIccIccIcbkQddWdgYcXJcPMcWLcPMcPMdgZdhacWLcPMcPMdhactkcthctsctpcOJcOudaSdhedcudcucyNdhEdcucBZdhidgzdhjdfGdhkdhldhmdhndhodhpdiodindipdhrdhsdhtczQczQcwhahyaaaaaaaaaaaaaaaaaaaaaaaadeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdhIdfRdhvdfTdhwdhxdgRdhydfhaaaaaaaaadeddeddeddeddeddeddeddeddeddeddedaaaaaaaaadhMdhAdhBdgadhCdhDdhMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadifdhFdemdgedhGdhHdifaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiydhJdesdhKdhLddsaahaflagAaflagfaggaggaghafEaflaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahbkQbkQahyahyahybkQbkQdiLdhNdhOdhPcVIdhQdhRdhSdhTdhUdhVdhWdhXdhYdhZdiadibcPMcuFdaSdiedcudcucyNdiYdcucAvdigdgzdfFdihdgBdiidijdikdildimdirdiqdiTdiSdiVdiUdjMdjLcwhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVaaaaaadfmdeXddYddZdgRdfadfmaaaaaaaaadeddeddeddeddeddeddeddeddeddeddedaaaaaaaaadfBdfddgSdehdeidfgdfBaaaaaaaaaaaaaaadisditdiudiudiudivdiwaaaaaaaaaaaaaaadfIdfidemdendhGdfldfIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfLderdesdixdgXddsaahaflaflaflaflagqaflaflaflaflaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahahycIcdfpdfqdfrcNZahycTZdfscPMcUMcWLcVIdeydftcZqdfucZqdftcZqcrbcWLcPMcPMdhcdhddfydfzdcudcudfAaIndcucAvdfEddbdfFdfGdfHddndfXdEtdfKdfYdfMdfYdfMdbcdbccRQcwhahyahyahyahyddSdfOddScZVddUdfPddUdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdgwdfRdfSdfTdfUdfVdfWdhgdcWaaaaacaaadeddeddeddeddeddeddeddeddeddeddedaaaaacaaaddcdhudfZdgadgbdgcddcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddidgddemdgedgfdggddiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddodghdgidgjdgkddsaahaflagBaflaudafBaueafDafEaflaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahahycIcdevdevdgldcddcDdczdgmcTSdgncWLcPMdgocTTcTSdgpcTScTScTScrcdgpdgqcPMdiccredaSdgtdcudgudgvdhzcAzcAvdgydgzdgAddIdgBdgCdgCdgCdgCdgCdgCdgCdgCdbcdgDdgEcwhcwhcwhahyahydgFdgGdgHaaadgIdgJdgKdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdgLdgMdgNdgOdgPdgQdgRdfadeqaaaaaaaaadeddeddeddeddeddeddeddeddeddeddedaaaaaaaaadeWdfddgSdgTdeidfgdeWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfbdfidemdgUdgVdfldfbaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfcderdgWdgjdgXddsaahafldEuaflafPafQdmtaflaflaflaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahbkQcIccIccIccIccIcbkQddWdgYcXJcPMcWLcPMcPMcUMdhacWLcPMcPMdhactkcthcSFctpcOJcOudaSdhedcudcucyNdhEdcucBZdhidgzdhjdfGdhkdhldhmdhndhodhpdiodEvdipdhrdhsdhtczQczQcwhahyaaaaaaaaaaaaaaaaaaaaaaaadeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdhIdfRdhvdfTdhwdhxdgRdhydfhaaaaaaaaadeddeddeddeddeddeddeddeddeddeddedaaaaaaaaadhMdhAdhBdgadhCdhDdhMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadifdhFdemdgedhGdhHdifaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiydhJdesdhKdhLddsaahaflagAaflagfaggaggaghafEaflaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahbkQbkQahyahyahybkQbkQdiLdhNdhOdhPcVIdhQdhRcTXdhTdhUdhVdhWdhXdhYdhZcUQdibcPMcuFdaSdiedcudcucyNdiYdcucAvdigdgzdfFdihdgBdiidijdikdildimdirdiqdiTdiSdiVdiUdjMdjLcwhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVaaaaaadfmdeXddYddZdgRdfadfmaaaaaaaaadeddeddeddeddeddeddeddeddeddeddedaaaaaaaaadfBdfddgSdehdeidfgdfBaaaaaaaaaaaaaaadisditdiudiudiudivdiwaaaaaaaaaaaaaaadfIdfidemdendhGdfldfIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfLderdesdixdgXddsaahaflaflaflaflagqaflaflaflaflaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahahyahyahyahyahydjtdizdiAdiBdiCdiBdiDdiEdiCdiBdiFdiEdiCdiCdiDdiGcuKcOXdaSdiHdiIdiJdiKdjucCgcCadiOdgzdfFdihdgBdiidijdiPdiQdiRdkqdjNcwhdhrdhsdhtdkSdiWcwhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiXdcWdjvdiZdjadcXdcXdcXdcXdcXdcWdjwddYdjcdjddjedcWaaaaaaaaadeddeddeddeddeddeddeddeddeddeddedaaaaaaaaaddcdjfdjgdjhdeidjiddcaaaaaaaaaaaaaaadjjdjkdjkdjkdjkdjkdjjaaaaaaaaaaaaaaaddidjldemdjmdjndjoddiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddodjpdjqdjrdjsddsaahaahaahaflagyaggagzaflaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaaaaaaaaaahydkCdjxdbDdbDdkJdjxdkLdbDdkJdjxdkLdbDdkJdkUcOsbkQcuKcPNdaSdgzdgzdgzdgzdgzdgzdjydgzdgzdjzdjAdjBdjCdjCdjCdjCdjCdjCdjCdjCdjCdlrdljcwhcwhcwhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadeqdeXddYddZdgRdfadeqaaaaaaaaadeddeddeddeddeddeddeddeddeddeddedaaaaaaaaadeWdfddgSdehdeidfgdeWaaaaaaaaaaaaaaadjjdjDdjEdjkdjEdjDdjjaaaaaaaaaaaaaaadfbdfidemdendhGdfldfbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfcderdesdixdgXddsaahaahaahaflagyagLagzaflaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAacAacAacAacAacAacAacAacAacAacAacAacAacAacAacAacAacAacAacAacAacAacAaaadjFaaabkQcIcdjGcNZcMKcIcdjGcNZcMKcIcdjGcNZcMKcIccuKcRacRsdjHdkodjIcRXcRTcSacCqdjOdjPdjQdjRdjSdjCdjTdjUdjVdjWdjXdjYdjZdjCdjCdhtcwhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgwdfRdfSdkadfUddZdgRdebdfhaaaaaadeddeddeddeddeddeddeddeddeddeddeddeddedaaaaaadhMdejdgSdehdeidgSdhMaaaaaaaaaaaadisdkbdkcdkcdkddkcdkcdkbdiwaaaaaaaaaaaadifdhGdemdendhGdepdifaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiyderdesdixdgXddsddsaahaahaflaflaflaflaflaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaaaaaaaaaahydkCdjxdbDdbDdkJdjxdkLdbDdkJdjxdkLdbDdkJdkUcOsbkQcuKcPNdaSdgzdgzdgzdgzdgzdgzdjydgzdgzdjzdjAdjBdjCdjCdjCdjCdjCdjCdjCdjCdjCdEwdljcwhcwhcwhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadeqdeXddYddZdgRdfadeqaaaaaaaaadeddeddeddeddeddeddeddeddeddeddedaaaaaaaaadeWdfddgSdehdeidfgdeWaaaaaaaaaaaaaaadjjdjDdjEdjkdjEdjDdjjaaaaaaaaaaaaaaadfbdfidemdendhGdfldfbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfcderdesdixdgXddsaahaahaahaflagyagLagzaflaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAacAacAacAacAacAacAacAacAacAacAacAacAacAacAacAacAacAacAacAacAacAacAaaadjFaaabkQcIcdjGcNZcMKcIcdjGcNZcMKcIcdjGcNZcMKcIccuKcRadExdjHdkodjIcRXcRTcSacCqdjOdjPdjQdjRdjSdjCdjTdjUdjVdjWdjXdjYdjZdjCdjCdhtcwhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgwdfRdfSdkadfUddZdgRdebdfhaaaaaadeddeddeddeddeddeddeddeddeddeddeddeddedaaaaaadhMdejdgSdehdeidgSdhMaaaaaaaaaaaadisdkbdkcdkcdkddkcdkcdkbdiwaaaaaaaaaaaadifdhGdemdendhGdepdifaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiyderdesdixdgXddsddsaahaahaflaflaflaflaflaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaaaadaadaadaaaaadaadaadaaaaadaadaadaaaaadaadaadaaaaadaadaadaaaacAaaddkeaadbkQcIcdkfdkgdkhcIcddrdcYdfQcIcdkldkmdkncIccuKcChcDNdjHdlmdkpdkrdksdlpdktdlMdjPdkvdkwdkxdjCdkydkydkzdjXdjXdkAdkAdEbdjCdhtcwhdkYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkDdkEdkFdkGdkHddZdkIdlEdfSdfRdkKdeddeddeddeddeddeddeddeddeddeddeddeddeddlUdkMdkNdkOdkPdehdeidfgdhMaaaaaadisdkcbwQdlWdHmdHldjkdHldHnbCYbEMdkcdiwaaaaaadifdfidemdendkTdlYdkVdkWdkXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmGdkZdladlbdlcdixdgXdldddsaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaadledlfdlgaaadledlfdlgaaadledlfdlgaaadledlfdlgaaadledlfdlgaaaacAaadaadaaaaaacIcdlhdlidlhcIcdkjdkidkjcIcdlkdlldlkcIccuKcGMcGNdjHcSzdlndlodlpdlpdlqcHBdltdludlvdlwdlxdlydlzdlAdlzdlzdlBdlzdEcdjCdhtdDadoidlFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhIdfRdhvdkadlGdlHdlIaOpdlKdlLaOrdeddeddeddeddeddeddeddeddeddeddeddeddeddlNdlOdlPaOsdlRdlSdlTdokdkNdkMdlVdjjbuAdjkdjkdjkdjkdjkdjkdjkdjkdjkbuAdjjdoEdkWdkVdkXdlZdmadDbdmcdmddmedmfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmgdmhdmidmjdDcdixdgXdmlddsaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaddledmmdlgaaddledmmdlgaaddledmmdlgaaddledmmdlgaaddledmmdlgaadacOaaaaadaadaaacIcdlhdmndlhcIcdkjdkkdkjcIcdlkdmpdlkcIccuKcvwcHLdjHcSzdmqdlpdlpdlpdmrdmsdmudmvdmwdmxdmydmzdmAdmBdmCdmCdmDdlzdEddjCdhtczQdmFdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfmdeXddYddZdmHaOtdmJdmKaOudeddeddeddeddeddeddeddeddeddeddeddeddeddmMdmNdmOaPedmQdehdmRdmSdmTdgSdmSdkddjkdjkdjkdmUdmUdjkdmUdmUdjkdjkdjkdkddmVdhGdmWdmVdmXdendmYdmZdnadnbdncaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnddnednfdngdnhdixdgXdniddsaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaadledmmdlgaaadledmmdlgaaadledmmdlgaaadledmmdlgaaadledmmdlgaaaaadaaaaaaaadaadcIccIccIccIccIccIccIccIccIccIccIccIccIccuKcvwcHLdjHdlmdkpdlodlpdlpdktdlQdjPdfFdihdnkdjCdnldnmdnndnodnpdnqdnrdnsdjCdntczQdnudppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiXdcWdjvdiZdjadcXdcXdcXdcXdcXdcWdnvddYddZdnwdlEdhvdfRdfTdeddeddeddeddeddeddeddeddeddeddeddeddeddokdkMdnxdkOdnydehdnzdokdnxdkMdkOdjjdqwdjkdjkdjkdjkdjkdjkdjkdjkdjkdqxdjjdlYdkWdnAdkXdnBdendnCdlYdnAdkWdkXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmGdkZdnDdlbdnEdixdgXdnFddsaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaadledlfdlgaaadledlfdlgaaadledlfdlgaaadledlfdlgaaadledlfdlgaaaacAaadaadaaaaaacIcdlhdlidlhcIcdkjdkidkjcIcdlkdlldlkcIccuKcGMcGNdjHcSzdlndlodlpdlpdlqcHBdltdludlvdlwdlxdlydlzdlAdlzdlzdlBdlzdEcdjCdhtdEydoidlFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhIdfRdhvdkadlGdlHdlIaOpdlKdlLaOrdeddeddeddeddeddeddeddeddeddeddeddeddeddlNdlOdlPaOsdlRdlSdlTdokdkNdkMdlVdjjbuAdjkdjkdjkdjkdjkdjkdjkdjkdjkbuAdjjdoEdkWdkVdkXdlZdmadDbdmcdmddmedmfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmgdmhdmidmjdDcdixdgXdmlddsaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaddledmmdlgaaddledmmdlgaaddledmmdlgaaddledmmdlgaaddledmmdlgaadacOaaaaadaadaaacIcdlhdmndlhcIcdkjdkkdkjcIcdlkdmpdlkcIccuKcvwcHLdjHcSzdmqdlpdlpdlpdmrdmsdmudmvdmwdmxdmydmzdmAdmBdmCdmCdmDdlzdEddjCdhtczQdEzdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfmdeXddYddZdmHaOtdmJdmKaOudeddeddeddeddeddeddeddeddeddeddeddeddeddmMdmNdmOaPedmQdehdmRdmSdmTdgSdmSdkddjkdjkdjkdmUdmUdjkdmUdmUdjkdjkdjkdkddmVdhGdmWdmVdmXdendmYdmZdnadnbdncaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnddnednfdngdnhdixdgXdniddsaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaadledmmdlgaaadledmmdlgaaadledmmdlgaaadledmmdlgaaadledmmdlgaaaaadaaaaaaaadaadcIccIccIccIccIccIccIccIccIccIccIccIccIccuKcvwcHLdjHdlmdkpdlodlpdlpdktdEAdjPdfFdihdnkdjCdnldnmdnndnodnpdnqdnrdnsdjCdntczQdnudppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiXdcWdjvdiZdjadcXdcXdcXdcXdcXdcWdnvddYddZdnwdlEdhvdfRdfTdeddeddeddeddeddeddeddeddeddeddeddeddeddokdkMdnxdkOdnydehdnzdokdnxdkMdkOdjjdqwdjkdjkdjkdjkdjkdjkdjkdjkdjkdqxdjjdlYdkWdnAdkXdnBdendnCdlYdnAdkWdkXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmGdkZdnDdlbdnEdixdgXdnFddsaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaadledmmdlgaaadledmmdlgaaadledmmdlgaaadledmmdlgaaadledmmdlgaaaaadaaaaaaaaaaadaadaadaadaaaaaaaadaadaadaaabkQdnGdnGdnGcuKcSJcuKdjHdkodnHcTLcTIcUTcHPdjHdjHdnNdnOdnPdjCdjCdnQdnodnRdnSdnTdnrdjCdjCdhtczQdnudppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnUdnUdnUdnUdnUdnUdnUdnUdnUdnUdnUaaaaaaaaadeqdeXdnVdnWdgRdeXdfhaaaaaadeddeddeddeddeddeddeddeddeddeddeddeddedaaaaaadhMdnXdgSdnYdnZdnXdhMaaaaaadoadjkdmUdmUdmUdmUdjkdmUdmUdmUdmUdjkdoaaaaaaadifdocdoddoedhGdocdifaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiydofdesdogdohddsddsaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAacAacAaadaaadledmmdlgaaadledmmdlgaaadledmmdlgaaadledmmdlgaaadledmmdlgaaaaadaaaaaaaaaaaaaaddqrdojdojdojdojdnGdqLdoldnGdnGdomdomdoncvEcvKdjHdjHdjHdjHdjHdjHdjHdjHdoqdordosdotdoudjCdjCdjCdjCdjCdjCdjCdjCdjCdhtczQdovdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnUdnUdnUdnUdnUdnUdnUdnUdnUdnUdnUdnUdgwdfRdfSdkadfUddZdgRdhydfhaaaaaadeddeddeddeddeddeddeddeddeddeddeddeddedaaaaaadhMdhAdgSdehdeidowdhMaaaaaadoxdjkdjkdjkdjkdjkbvidjkdjkdjkdjkdjkdoxaaaaaadifdozdemdendhGdhHdifaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiydhJdesdixdoAddsaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaaaadaaaaaaaadbCWaadaaaaadbCWaadaaaaadbCWaadaaaaadbCWaadaaaaadbCWaadaaadoDaaaaaadqNdoFdoFdoGdoHdoIdoJdoKdoLdoMdoNdoOdoPdoQdoQdoRcvQdoTdoUdoVdoWdoRdoOdoXdoYdoZdpadpbdpcdpddpedpfdpgdphdpidpjdpkdpldpmdpndhtdpodqTdpqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnUdnUdnUdnUdnUdnUdnUdnUdnUdnUdnUdnUdprdpsdptdpudpvdpwdpxdeXdfhaaaaaadeddeddeddeddeddeddeddeddeddeddeddeddedaaaaaadhMdnXdpydpzdeidnXdhMaaaaaadpAdjkdmUdmUdmUdmUdjkdmUdmUdmUdmUdjkdpAaaaaaadifdocdemdpBdpCdocdifaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiydofdpDdpEdgXddsaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -9982,7 +10006,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIds
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaadueaaaaadaaaaaaaaaaadaadaadaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaadaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkQduAdwadvodwbduAdqOdwcdwddqOdqQdqQdweduadxSdwgdwhdwgdwiduadqWdwjdqWduaduaduaduadwkdwldwmdwmdwldwnaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfhdeXdeYdwodgRdfadeqaaaaaadeddeddeddeddeddeddeddeddeddeddeddeddedaaaaaadeWdfddgSdwpdffdfgdeWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfbdfidfjdwqdhGdfldfbaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaaaaadfcdwrdwsdwtddsaahaahdqEdwudwvdwudqEdwwdwxdwwdqEaahaahaahaahaahaahdvjdwydwzdwAdvjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdwBdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaduedueduedueaczacOacAaadaadaadacAaadaadaadaadacOacOacAaadaadaadacOacAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkQdvmdwCdvodwDdvmduadwEdwFdwGdwHdwIdwJdwKdwLdwMdwNdwOdwPdwQdwRdwSdwTdwUdwVdwVduadwWdwmdwXdwYdwmdwZdxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfmdxbdxcaWIdxedxfdfmaaaaaadeddeddeddeddeddeddeddeddeddeddeddeddedaaaaaadfBdxgdxhdxidxjdxkdfBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfIdxldxmdxndxodxpdfIaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaadfLdxqdxrdxsddsaahahydqEdwudxtdwudqEdwwdxudwwdqEaahaahaahaahaahaahdvjdxvdxwdxxdvjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkQduAdxydxydxyduAduadwUdxzdxAdxBdxCdxDdxEdxFdxGdxHdxGdxGdxGdxGdxGdxIdxJdwVdwVduadwkdwldwZdwWdwldwndueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiXdcWdjvdiZdjadcXdcXdcXdcXdcXdcWdcWdxVbbgbbgdcWdcWaaaaaaaaaaaaaaaaaadeddeddeddeddedaaaaaaaaaaaaaaaaaaddcddcdxMdxMdxYddcddcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddiddidyadxPdxPddiddiaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAddoddodxQdxRdyPddoaahahydusdwudxTdwudusdwwdxUdwwdusahyahyaahaahaahaahdzgdxWdxXdztdxZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahydzNdvmdybdybdycdvmduadwUdxzdyddyedyfdygdyhdyhdyidyjdykdyldymdyndyodypdyqdyrdysduadytdwldwXdwYdwldyudueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaadeqdyvdywbffdeqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadeWdyydyzdyAdeWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfbdyBdyCdyDdfbaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdyEdyFdyGdyHdyIdfcahyahyahydyJdyKdyLaaadyMdyNdyOahyahyahyahyahyahybkQbkQdzOdhhdzOaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahydzNdvmdybdybdECdvmduadwUdxzdyddyedyfdygdyhdyhdyidyjdykdyldymdyndyodypdyqdyrdysduadytdwldwXdwYdwldyudueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaadeqdyvdywbffdeqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadeWdyydyzdyAdeWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfbdyBdyCdyDdfbaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdyEdyFdyGdyHdyIdfcahyahyahydyJdyKdyLaaadyMdyNdyOahyahyahyahyahyahybkQbkQdzOdhhdzOaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyRaaaaaadyRaaaaaaaaadyRaaaaaaaaaaaaaaadyRaaaaaaaaadyRaaaaaadyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahydnGduzduAdySduAduzduadwUdxzdyTdyUdyVdwUdwUdwUdyWdyXdyYdyZdyZdzadzbdzcdzddzedzfdzUdzhdwmdwZdwWdwmdwXdueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfhbhpdxebiXdfhaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhMdzkdxhdzldhMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadifdzmdxodzndifaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdzodzpdzqdzrdzsdiyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyaaaaaaaaaaadaadaaadzOdiddzOaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRaaaaaaaaadyRdyRdyRdyRdyRdyRdyRaaaaaaaaadyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadzvdnGdzNbkQdzNdnGduadzwdxzdzxdzydzzdwUdzAdzBdzCdzDdzEdzFdzGdzHdzIdzJdzKdzLdzMdBwdzhdwldwXdwYdwldyudueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBxdfTboablKdfmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfBdzRdzSdokdzTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBydkXdzVdzWdfIaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdmGdkZdzXdkZdkZdzYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaadAadzudAaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaadyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahydBzahyahyduadAbdyTdAcdAddAedwUdAfduadAgdAhdAiduadAjdAkdAldAmdAndAodApduadwkdwldwZdwWdwldwndueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNbaNbaNbaNbaaaaaaaaaaaaaNbaNbaNbaNbaNbaaaaaaaaaaaaaaaaaadAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaadaadaaaaaaaaaaaadjKaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/maps/polaris-2.dmm b/maps/polaris-2.dmm
index 14cc577fa6..39e0f57dab 100644
--- a/maps/polaris-2.dmm
+++ b/maps/polaris-2.dmm
@@ -2027,7 +2027,7 @@
"aMY" = (/obj/structure/toilet{dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom)
"aMZ" = (/obj/structure/bed/chair{dir = 1},/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram)
"aNa" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "centcom_dock_airlock"; locked = 1; name = "Arrivals Airlock"; req_access = list(13)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal)
-"aNb" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "shuttle_dock_south_mech"; pixel_y = 19},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom)
+"aNb" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom)
"aNc" = (/obj/machinery/status_display{pixel_y = 30},/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom)
"aNd" = (/obj/machinery/camera/network/crescent{c_tag = "Shuttle Center"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom)
"aNe" = (/obj/machinery/vending/medical,/turf/unsimulated/wall,/area/centcom/medical)
@@ -2043,7 +2043,7 @@
"aNo" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome)
"aNp" = (/obj/structure/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome)
"aNq" = (/obj/structure/bed/chair,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram)
-"aNr" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "shuttle_dock_north_mech"; pixel_y = -19},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom)
+"aNr" = (/obj/structure/mirror{pixel_x = -28},/turf/unsimulated/floor{icon_state = "lino"},/area/wizard_station)
"aNs" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/green{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"aNt" = (/obj/effect/floor_decal/corner/green{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"aNu" = (/obj/machinery/sleeper{dir = 8},/obj/effect/floor_decal/corner/green{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
@@ -2118,7 +2118,6 @@
"aOL" = (/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve)
"aOM" = (/obj/machinery/vending/coffee,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve)
"aON" = (/obj/machinery/status_display{pixel_y = -30},/obj/machinery/light,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom)
-"aOO" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "shuttle_dock_south_starboard_mech"; pixel_y = -19},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom)
"aOP" = (/obj/machinery/door/airlock/medical{name = "Observation Room"},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"aOQ" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"aOR" = (/obj/structure/closet/l3closet/virology,/obj/item/clothing/mask/gas,/obj/effect/floor_decal/industrial/warning{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
@@ -2911,14 +2910,14 @@ aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaa
aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAFaaPaaPaKxaKNaLAaLGaMAaMwaMBaMyaMAaLBaLHaKTaKBaaPaaPaAFaAZaAZaAZaJKaLaaJXaJXaJXaJXaJXaJXaJXaJXaJXaJXaJXaJXaJXaMkaJKaKHaKHaKHaKHaKHaKHaMCaMCaMCaMCaMCaMCaMCaMCaKraaPaaPaMDaMDaMDaMEaMEaMFaMEaMEaMDaMDaMDaaPaaPaKvaMGaKvaMHaKvaMIaKvaMpaMpaKvaMJaKvaMKaKvaMLaFQaJRaJRaJRaJRaJRaJRaGtaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaAEaAEaAEaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAEaAEaAZaAZaAZaAEaAEaAEaMMaMNaKYaLGaMOaLmaMPaLmaMQaLBaKYaMNaMMaAEaAEaAEaAZaAZaAZaJKaLaaJXaKcaLIaLIaLIaKUaKcaLIaLIaKUaJXaJXaJXaMzaJKaMRaMSaMSaKHaKHaMTaMUaMUaMUaMVaMUaMUaMUaMUaKraaPaaPaMDaMWaMXaMEaMXaMXaMXaMEaMXaMWaMDaaPaaPaKvaMYaKvaMYaKvaMYaKvaMpaMpaKvaMYaKvaMYaKvaMYaFQaJRaJRaMZaMZaMZaMZaGtaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaCxaCyaCzaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaCzaCyaCxaAZaAZaAZaNaaCyaNaaNbaKYaKYaKYaNcaNdaKYaKYaNcaKYaKYaKYaNbaNaaCyaNaaAZaAZaAZaJKaJMaJXaKnaJMaJMaJMaLaaKnaNeaLraLaaKcaNfaNgaNhaJKaNiaNjaNkaKHaKHaMTaNlaNmaNmaNmaNmaNmaNmaNmaKraaPaaPaMDaMXaNnaNoaMXaMXaMXaNoaNpaMXaMDaaPaaPaKvaKvaKvaKvaKvaKvaKvaMpaMpaKvaKvaKvaKvaKvaKvaFQaJRaJRaNqaNqaNqaNqaGtaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
-aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaCxaCyaCzaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaCzaCyaCxaAZaAZaAZaNaaCyaNaaNraKYaKYaKYaKYaKYaKYaKYaKYaKYaKYaKYaNraNaaCyaNaaAZaAZaAZaJKaNsaJXaJYaNtaNuaNvaKbaJYaNwaJKaNxaNyaJKaJKaJKaJKaNzaNAaNBaKHaKHaMTaNmaNmaNmaNmaNmaNmaNmaNmaKraaPaaPaMDaMEaMXaMEaMXaMXaMXaMEaMXaMEaMDaaPaaPaKvaNCaMpaNCaMpaNCaMraMpaMpaNDaNCaMpaNCaMpaNCaFQaJRaJRaJRaJRaJRaJRaGtaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
+aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaCxaCyaCzaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaCzaCyaCxaAZaAZaAZaNaaCyaNaaNbaKYaKYaKYaKYaKYaKYaKYaKYaKYaKYaKYaNbaNaaCyaNaaAZaAZaAZaJKaNsaJXaJYaNtaNuaNvaKbaJYaNwaJKaNxaNyaJKaJKaJKaJKaNzaNAaNBaKHaKHaMTaNmaNmaNmaNmaNmaNmaNmaNmaKraaPaaPaMDaMEaMXaMEaMXaMXaMXaMEaMXaMEaMDaaPaaPaKvaNCaMpaNCaMpaNCaMraMpaMpaNDaNCaMpaNCaMpaNCaFQaJRaJRaJRaJRaJRaJRaGtaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaAEaAEaAEaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAEaAEaAZaAZaAZaAEaAEaAEaMMaNEaKYaLGaMvaLBaKYaLGaMvaLBaKYaNFaMMaAEaAEaAEaAZaAZaAZaJKaNsaJXaJXaJXaJXaJXaJXaJXaNGaJKaNxaNHaNIaNIaNJaJKaNKaNLaNMaKHaKHaNmaNmaNmaNNaNOaNPaNQaNmaNmaKraaPaaPaMDaMXaMXaMXaMXaMXaMXaMXaMXaMXaMDaaPaaPaKvaMpaMpaMpaMpaMpaMpaMpaMpaMpaMpaMpaMpaMpaMpaFQaNRaJRaJRaJRaJRaGtaGtaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAFaaPaaPaMvaLBaKYaLGaNSaLBaKYaLGaNSaLBaKYaLGaMvaaPaaPaAFaAZaAZaAZaJKaNsaJXaJXaJXaNTaNUaJXaJXaNVaJKaNxaJXaNWaNXaNYaJKaKraKraKraKraKraKraKraKraKraKraKraKraKraKraKraMDaMDaMDaMXaMXaMXaMXaMXaMXaMXaMXaMXaMDaMDaMDaKvaNZaMpaNZaMpaNZaMraMpaMpaNDaNZaMpaNZaMpaNZaFQaGtaGtaGtaGtaGtaGtaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAFaruaruaruaruaruaruaruaruaruaruaruaruaruaruaruaruaruaAFaAZaAZaOaaAFaaPaaPaNSaLBaKYaLGaNSaLBaLoaLGaNSaLBaKYaLGaNSaaPaaPaAFaAZaAZaAZaJKaObaJXaJXaJXaJXaJXaJXaJXaOcaJKaNxaJXaJXaOdaNYaJKaOeaOfaOfaOfaOgaMDaMXaMXaMXaMXaMXaMXaMXaMXaMXaMXaMXaMDaMDaOhaMDaMDaMXaMDaMDaOhaMDaMDaMXaMXaMDaMDaMDaKvaKvaKvaKvaKvaKvaKvaKvaKvaKvaKvaKvaKvaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAFaaPaaPaMAaLBaKYaLGaNSaLBaKYaLGaNSaLBaKYaLGaMAaaPaaPaAFaAZaAZaAZaJKaOiaJXaJXaJXaOjaOkaJXaJXaOlaJKaOmaOnaJXaOoaOpaJKaOqaJXaJXaJXaOraMDaMXaMDaMDaMDaMDaOsaMDaMDaMDaMXaMXaMXaMXaMXaMXaMDaMXaMDaMXaMXaMXaMXaMXaMXaMXaMXaMDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaAEaAEaAEaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAEaAEaAZaAZaAZaAEaAEaAEaMMaOtaKYaLGaMAaLBaKYaLGaMAaLBaKYaOuaMMaAEaAEaAEaAZaAZaAZaJKaLaaJXaJXaJXaKcaLIaKUaJXaOvaJKaJKaJKaOwaJKaJKaJKaOqaJXaJXaJXaOraMDaMXaMDaOxaOyaOyaOyaOyaOzaMDaMDaMDaMDaMDaMDaMDaMDaOAaMDaMDaMDaMDaMDaMDaMDaMDaMXaMDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaCxaCyaCzaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaCzaCyaCxaAZaAZaAZaNaaCyaNaaNbaKYaKYaKYaKYaKYaKYaKYaKYaKYaKYaKYaNbaNaaCyaNaaAZaAZaAZaJKaLaaJXaKcaLIaOBaJKaJKaOCaJKaJKaODaOEaJXaNHaOFaJKaOEaJXaJXaJXaOGaMDaMXaMDaOxaOyaOyaOyaOyaOzaMDaOHaOIaOJaOIaOKaOLaOLaOLaOLaOLaOKaOLaOKaOLaOMaMDaMXaMDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
-aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaCxaCyaCzaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaCzaCyaCxaAZaAZaAZaNaaCyaNaaNraKYaKYaONaKYaKYaKYaKYaKYaONaKYaKYaOOaNaaCyaNaaAZaAZaAZaJKaJKaOPaJKaNeaJKaJKaOQaJXaORaJKaNxaJXaJXaJXaJXaOSaJXaJXaOTaJXaOUaMDaMXaMDaOVaOyaOyaOyaOyaOWaMDaOLaOXaOXaOXaOXaOXaOLaOLaOLaOXaOXaOXaOXaOYaOZaMDaMXaMDaMDaMDaMDaMDaMDaMDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
+aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaCxaCyaCzaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaCzaCyaCxaAZaAZaAZaNaaCyaNaaNbaKYaKYaONaKYaKYaKYaKYaKYaONaKYaKYaNbaNaaCyaNaaAZaAZaAZaJKaJKaOPaJKaNeaJKaJKaOQaJXaORaJKaNxaJXaJXaJXaJXaOSaJXaJXaOTaJXaOUaMDaMXaMDaOVaOyaOyaOyaOyaOWaMDaOLaOXaOXaOXaOXaOXaOLaOLaOLaOXaOXaOXaOXaOYaOZaMDaMXaMDaMDaMDaMDaMDaMDaMDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaAEaAEaAEaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAEaAEaAZaAZaAZaAEaAEaAEaPaaLmaPbaPcaKyaKAaPdaKyaKAaPcaPbaLmaPeaAEaAEaAEaAZaAZaAZaJKaPfaJXaPgaPhaPiaJKaPjaJXaPkaJKaPlaPmaPnaPoaPpaJKaPqaPraPraPraPsaMDaMXaMDaOVaPtaPuaPuaOyaOyaPvaOLaOLaPwaPxaPwaOLaOLaOLaOLaOLaPwaPxaPwaPyaOLaMDaMXaMXaMXaMXaMXaMXaMXaMDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAFaaPaaPaaParuaruaruaruaruaruaruaruaruaruaruaaPaaPaaPaAFaAZaAZaAZaAFaaPaaPaMMaPzaPAaMMaPBaPCaPDaPEaPFaMMaPGaPHaMMaaPaaPaAFaAGaAGaAGaJKaPfaJXaPIaPJaPKaJKaPLaJXaPMaJKaJKaJKaJKaJKaJKaJKaJKaJKaJKaJKaMDaMDaMXaMDaMDaMDaMDaMDaMDaMDaMDaOLaOXaOXaOXaOXaOXaOLaOLaOLaOXaOXaOXaOXaPNaOLaMDaMDaMDaMDaMDaMDaMDaMXaMDaMDaMDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAFaruaruaruaruaaPaaPaaPaaPaaPaaPaaPaaPaaParuaruaruaruaAFaAZaAZaAZaAFaruaruaMMaPOaPOaMMaPPaPQaPDaPDaPRaMMaPOaPOaMMaruaruaAFaAZaAZaAZaJKaJKaPSaJKaJMaJMaJKaJKaOCaJKaJKaPTaPUaPVaJMaPWaPXaNtaPYaPYaPZaMDaMXaMXaMDaMDaQaaQaaQaaQaaQaaMDaQbaQbaQbaQbaQbaQbaQbaQbaQbaQbaQbaQbaQbaQcaQbaMDaQdaQdaQdaQdaQdaMDaMXaMXaMXaMDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
@@ -2976,7 +2975,7 @@ aaRaqAaUIaUIaUIaUIaUIaUIaqAaaPaaPaaPaaPaaPaVZaWaaWaaWbaaPaaPaaPaaPaaPaaPaaPaaPaa
aaRaqAaqAaqAaqAaqAaqAaqAaqAaqAaaPaaPaaPaaPaVZaWcaWdaWbaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaVZaWcaWdaWbaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaWeaWfaWgaWhaWgaWfaWiaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
aaRaqAaqAaqAaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaVZaWcaWdaWbaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaVZaWcaWdaWbaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaWeaWhaWjaWkaWlaWmaWnaWkaWoaWhaWiaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
aaRaqAaqAaqAaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaWpaWaaWaaWqaaPaaPaaPaWpaaPaaPaaPaaPaaPaWqaaPaaPaaPaWpaWaaWaaWqaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaWeaWgaWjaWraWsaWkaWtaWuaWuaWkaWvaWwaWoaWgaWiaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
-aaRaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaWxaWyaWzaWxaaPaaPaaPaWxaWAaWBaWBaWBaWCaWxaaPaaPaaPaWxaWDaWEaWxaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaWeaWjaWFaWGaWHaWHaWkaWIaWuaWuaWkaWJaWJaWKaWLaWoaWiaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
+aaRaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaWxaWyaWzaWxaaPaaPaaPaWxaWAaWBaWBaWBaWCaWxaaPaaPaaPaWxaWDaWEaWxaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaWeaWjaWFaWGaWHaWHaWkaWIaWuaWuaWkaNraWJaWKaWLaWoaWiaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
aaRaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaWxaWMaWNaWxaaPaaPaWpaWxaWxaWOaWPaWQaWRaWxaWqaaPaaPaWxaWSaWTaWxaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaWeaWjaWUaWVaWWaWHaWHaWXaWYaWuaWuaWXaWZaWZaWZaWZaXaaWoaWiaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
aaRaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaWxaXbaXcaWxaaPaaPaWxaWxaXdaXeaXfaXeaXgaWxaWxaaPaaPaWxaXhaXiaWxaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaWkaXjaXkaXlaWWaWHaWHaXmaWZaWZaWZaXnaWZaWZaWZaXoaWZbaRaWkaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
aaRaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaWxaXpaWxaWxaWxaWxaWxaXqaXraXraXraXraXraXsaWxaWxaWxaWxaWxaXtaWxaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaWeaWjaWHaXuaXuaWHaWHaWHaXvaXwaWZaXxaXvaXyaWZaXzaWZaWZaXAaWoaWiaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP
diff --git a/nano/templates/air_alarm.tmpl b/nano/templates/air_alarm.tmpl
index 2caa14e955..5914d32646 100644
--- a/nano/templates/air_alarm.tmpl
+++ b/nano/templates/air_alarm.tmpl
@@ -128,7 +128,7 @@ Used In File(s): \code\game\machinery\alarm.dm
Operation Mode:
- {{:value.direction == "siphon" ? 'Siphoning' : 'Pressurizing'}}
+ {{:helper.link(value.direction == "siphon" ? 'Siphoning' : 'Pressurizing', null, { 'id_tag' : value.id_tag, 'command' : 'direction', 'val' : value.direction == "siphon" ? 1 : 0}, null, value.direction == "siphon" ? 'redButton' : null)}}
diff --git a/nano/templates/apc.tmpl b/nano/templates/apc.tmpl
index 3cce2edd48..b77b024c8f 100644
--- a/nano/templates/apc.tmpl
+++ b/nano/templates/apc.tmpl
@@ -1,3 +1,24 @@
+{{if data.gridCheck}}
+
+ SYSTEM FAILURE
+ Power surge detected, grid check in effect...
+
+{{else data.failTime}}
+
+ SYSTEM FAILURE
+ I/O regulators malfunction detected! Waiting for system reboot...
+ Automatic reboot in {{:data.failTime}} seconds...
+ {{if !data.siliconUser}}
+ {{if data.locked}}
+ Swipe an ID card for manual reboot.
+ {{else}}
+ {{:helper.link('Reboot Now', 'refresh', {'reboot' : 1})}}
+ {{/if}}
+ {{else}}
+ {{:helper.link('Reboot Now', 'refresh', {'reboot' : 1})}}
+ {{/if}}
+
+{{else}}
{{if data.siliconUser}}
@@ -8,7 +29,10 @@
{{else}}
- {{if data.locked}}
+ {{if data.emagged}}
+
Fault in ID authenticator
+ Please contact maintenance for service.
+ {{else data.locked}}
Swipe an ID card to unlock this interface
{{else}}
Swipe an ID card to lock this interface
@@ -178,4 +202,4 @@
{{/if}}
-
\ No newline at end of file
+{{/if}}
\ No newline at end of file
diff --git a/vorestation.dme b/vorestation.dme
index 2b10ae5ff7..03ed81107c 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -782,6 +782,7 @@
#include "code\game\objects\items\devices\binoculars.dm"
#include "code\game\objects\items\devices\chameleonproj.dm"
#include "code\game\objects\items\devices\debugger.dm"
+#include "code\game\objects\items\devices\defib.dm"
#include "code\game\objects\items\devices\flash.dm"
#include "code\game\objects\items\devices\flashlight.dm"
#include "code\game\objects\items\devices\floor_painter.dm"
@@ -910,6 +911,7 @@
#include "code\game\objects\items\weapons\implants\implanter.dm"
#include "code\game\objects\items\weapons\implants\implanter_vr.dm"
#include "code\game\objects\items\weapons\implants\implantfreedom.dm"
+#include "code\game\objects\items\weapons\implants\implantlanguage.dm"
#include "code\game\objects\items\weapons\implants\implantpad.dm"
#include "code\game\objects\items\weapons\implants\implantuplink.dm"
#include "code\game\objects\items\weapons\material\ashtray.dm"
@@ -1241,6 +1243,7 @@
#include "code\modules\clothing\head\misc.dm"
#include "code\modules\clothing\head\misc_special.dm"
#include "code\modules\clothing\head\soft_caps.dm"
+#include "code\modules\clothing\head\solgov.dm"
#include "code\modules\clothing\masks\boxing.dm"
#include "code\modules\clothing\masks\breath.dm"
#include "code\modules\clothing\masks\gasmask.dm"
@@ -1288,6 +1291,7 @@
#include "code\modules\clothing\suits\jobs.dm"
#include "code\modules\clothing\suits\labcoat.dm"
#include "code\modules\clothing\suits\miscellaneous.dm"
+#include "code\modules\clothing\suits\solgov.dm"
#include "code\modules\clothing\suits\storage.dm"
#include "code\modules\clothing\suits\toggles.dm"
#include "code\modules\clothing\suits\utility.dm"
@@ -1297,6 +1301,7 @@
#include "code\modules\clothing\under\miscellaneous_vr.dm"
#include "code\modules\clothing\under\pants.dm"
#include "code\modules\clothing\under\shorts.dm"
+#include "code\modules\clothing\under\solgov.dm"
#include "code\modules\clothing\under\syndicate.dm"
#include "code\modules\clothing\under\accessories\accessory.dm"
#include "code\modules\clothing\under\accessories\accessory_vr.dm"
@@ -1585,7 +1590,6 @@
#include "code\modules\mob\living\carbon\alien\diona\say_understands.dm"
#include "code\modules\mob\living\carbon\alien\diona\update_icons.dm"
#include "code\modules\mob\living\carbon\brain\brain.dm"
-#include "code\modules\mob\living\carbon\brain\brain_item.dm"
#include "code\modules\mob\living\carbon\brain\death.dm"
#include "code\modules\mob\living\carbon\brain\emote.dm"
#include "code\modules\mob\living\carbon\brain\life.dm"
@@ -1823,6 +1827,7 @@
#include "code\modules\organs\robolimbs_vr.dm"
#include "code\modules\organs\wound.dm"
#include "code\modules\organs\internal\appendix.dm"
+#include "code\modules\organs\internal\brain.dm"
#include "code\modules\organs\internal\eyes.dm"
#include "code\modules\organs\internal\heart.dm"
#include "code\modules\organs\internal\kidneys.dm"