[T] won't fit in [src]."
- return
+ return 1
handle_item_insertion(W)
+ return 1
/obj/item/weapon/storage/dropped(mob/user)
return
-
-/obj/item/weapon/storage/MouseDrop(over_object, src_location, over_location)
- ..()
- orient2hud(usr)
- if((over_object == usr && (in_range(src, usr) || usr.contents.Find(src))))
- if(usr.s_active)
- usr.s_active.close(usr)
- show_to(usr)
-
-
/obj/item/weapon/storage/attack_hand(mob/user)
playsound(loc, "rustle", 50, 1, -5)
@@ -409,4 +405,4 @@
//Clicking on itself will empty it, if it has the verb to do that.
if(user.get_active_hand() == src)
if(verbs.Find(/obj/item/weapon/storage/verb/quick_empty))
- quick_empty()
\ No newline at end of file
+ quick_empty()
diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm
index c84360665bf..452fac28fd4 100644
--- a/code/game/objects/items/weapons/tools.dm
+++ b/code/game/objects/items/weapons/tools.dm
@@ -190,7 +190,8 @@
location.hotspot_expose(700, 5)
-/obj/item/weapon/weldingtool/afterattack(obj/O, mob/user)
+/obj/item/weapon/weldingtool/afterattack(obj/O, mob/user, proximity)
+ if(!proximity) return
if(istype(O, /obj/structure/reagent_dispensers/fueltank) && in_range(src, O))
if(!welding)
O.reagents.trans_to(src, max_fuel)
diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm
index a5517b4f0fd..97245af7786 100644
--- a/code/game/objects/items/weapons/twohanded.dm
+++ b/code/game/objects/items/weapons/twohanded.dm
@@ -134,8 +134,8 @@
icon_state = "fireaxe[wielded]"
return
-/obj/item/weapon/twohanded/fireaxe/afterattack(atom/A as mob|obj|turf|area, mob/user as mob)
- ..()
+/obj/item/weapon/twohanded/fireaxe/afterattack(atom/A as mob|obj|turf|area, mob/user as mob, proximity)
+ if(!proximity) return
if(A && wielded && (istype(A,/obj/structure/window) || istype(A,/obj/structure/grille))) //destroys windows and grilles in one hit
if(istype(A,/obj/structure/window)) //should just make a window.Break() proc but couldn't bother with it
var/obj/structure/window/W = A
diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm
index f42261cdbf6..261a6c17910 100644
--- a/code/game/objects/structures/bedsheet_bin.dm
+++ b/code/game/objects/structures/bedsheet_bin.dm
@@ -171,4 +171,26 @@ LINEN BINS
hidden = null
- add_fingerprint(user)
\ No newline at end of file
+ add_fingerprint(user)
+/obj/structure/bedsheetbin/attack_tk(mob/user as mob)
+ if(amount >= 1)
+ amount--
+
+ var/obj/item/weapon/bedsheet/B
+ if(sheets.len > 0)
+ B = sheets[sheets.len]
+ sheets.Remove(B)
+
+ else
+ B = new /obj/item/weapon/bedsheet(loc)
+
+ B.loc = loc
+ user << "You telekinetically remove [B] from [src]."
+ update_icon()
+
+ if(hidden)
+ hidden.loc = loc
+ hidden = null
+
+
+ add_fingerprint(user)
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index b9ee15d2b4b..9255a83c851 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -177,6 +177,8 @@
src.MouseDrop_T(G.affecting, user) //act like they were dragged onto the closet
else
user << "The locker is too small to stuff [W] into!"
+ if(istype(W,/obj/item/tk_grab))
+ return 0
if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
@@ -192,10 +194,7 @@
if(isrobot(user))
return
- user.drop_item()
-
- if(W)
- W.loc = src.loc
+ user.drop_item(src)
else if(istype(W, /obj/item/weapon/packageWrap))
return
@@ -260,6 +259,13 @@
if(!src.toggle())
usr << "It won't budge!"
+// tk grab then use on self
+/obj/structure/closet/attack_self_tk(mob/user as mob)
+ src.add_fingerprint(user)
+
+ if(!src.toggle())
+ usr << "It won't budge!"
+
/obj/structure/closet/verb/verb_toggleopen()
set src in oview(1)
set category = "Object"
diff --git a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm
index dbe5bf9f10b..3219a1fe942 100644
--- a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm
+++ b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm
@@ -137,6 +137,15 @@
src.icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed)
spawn(10) update_icon()
+ attack_tk(mob/user as mob)
+ if(localopened && fireaxe)
+ fireaxe.loc = loc
+ user << "\blue You telekinetically remove the fire axe."
+ fireaxe = null
+ update_icon()
+ return
+ attack_hand(user)
+
verb/toggle_openness() //nice name, huh? HUH?! -Erro //YEAH -Agouri
set name = "Open/Close"
set category = "Object"
diff --git a/code/game/objects/structures/dresser.dm b/code/game/objects/structures/dresser.dm
index 517c51a6061..5daadc94866 100644
--- a/code/game/objects/structures/dresser.dm
+++ b/code/game/objects/structures/dresser.dm
@@ -7,11 +7,13 @@
anchored = 1
/obj/structure/dresser/attack_hand(mob/user as mob)
+ if(!Adjacent(user))//no tele-grooming
+ return
if(ishuman(user))
var/mob/living/carbon/human/H = user
var/new_undies = input(user, "Select your underwear", "Changing") as null|anything in underwear_all
- if(!in_range(src, user))//no tele-grooming
+ if(!Adjacent(user))//no tele-grooming
return
if(new_undies)
H.underwear = new_undies
diff --git a/code/game/objects/structures/extinguisher.dm b/code/game/objects/structures/extinguisher.dm
index 1606d63d4ac..964f634d1f4 100644
--- a/code/game/objects/structures/extinguisher.dm
+++ b/code/game/objects/structures/extinguisher.dm
@@ -36,7 +36,15 @@
else
opened = !opened
update_icon()
-
+/obj/structure/extinguisher_cabinet/attack_tk(mob/user)
+ if(has_extinguisher)
+ has_extinguisher.loc = loc
+ user << "You telekinetically remove [has_extinguisher] from [src]."
+ has_extinguisher = null
+ opened = 1
+ else
+ opened = !opened
+ update_icon()
/obj/structure/extinguisher_cabinet/attack_paw(mob/user)
attack_hand(user)
diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm
index 6bb2cf69ab9..9f546bcf15c 100644
--- a/code/game/objects/structures/morgue.dm
+++ b/code/game/objects/structures/morgue.dm
@@ -133,12 +133,7 @@
layer = 2.0
var/obj/structure/morgue/connected = null
anchored = 1.0
-
-/obj/structure/m_tray/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
- if (istype(mover, /obj/item/weapon/dummy))
- return 1
- else
- return ..()
+ throwpass = 1
/obj/structure/m_tray/attack_paw(mob/user as mob)
return src.attack_hand(user)
@@ -352,12 +347,7 @@
layer = 2.0
var/obj/structure/crematorium/connected = null
anchored = 1.0
-
-/obj/structure/c_tray/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
- if (istype(mover, /obj/item/weapon/dummy))
- return 1
- else
- return ..()
+ throwpass = 1
/obj/structure/c_tray/attack_paw(mob/user as mob)
return src.attack_hand(user)
diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
index 4176d3cd62a..c68305a7b28 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
@@ -26,6 +26,12 @@
SK.loc = E
SK.master = E
del(src)
+/obj/structure/stool/bed/chair/attack_tk(mob/user as mob)
+ if(buckled_mob)
+ ..()
+ else
+ rotate()
+ return
/obj/structure/stool/bed/chair/proc/handle_rotation() //making this into a seperate proc so office chairs can call it on Move()
if(src.dir == NORTH)
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 3801eafcd69..5a81d92b0c6 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -200,12 +200,6 @@
del(src)
return
-
-/obj/structure/table/hand_p(mob/user as mob)
- return src.attack_paw(user)
- return
-
-
/obj/structure/table/attack_paw(mob/user)
if(HULK in user.mutations)
user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
@@ -260,6 +254,8 @@
density = 0
del(src)
+/obj/structure/table/attack_tk() // no telehulk sorry
+ return
/obj/structure/table/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
if(air_group || (height==0)) return 1
@@ -281,7 +277,7 @@
return
-/obj/structure/table/attackby(obj/item/weapon/W, mob/user)
+/obj/structure/table/attackby(obj/item/W, mob/user)
if (istype(W, /obj/item/weapon/grab) && get_dist(src, user) < 2)
var/obj/item/weapon/grab/G = W
if(G.affecting.buckled)
@@ -564,4 +560,6 @@
visible_message("[user] smashes [src] apart!")
new /obj/item/weapon/rack_parts(loc)
density = 0
- del(src)
\ No newline at end of file
+ del(src)
+/obj/structure/rack/attack_tk() // no telehulk sorry
+ return
diff --git a/code/game/objects/structures/tank_dispenser.dm b/code/game/objects/structures/tank_dispenser.dm
index 76622dcb729..67552863327 100644
--- a/code/game/objects/structures/tank_dispenser.dm
+++ b/code/game/objects/structures/tank_dispenser.dm
@@ -67,7 +67,7 @@
/obj/structure/dispenser/Topic(href, href_list)
if(usr.stat || usr.restrained())
return
- if(get_dist(src, usr) <= 1)
+ if(Adjacent(usr))
usr.set_machine(src)
if(href_list["oxygen"])
if(oxygentanks > 0)
diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm
index 7340d7b5569..00aa0e3d787 100644
--- a/code/game/objects/structures/watercloset.dm
+++ b/code/game/objects/structures/watercloset.dm
@@ -337,20 +337,20 @@
/obj/structure/sink/attack_hand(mob/user)
if(isrobot(user) || isAI(user))
return
+ if(!Adjacent(user))
+ return
if(busy)
user << "Someone's already washing here."
return
- var/turf/location = user.loc
- if(!isturf(location)) return
user << "You start washing your hands."
busy = 1
sleep(40)
busy = 0
- if(user.loc != location) return //Person has moved away from the sink
+ if(!Adjacent(user)) return //Person has moved away from the sink
user.clean_blood()
user.visible_message("[user] washes their hands in [src].")
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index 799038a9148..eb7fd562651 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -96,6 +96,9 @@
if(reinf) new /obj/item/stack/rods(loc)
del(src)
+/obj/structure/window/attack_tk(mob/user as mob)
+ user.visible_message("Something knocks on [src].")
+ playsound(loc, 'sound/effects/Glasshit.ogg', 50, 1)
/obj/structure/window/attack_hand(mob/user as mob)
if(!can_be_reached(user))
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index 50b5cee9c0c..6f660eda079 100644
--- a/code/game/turfs/turf.dm
+++ b/code/game/turfs/turf.dm
@@ -40,17 +40,6 @@
air_master.add_to_active(T)
..()
-/turf/DblClick()
- if(istype(usr, /mob/living/silicon/ai))
- return move_camera_by_click()
- if(usr.stat || usr.restrained() || usr.lying)
- return ..()
- return ..()
-
-/turf/Click()
- if(!isAI(usr))
- ..()
-
/turf/attack_hand(mob/user as mob)
user.Move_Pulled(src)
diff --git a/code/game/verbs/atom_verbs.dm b/code/game/verbs/atom_verbs.dm
index 459ada21724..2ff6efcf260 100644
--- a/code/game/verbs/atom_verbs.dm
+++ b/code/game/verbs/atom_verbs.dm
@@ -1,9 +1,10 @@
/atom/movable/verb/pull()
set name = "Pull"
- set category = "IC"
+ set category = "Object"
set src in oview(1)
- usr.start_pulling(src)
+ if(Adjacent(usr))
+ usr.start_pulling(src)
return
/atom/verb/point()
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 9a4368923c8..745d9cd6caa 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -534,15 +534,6 @@ var/list/admin_verbs_hideable = list(
log_admin("[key_name(usr)] used 'kill air'.")
message_admins("\blue [key_name_admin(usr)] used 'kill air'.", 1)
-/client/proc/toggle_clickproc() //TODO ERRORAGE (This is a temporary verb here while I test the new clicking proc)
- set name = "Toggle NewClickProc"
- set category = "Debug"
-
- if(!holder) return
- using_new_click_proc = !using_new_click_proc
- world << "Testing of new click proc [using_new_click_proc ? "enabled" : "disabled"]"
- feedback_add_details("admin_verb","TNCP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-
/client/proc/deadmin_self()
set name = "De-admin self"
set category = "Admin"
diff --git a/code/modules/admin/verbs/diagnostics.dm b/code/modules/admin/verbs/diagnostics.dm
index e87bf74e2d5..b05dbe49fba 100644
--- a/code/modules/admin/verbs/diagnostics.dm
+++ b/code/modules/admin/verbs/diagnostics.dm
@@ -33,15 +33,15 @@
largest_move_time = M.next_move - world.time
else
largest_move_time = 1
- if(M.lastDblClick >= largest_click_time)
+ if(M.next_click >= largest_click_time)
largest_click_mob = M
- if(M.lastDblClick > world.time)
- largest_click_time = M.lastDblClick - world.time
+ if(M.next_click > world.time)
+ largest_click_time = M.next_click - world.time
else
largest_click_time = 0
- log_admin("DEBUG: [key_name(M)] next_move = [M.next_move] lastDblClick = [M.lastDblClick] world.time = [world.time]")
+ log_admin("DEBUG: [key_name(M)] next_move = [M.next_move] lastDblClick = [M.next_click] world.time = [world.time]")
M.next_move = 1
- M.lastDblClick = 0
+ M.next_click = 0
message_admins("[key_name_admin(largest_move_mob)] had the largest move delay with [largest_move_time] frames / [largest_move_time/10] seconds!", 1)
message_admins("[key_name_admin(largest_click_mob)] had the largest click delay with [largest_click_time] frames / [largest_click_time/10] seconds!", 1)
message_admins("world.time = [world.time]", 1)
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 5bfd81a1c00..8dbbfada292 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -59,6 +59,10 @@ BLIND // can't see anything
..()
return
+// Called just before an attack_hand(), in mob/UnarmedAttack()
+/obj/item/clothing/gloves/proc/Touch(var/atom/A, var/proximity)
+ return 0 // return 1 to cancel attack_hand()
+
//Head
/obj/item/clothing/head
name = "head"
diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm
index 7b0825f414d..b5845e7bfd2 100644
--- a/code/modules/clothing/gloves/miscellaneous.dm
+++ b/code/modules/clothing/gloves/miscellaneous.dm
@@ -1,14 +1,3 @@
-/obj/item/clothing/gloves/space_ninja
- desc = "These nano-enhanced gloves insulate from electricity and provide fire resistance."
- name = "ninja gloves"
- icon_state = "s-ninja"
- item_state = "s-ninja"
- siemens_coefficient = 0
- var/draining = 0
- var/candrain = 0
- var/mindrain = 200
- var/maxdrain = 400
-
/obj/item/clothing/gloves/captain
desc = "Regal blue gloves, with a nice gold trim. Swanky."
name = "captain's gloves"
diff --git a/code/modules/clothing/gloves/ninja.dm b/code/modules/clothing/gloves/ninja.dm
new file mode 100644
index 00000000000..15e7c40c3b3
--- /dev/null
+++ b/code/modules/clothing/gloves/ninja.dm
@@ -0,0 +1,113 @@
+/*
+ Dear ninja gloves
+
+ This isn't because I like you
+ this is because your father is a bastard
+
+ ...
+ I guess you're a little cool.
+ -Sayu
+*/
+
+/obj/item/clothing/gloves/space_ninja
+ desc = "These nano-enhanced gloves insulate from electricity and provide fire resistance."
+ name = "ninja gloves"
+ icon_state = "s-ninja"
+ item_state = "s-ninja"
+ siemens_coefficient = 0
+ var/draining = 0
+ var/candrain = 0
+ var/mindrain = 200
+ var/maxdrain = 400
+
+/*
+ This runs the gamut of what ninja gloves can do
+ The other option would be a dedicated ninja touch bullshit proc on everything
+ which would probably more efficient, but ninjas are pretty rare.
+ This was mostly introduced to keep ninja code from contaminating other code;
+ with this in place it would be easier to untangle the rest of it.
+
+ For the drain proc, see events/ninja.dm
+*/
+/obj/item/clothing/gloves/space_ninja/Touch(var/atom/A,var/proximity)
+ if(!candrain || draining) return 0
+
+ var/mob/living/carbon/human/H = loc
+ if(!istype(H)) return 0 // what
+ var/obj/item/clothing/suit/space/space_ninja/suit = H.wear_suit
+ if(!istype(suit)) return 0
+ if(isturf(A)) return 0
+
+ if(!proximity) // todo: you could add ninja stars or computer hacking here
+ return 0
+
+ // Move an AI into and out of things
+ if(istype(A,/mob/living/silicon/ai))
+ if(suit.s_control)
+ A.add_fingerprint(H)
+ suit.transfer_ai("AICORE", "NINJASUIT", A, H)
+ return 1
+ else
+ H << "\red ERROR: \black Remote access channel disabled."
+ return 0
+
+ if(istype(A,/obj/structure/AIcore/deactivated))
+ if(suit.s_control)
+ A.add_fingerprint(H)
+ suit.transfer_ai("INACTIVE","NINJASUIT",A, H)
+ return 1
+ else
+ H << "\red ERROR: \black Remote access channel disabled."
+ return 0
+ if(istype(A,/obj/machinery/computer/aifixer))
+ if(suit.s_control)
+ A.add_fingerprint(H)
+ suit.transfer_ai("AIFIXER","NINJASUIT",A, H)
+ return 1
+ else
+ H << "\red ERROR: \black Remote access channel disabled."
+ return 0
+
+ // steal energy from powered things
+ if(istype(A,/mob/living/silicon/robot))
+ A.add_fingerprint(H)
+ drain("CYBORG",A,suit)
+ return 1
+ if(istype(A,/obj/machinery/power/apc))
+ A.add_fingerprint(H)
+ drain("APC",A,suit)
+ return 1
+ if(istype(A,/obj/structure/cable))
+ A.add_fingerprint(H)
+ drain("WIRE",A,suit)
+ return 1
+ if(istype(A,/obj/structure/grille))
+ var/obj/structure/cable/C = locate() in A.loc
+ if(C)
+ drain("WIRE",C,suit)
+ return 1
+ if(istype(A,/obj/machinery/power/smes))
+ A.add_fingerprint(H)
+ drain("SMES",A,suit)
+ return 1
+ if(istype(A,/obj/mecha))
+ A.add_fingerprint(H)
+ drain("MECHA",A,suit)
+ return 1
+
+ // download research
+ if(istype(A,/obj/machinery/computer/rdconsole))
+ A.add_fingerprint(H)
+ drain("RESEARCH",A,suit)
+ return 1
+ if(istype(A,/obj/machinery/r_n_d/server))
+ A.add_fingerprint(H)
+ var/obj/machinery/r_n_d/server/S = A
+ if(S.disabled)
+ return 1
+ if(S.shocked)
+ S.shock(H,50)
+ return 1
+ drain("RESEARCH",A,suit)
+ return 1
+
diff --git a/code/modules/detectivework/evidence.dm b/code/modules/detectivework/evidence.dm
index c0991dcd3a2..8e75055e17b 100644
--- a/code/modules/detectivework/evidence.dm
+++ b/code/modules/detectivework/evidence.dm
@@ -8,16 +8,13 @@
item_state = ""
w_class = 1
-/obj/item/weapon/evidencebag/afterattack(obj/item/I, mob/user as mob)
- if(!in_range(I, user))
+/obj/item/weapon/evidencebag/afterattack(obj/item/I, mob/user as mob,proximity)
+ if(!proximity)
return
if(!istype(I) || I.anchored == 1)
return ..()
- if(istype(I, /obj/item/weapon/storage))
- return ..()
-
if(istype(I, /obj/item/weapon/evidencebag))
user << "You find putting an evidence bag in another evidence bag to be slightly absurd."
return
diff --git a/code/modules/detectivework/footprints_and_rag.dm b/code/modules/detectivework/footprints_and_rag.dm
index 4100de5b514..6068378d742 100644
--- a/code/modules/detectivework/footprints_and_rag.dm
+++ b/code/modules/detectivework/footprints_and_rag.dm
@@ -52,7 +52,8 @@
else
..()
-/obj/item/weapon/reagent_containers/glass/rag/afterattack(atom/A as obj|turf|area, mob/user as mob)
+/obj/item/weapon/reagent_containers/glass/rag/afterattack(atom/A as obj|turf|area, mob/user as mob,proximity)
+ if(!proximity) return
if(istype(A) && src in user)
user.visible_message("[user] starts to wipe down [A] with [src]!")
if(do_after(user,30))
diff --git a/code/modules/detectivework/scanner.dm b/code/modules/detectivework/scanner.dm
index c2a9a5c46f2..0fb2e322a54 100644
--- a/code/modules/detectivework/scanner.dm
+++ b/code/modules/detectivework/scanner.dm
@@ -8,7 +8,7 @@
icon_state = "forensic1"
w_class = 3.0
item_state = "electronic"
- flags = FPRINT | TABLEPASS | CONDUCT | USEDELAY
+ flags = FPRINT | TABLEPASS | CONDUCT | NOBLUDGEON
slot_flags = SLOT_BELT
var/scanning = 0
var/list/log = list()
@@ -43,9 +43,8 @@
scan(M, user)
-/obj/item/device/detective_scanner/afterattack(atom/A as obj|turf|area, mob/user as mob)
-
- if(!in_range(A,user))
+/obj/item/device/detective_scanner/afterattack(atom/A as obj|turf|area, mob/user as mob,proximity)
+ if(!proximity)
return
if(!isturf(A) && !isobj(A))
return
@@ -171,4 +170,4 @@
CRASH("[src] \ref[src] is adding a log when it was never put in scanning mode!")
/proc/get_timestamp()
- return time2text(world.time + 432000, ":ss")
\ No newline at end of file
+ return time2text(world.time + 432000, ":ss")
diff --git a/code/modules/hydroponics/hydroitemcode.dm b/code/modules/hydroponics/hydroitemcode.dm
index 1d66bb3acb9..eaec018f589 100644
--- a/code/modules/hydroponics/hydroitemcode.dm
+++ b/code/modules/hydroponics/hydroitemcode.dm
@@ -14,7 +14,8 @@
M << "\red You are heated by the warmth of the of the [name]!"
M.bodytemperature += potency/2 * TEMPERATURE_DAMAGE_COEFFICIENT
-/obj/item/weapon/grown/novaflower/afterattack(atom/A as mob|obj, mob/user as mob)
+/obj/item/weapon/grown/novaflower/afterattack(atom/A as mob|obj, mob/user as mob,proximity)
+ if(!proximity) return
if(endurance > 0)
endurance -= rand(1,(endurance/3)+1)
else
@@ -38,7 +39,8 @@
else
user.take_organ_damage(0,force)
-/obj/item/weapon/grown/nettle/afterattack(atom/A as mob|obj, mob/user as mob)
+/obj/item/weapon/grown/nettle/afterattack(atom/A as mob|obj, mob/user as mob,proximity)
+ if(!proximity) return
if(force > 0)
force -= rand(1,(force/3)+1) // When you whack someone with it, leaves fall off
playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
@@ -81,7 +83,8 @@
M.Weaken(force/15)
M.drop_item()
-/obj/item/weapon/grown/deathnettle/afterattack(atom/A as mob|obj, mob/user as mob)
+/obj/item/weapon/grown/deathnettle/afterattack(atom/A as mob|obj, mob/user as mob,proximity)
+ if(!proximity) return
if (force > 0)
force -= rand(1,(force/3)+1) // When you whack someone with it, leaves fall off
diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm
index ba484f9d5fb..6cadee4b764 100644
--- a/code/modules/hydroponics/hydroitemdefines.dm
+++ b/code/modules/hydroponics/hydroitemdefines.dm
@@ -20,7 +20,7 @@
name = "weed-spray"
icon_state = "weedspray"
item_state = "spray"
- flags = TABLEPASS | OPENCONTAINER | FPRINT | USEDELAY
+ flags = TABLEPASS | OPENCONTAINER | FPRINT
slot_flags = SLOT_BELT
throwforce = 4
w_class = 2.0
@@ -39,7 +39,7 @@
name = "pest-spray"
icon_state = "pestspray"
item_state = "spray"
- flags = TABLEPASS | OPENCONTAINER | FPRINT | USEDELAY
+ flags = TABLEPASS | OPENCONTAINER | FPRINT
slot_flags = SLOT_BELT
throwforce = 4
w_class = 2.0
@@ -58,7 +58,7 @@
icon = 'icons/obj/weapons.dmi'
icon_state = "hoe"
item_state = "hoe"
- flags = FPRINT | TABLEPASS | CONDUCT | USEDELAY
+ flags = FPRINT | TABLEPASS | CONDUCT
force = 5.0
throwforce = 7.0
w_class = 2.0
diff --git a/code/modules/mob/dead/observer/hud.dm b/code/modules/mob/dead/observer/hud.dm
deleted file mode 100644
index 4290ca5d3a3..00000000000
--- a/code/modules/mob/dead/observer/hud.dm
+++ /dev/null
@@ -1,3 +0,0 @@
-
-/datum/hud/proc/ghost_hud()
- return
\ No newline at end of file
diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm
index bd7d35f03d5..212970e9900 100644
--- a/code/modules/mob/inventory.dm
+++ b/code/modules/mob/inventory.dm
@@ -79,6 +79,7 @@
if(W)
if(client) client.screen -= W
u_equip(W)
+ if(!W) return 1 // self destroying objects (tk, grabs)
W.layer = initial(W.layer)
W.loc = loc
diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
index 436f616982e..35055b1a056 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
@@ -132,16 +132,6 @@
updatehealth()
return
-
-/mob/living/carbon/alien/humanoid/hand_p(mob/living/carbon/user)
- if(user.a_intent == "harm")
- if(istype(user.wear_mask, /obj/item/clothing/mask/muzzle))
- return
- if(health > 0)
- visible_message("[user] has bit [src]!")
- adjustBruteLoss(rand(1, 3))
- updatehealth()
-
/mob/living/carbon/alien/humanoid/attack_paw(mob/living/carbon/monkey/M as mob)
if(!ismonkey(M)) return//Fix for aliens receiving double messages when attacking other aliens.
diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm
index ccacad6456e..69537b98bbf 100644
--- a/code/modules/mob/living/carbon/alien/larva/larva.dm
+++ b/code/modules/mob/living/carbon/alien/larva/larva.dm
@@ -135,17 +135,6 @@
updatehealth()
return
-
-/mob/living/carbon/alien/larva/hand_p(mob/living/carbon/user)
- if(user.a_intent == "harm")
- if(istype(user.wear_mask, /obj/item/clothing/mask/muzzle))
- return
- if(health > 0)
- visible_message("[user] has bit [src]!")
- adjustBruteLoss(rand(1, 3))
- updatehealth()
-
-
/mob/living/carbon/alien/larva/attack_animal(mob/living/simple_animal/M as mob)
if(M.melee_damage_upper == 0)
M.emote("[M.friendly] [src]")
diff --git a/code/modules/mob/living/carbon/brain/hud.dm b/code/modules/mob/living/carbon/brain/hud.dm
deleted file mode 100644
index 90eb96a387a..00000000000
--- a/code/modules/mob/living/carbon/brain/hud.dm
+++ /dev/null
@@ -1,7 +0,0 @@
-/datum/hud/proc/brain_hud(ui_style = 'icons/mob/screen_midnight.dmi')
- mymob.blind = new /obj/screen()
- mymob.blind.icon = 'icons/mob/screen_full.dmi'
- mymob.blind.icon_state = "blackimageoverlay"
- mymob.blind.name = " "
- mymob.blind.screen_loc = "1,1"
- mymob.blind.layer = 0
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index f2be95e217c..f0faf8f357f 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -128,10 +128,10 @@
if(istext(selhand))
selhand = lowertext(selhand)
- if(selhand == "right" || selhand == "r")
- selhand = 0
- if(selhand == "left" || selhand == "l")
- selhand = 1
+ if(selhand == "right" || selhand == "r")
+ selhand = 0
+ if(selhand == "left" || selhand == "l")
+ selhand = 1
if(selhand != src.hand)
swap_hand()
@@ -209,88 +209,97 @@
// ++++ROCKDTBEN++++ MOB PROCS //END
-/mob/living/carbon/proc/handle_ventcrawl() // -- TLE -- Merged by Carn
-
- if(!stat)
- if(!lying)
-
- var/obj/machinery/atmospherics/unary/vent_pump/vent_found
- for(var/obj/machinery/atmospherics/unary/vent_pump/v in range(1,src))
- if(!v.welded)
- vent_found = v
- else
- src << "\red That vent is welded."
-
- if(vent_found)
- if(vent_found.network&&vent_found.network.normal_members.len)
- var/list/vents[0]
- for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in vent_found.network.normal_members)
- if(temp_vent.loc == loc)
- continue
- if(temp_vent.welded)
- continue
- var/turf/T = get_turf(temp_vent)
-
- if(!T || T.z != loc.z)
- continue
-
- var/i = 1
- var/index = "[T.loc.name]\[[i]\]"
- while(index in vents)
- i++
- index = "[T.loc.name]\[[i]\]"
- vents[index] = temp_vent
- if(!vents.len)
- src << "\red There are no available vents to travel to, they could be welded."
- return
-
- var/turf/startloc = loc
- var/obj/selection = input("Select a destination.", "Duct System") as null|anything in sortList(vents)
- if(!selection) return
- if(loc==startloc)
- for(var/obj/item/carried_item in contents)//If the monkey got on objects.
- if( !istype(carried_item, /obj/item/weapon/implant) && !istype(carried_item, /obj/item/clothing/mask/facehugger) )//If it's not an implant or a facehugger
- src << "\red You can't be carrying items or have items equipped when vent crawling!"
- return
- var/obj/machinery/atmospherics/unary/vent_pump/target_vent = vents[selection]
- if(target_vent)
- for(var/mob/O in viewers(src, null))
- O.show_message(text("[src] scrambles into the ventillation ducts!"), 1)
- loc = target_vent
-
- var/travel_time = round(get_dist(loc, target_vent.loc) / 2)
-
- spawn(travel_time)
-
- if(!target_vent) return
- for(var/mob/O in hearers(target_vent,null))
- O.show_message("You hear something squeezing through the ventilation ducts.",2)
-
- sleep(travel_time)
-
- if(!target_vent) return
- if(target_vent.welded) //the vent can be welded while alien scrolled through the list or travelled.
- target_vent = vent_found //travel back. No additional time required.
- src << "\red The vent you were heading to appears to be welded."
- loc = target_vent.loc
- var/area/new_area = get_area(loc)
- if(new_area)
- new_area.Entered(src)
-
- else
- src << "You need to remain still while entering a vent."
- else
- src << "This vent is not connected to anything."
-
- else
- src << "You must be standing on or beside an air vent to enter it."
-
- else
- src << "You can't vent crawl while you're stunned!"
-
- else
+/mob/living/carbon/proc/handle_ventcrawl(var/obj/machinery/atmospherics/unary/vent_pump/vent_found = null) // -- TLE -- Merged by Carn
+ if(stat)
src << "You must be conscious to do this!"
- return
+ return
+ if(lying)
+ src << "You can't vent crawl while you're stunned!"
+ return
+
+ if(vent_found) // one was passed in, probably from vent/AltClick()
+ if(vent_found.welded)
+ src << "That vent is welded shut."
+ return
+ if(!vent_found.Adjacent(src))
+ return // don't even acknowledge that
+ else
+ for(var/obj/machinery/atmospherics/unary/vent_pump/v in range(1,src))
+ if(!v.welded)
+ if(v.Adjacent(src))
+ vent_found = v
+ if(!vent_found)
+ src << "You'll need a non-welded vent to crawl into!"
+ return
+
+ if(!vent_found.network || !vent_found.network.normal_members.len)
+ src << "This vent is not connected to anything."
+ return
+
+ var/list/vents = list()
+ for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in vent_found.network.normal_members)
+ if(temp_vent.welded)
+ continue
+ if(temp_vent in loc)
+ continue
+ var/turf/T = get_turf(temp_vent)
+
+ if(!T || T.z != loc.z)
+ continue
+
+ var/i = 1
+ var/index = "[T.loc.name]\[[i]\]"
+ while(index in vents)
+ i++
+ index = "[T.loc.name]\[[i]\]"
+ vents[index] = temp_vent
+ if(!vents.len)
+ src << "\red There are no available vents to travel to, they could be welded."
+ return
+
+ var/obj/selection = input("Select a destination.", "Duct System") as null|anything in sortAssoc(vents)
+ if(!selection) return
+
+ if(!vent_found.Adjacent(src))
+ src << "Never mind, you left."
+ return
+
+ for(var/obj/item/carried_item in contents)//If the monkey got on objects.
+ if( !istype(carried_item, /obj/item/weapon/implant) && !istype(carried_item, /obj/item/clothing/mask/facehugger) )//If it's not an implant or a facehugger
+ src << "\red You can't be carrying items or have items equipped when vent crawling!"
+ return
+ if(isslime(src))
+ var/mob/living/carbon/slime/S = src
+ if(S.Victim)
+ src << "\red You'll have to let [S.Victim] go or finish eating \him first."
+ return
+
+ var/obj/machinery/atmospherics/unary/vent_pump/target_vent = vents[selection]
+ if(!target_vent)
+ return
+
+ for(var/mob/O in viewers(src, null))
+ O.show_message(text("[src] scrambles into the ventillation ducts!"), 1)
+ loc = target_vent
+
+ var/travel_time = round(get_dist(loc, target_vent.loc) / 2)
+
+ spawn(travel_time)
+
+ if(!target_vent) return
+ for(var/mob/O in hearers(target_vent,null))
+ O.show_message("You hear something squeezing through the ventilation ducts.",2)
+
+ sleep(travel_time)
+
+ if(!target_vent) return
+ if(target_vent.welded) //the vent can be welded while alien scrolled through the list or travelled.
+ target_vent = vent_found //travel back. No additional time required.
+ src << "\red The vent you were heading to appears to be welded."
+ loc = target_vent.loc
+ var/area/new_area = get_area(loc)
+ if(new_area)
+ new_area.Entered(src)
/mob/living/carbon/clean_blood()
@@ -310,19 +319,6 @@
//Throwing stuff
/mob/living/carbon/proc/toggle_throw_mode()
- var/obj/item/I = get_active_hand()
- if(!I)//Not holding anything
- if(client && (TK in mutations))
- var/obj/item/tk_grab/O = new(src)
- put_in_active_hand(O)
- O.host = src
- return
-
- if(istype(I, /obj/item/tk_grab))
- if(hand) del(l_hand)
- else del(r_hand)
- return
-
if(in_throw_mode)
throw_mode_off()
else
@@ -338,8 +334,9 @@
in_throw_mode = 1
throw_icon.icon_state = "act_throw_on"
-
-/mob/living/carbon/proc/throw_item(atom/target)
+/mob/proc/throw_item(atom/target)
+ return
+/mob/living/carbon/throw_item(atom/target)
throw_mode_off()
if(usr.stat || !target)
return
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index ebbe0d17232..5adb01ed182 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -228,23 +228,6 @@
return
-/mob/living/carbon/human/hand_p(mob/M as mob)
- var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg")
- var/datum/limb/affecting = get_organ(ran_zone(dam_zone))
- var/armor = run_armor_check(affecting, "melee")
- apply_damage(rand(1,2), BRUTE, affecting, armor)
- if(armor >= 2) return
-
- for(var/datum/disease/D in M.viruses)
- if(istype(D, /datum/disease/jungle_fever))
- var/mob/living/carbon/human/H = src
- src = null
- src = H.monkeyize()
- contract_disease(D,1,0)
- return
-
-
-
/mob/living/carbon/human/attack_animal(mob/living/simple_animal/M as mob)
if(M.melee_damage_upper == 0)
M.emote("[M.friendly] [src]")
diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm
index 00052ab09ac..e5f6be49d08 100644
--- a/code/modules/mob/living/carbon/human/inventory.dm
+++ b/code/modules/mob/living/carbon/human/inventory.dm
@@ -1,3 +1,22 @@
+/mob/living/carbon/human/verb/quick_equip()
+ set name = "quick-equip"
+ set hidden = 1
+
+ if(ishuman(src))
+ var/mob/living/carbon/human/H = src
+ var/obj/item/I = H.get_active_hand()
+ if(!I)
+ H << "You are not holding anything to equip."
+ return
+ if(H.equip_to_appropriate_slot(I))
+ if(hand)
+ update_inv_l_hand(0)
+ else
+ update_inv_r_hand(0)
+ else
+ H << "\red You are unable to equip that."
+
+
/mob/living/carbon/human/proc/equip_in_one_of_slots(obj/item/I, list/slots, del_on_fail = 1)
for(var/slot in slots)
if(equip_to_slot_if_possible(I, slots[slot], del_on_fail = 0))
@@ -171,6 +190,7 @@
l_hand = null
else if(I == r_hand)
r_hand = null
+ if(client) client.screen -= I // will get put back if visible
switch(slot)
if(slot_back)
diff --git a/code/modules/mob/living/carbon/metroid/life.dm b/code/modules/mob/living/carbon/metroid/life.dm
index a8a83d7395e..642ec17de74 100644
--- a/code/modules/mob/living/carbon/metroid/life.dm
+++ b/code/modules/mob/living/carbon/metroid/life.dm
@@ -103,7 +103,7 @@
sleep(15)
Atkcool = 0
- if(get_obstacle_ok(Target))
+ if(Target.Adjacent(src))
Target.attack_slime(src)
//world << "retrun 1"
return
@@ -116,7 +116,7 @@
sleep(25)
Atkcool = 0
- if(get_obstacle_ok(Target))
+ if(Target.Adjacent(src))
Target.attack_slime(src)
@@ -124,16 +124,16 @@
step_to(src, Target)
else
- if(!Atkcool && get_obstacle_ok(Target))
+ if(!Atkcool && Target.Adjacent(src))
Feedon(Target)
else
- if(!Atkcool && get_obstacle_ok(Target))
+ if(!Atkcool && Target.Adjacent(src))
Feedon(Target)
else
if(Target in view(7, src))
- if(get_obstacle_ok(Target))
+ if(Target.Adjacent(src))
step_to(src, Target)
else
diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm
index f9200e27c40..2cd69c6b476 100644
--- a/code/modules/mob/living/carbon/metroid/metroid.dm
+++ b/code/modules/mob/living/carbon/metroid/metroid.dm
@@ -592,87 +592,6 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75
/mob/living/carbon/slime/toggle_throw_mode()
return
-/mob/living/carbon/slime/proc/get_obstacle_ok(atom/A)
- var/direct = get_dir(src, A)
- var/obj/item/weapon/dummy/D = new /obj/item/weapon/dummy( src.loc )
- var/ok = 0
- if ( (direct - 1) & direct)
- var/turf/Step_1
- var/turf/Step_2
- switch(direct)
- if(5.0)
- Step_1 = get_step(src, NORTH)
- Step_2 = get_step(src, EAST)
-
- if(6.0)
- Step_1 = get_step(src, SOUTH)
- Step_2 = get_step(src, EAST)
-
- if(9.0)
- Step_1 = get_step(src, NORTH)
- Step_2 = get_step(src, WEST)
-
- if(10.0)
- Step_1 = get_step(src, SOUTH)
- Step_2 = get_step(src, WEST)
-
- else
- if(Step_1 && Step_2)
- var/check_1 = 0
- var/check_2 = 0
- if(step_to(D, Step_1))
- check_1 = 1
- for(var/obj/border_obstacle in Step_1)
- if(border_obstacle.flags & ON_BORDER)
- if(!border_obstacle.CheckExit(D, A))
- check_1 = 0
- for(var/obj/border_obstacle in get_turf(A))
- if((border_obstacle.flags & ON_BORDER) && (src != border_obstacle))
- if(!border_obstacle.CanPass(D, D.loc, 1, 0))
- check_1 = 0
-
- D.loc = src.loc
- if(step_to(D, Step_2))
- check_2 = 1
-
- for(var/obj/border_obstacle in Step_2)
- if(border_obstacle.flags & ON_BORDER)
- if(!border_obstacle.CheckExit(D, A))
- check_2 = 0
- for(var/obj/border_obstacle in get_turf(A))
- if((border_obstacle.flags & ON_BORDER) && (src != border_obstacle))
- if(!border_obstacle.CanPass(D, D.loc, 1, 0))
- check_2 = 0
- if(check_1 || check_2)
- ok = 1
- else
- if(loc == src.loc)
- ok = 1
- else
- ok = 1
-
- //Now, check objects to block exit that are on the border
- for(var/obj/border_obstacle in src.loc)
- if(border_obstacle.flags & ON_BORDER)
- if(!border_obstacle.CheckExit(D, A))
- ok = 0
-
- //Next, check objects to block entry that are on the border
- for(var/obj/border_obstacle in get_turf(A))
- if((border_obstacle.flags & ON_BORDER) && (A != border_obstacle))
- if(!border_obstacle.CanPass(D, D.loc, 1, 0))
- ok = 0
-
- //del(D)
- //Garbage Collect Dummy
- D.loc = null
- D = null
- if (!( ok ))
-
- return 0
-
- return 1
-
/obj/item/slime_extract
name = "slime extract"
diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm
index cf6b0caeedf..d85711f414d 100644
--- a/code/modules/mob/living/carbon/monkey/monkey.dm
+++ b/code/modules/mob/living/carbon/monkey/monkey.dm
@@ -80,24 +80,6 @@
//mob/living/carbon/monkey/bullet_act(var/obj/item/projectile/Proj)taken care of in living
-/mob/living/carbon/monkey/hand_p(mob/M as mob)
- if ((M.a_intent == "harm" && !( istype(wear_mask, /obj/item/clothing/mask/muzzle) )))
- if ((prob(75) && health > 0))
- for(var/mob/O in viewers(src, null))
- O.show_message(text("\red [M.name] has bit []!", src), 1)
- var/damage = rand(1, 5)
- if (HULK in mutations) damage += 10
- adjustBruteLoss(damage)
- updatehealth()
-
- for(var/datum/disease/D in M.viruses)
- if(istype(D, /datum/disease/jungle_fever))
- contract_disease(D,1,0)
- else
- for(var/mob/O in viewers(src, null))
- O.show_message(text("\red [M.name] has attempted to bite []!", src), 1)
- return
-
/mob/living/carbon/monkey/attack_paw(mob/M as mob)
..()
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 98a0eb129ce..59830a39815 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -380,4 +380,163 @@
if(update_slimes)
for(var/mob/living/carbon/slime/M in view(1,src))
- M.UpdateFeed(src)
\ No newline at end of file
+ M.UpdateFeed(src)
+
+/mob/living/verb/resist()
+ set name = "Resist"
+ set category = "IC"
+
+ if(!isliving(usr) || usr.next_move > world.time)
+ return
+ usr.next_move = world.time + 20
+
+ var/mob/living/L = usr
+
+ //resisting grabs (as if it helps anyone...)
+ if(!L.stat && L.canmove && !L.restrained())
+ var/resisting = 0
+ for(var/obj/O in L.requests)
+ del(O)
+ resisting++
+ for(var/obj/item/weapon/grab/G in usr.grabbed_by)
+ resisting++
+ if(G.state == GRAB_PASSIVE)
+ del(G)
+ else
+ if(G.state == GRAB_AGGRESSIVE)
+ if(prob(25))
+ L.visible_message("[L] has broken free of [G.assailant]'s grip!")
+ del(G)
+ else
+ if(G.state == GRAB_NECK)
+ if(prob(5))
+ L.visible_message("[L] has broken free of [G.assailant]'s headlock!")
+ del(G)
+ if(resisting)
+ L.visible_message("[L] resists!")
+
+
+ //unbuckling yourself
+ if(L.buckled && L.last_special <= world.time)
+ if(iscarbon(L))
+ var/mob/living/carbon/C = L
+ if(C.handcuffed)
+ C.next_move = world.time + 100
+ C.last_special = world.time + 100
+ C.visible_message("[usr] attempts to unbuckle themself!", \
+ "You attempt to unbuckle yourself. (This will take around 2 minutes and you need to stay still.)")
+ spawn(0)
+ if(do_after(usr, 1200))
+ if(!C.buckled)
+ return
+ C.visible_message("[usr] manages to unbuckle themself!", \
+ "You successfully unbuckle yourself.")
+ C.buckled.manual_unbuckle(C)
+ else
+ L.buckled.manual_unbuckle(L)
+ else
+ L.buckled.manual_unbuckle(L)
+
+ //Breaking out of a locker?
+ else if(loc && istype(loc, /obj/structure/closet))
+ var/obj/structure/closet/C = L.loc
+ var/breakout_time = 2 //2 minutes by default
+ if(istype(L.loc, /obj/structure/closet/critter) && !C.welded)
+ breakout_time = 0.75 //45 seconds if it's an unwelded critter crate
+
+ if(C.opened || (!C.welded && !C.locked))
+ return //Door's open, not locked or welded, no point in resisting.
+
+ //okay, so the closet is either welded or locked... resist!!!
+ usr.next_move = world.time + 100
+ L.last_special = world.time + 100
+ L << "You lean on the back of [C] and start pushing the door open. (this will take about [breakout_time] minutes.)"
+ for(var/mob/O in viewers(C))
+ O << "[C] begins to shake violently!"
+
+ if(do_after(usr,(breakout_time*60*10))) //minutes * 60seconds * 10deciseconds
+ if(!C || !L || L.stat != CONSCIOUS || L.loc != C || C.opened || (!C.locked && !C.welded))
+ return
+ //we check after a while whether there is a point of resisting anymore and whether the user is capable of resisting
+
+ C.welded = 0 //applies to all lockers lockers
+ C.locked = 0 //applies to critter crates and secure lockers only
+ C.broken = 1 //applies to secure lockers only
+ L.visible_message("[L] successfully broke out of [C]!", \
+ "You successfully break out of [C]!")
+ if(istype(C.loc, /obj/structure/bigDelivery)) //Do this to prevent contents from being opened into nullspace (read: bluespace)
+ var/obj/structure/bigDelivery/BD = C.loc
+ BD.attack_hand(usr)
+ C.open()
+
+ //breaking out of handcuffs
+ else if(iscarbon(L))
+ var/mob/living/carbon/CM = L
+ if(CM.handcuffed && CM.canmove && (CM.last_special <= world.time))
+ CM.next_move = world.time + 100
+ CM.last_special = world.time + 100
+ if(isalienadult(CM) || (HULK in usr.mutations))//Don't want to do a lot of logic gating here.
+ CM.visible_message("[CM] is trying to break [CM.handcuffed]!", \
+ "You attempt to break [CM.handcuffed]. (This will take around 5 seconds and you need to stand still.)")
+ spawn(0)
+ if(do_after(CM, 50))
+ if(!CM.handcuffed || CM.buckled)
+ return
+ CM.visible_message("[CM] manages to break [CM.handcuffed]!" , \
+ "You successfully break [CM.handcuffed]!")
+ CM.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
+ del(CM.handcuffed)
+ CM.handcuffed = null
+ CM.update_inv_handcuffed(0)
+ else
+ var/obj/item/weapon/handcuffs/HC = CM.handcuffed
+ var/breakouttime = 1200 //A default in case you are somehow handcuffed with something that isn't an obj/item/weapon/handcuffs type
+ var/displaytime = 2 //Minutes to display in the "this will take X minutes."
+ if(istype(HC)) //If you are handcuffed with actual handcuffs... Well what do I know, maybe someone will want to handcuff you with toilet paper in the future...
+ breakouttime = HC.breakouttime
+ displaytime = breakouttime / 600 //Minutes
+ CM.visible_message("[usr] attempts to remove [HC]!", \
+ "You attempt to remove [HC]. (This will take around [displaytime] minutes and you need to stand still.)")
+ spawn(0)
+ if(do_after(CM, breakouttime))
+ if(!CM.handcuffed || CM.buckled)
+ return // time leniency for lag which also might make this whole thing pointless but the server
+ CM.visible_message("[CM] manages to remove [CM.handcuffed]!", \
+ "You successfully remove [CM.handcuffed].")
+ CM.handcuffed.loc = usr.loc
+ CM.handcuffed = null
+ CM.update_inv_handcuffed(0)
+ else if(CM.legcuffed && CM.canmove && (CM.last_special <= world.time))
+ CM.next_move = world.time + 100
+ CM.last_special = world.time + 100
+ if(isalienadult(CM) || (HULK in usr.mutations))//Don't want to do a lot of logic gating here.
+ CM.visible_message("[CM] is trying to break [CM.legcuffed]!", \
+ "You attempt to break [CM.legcuffed]. (This will take around 5 seconds and you need to stand still.)")
+ spawn(0)
+ if(do_after(CM, 50))
+ if(!CM.legcuffed || CM.buckled)
+ return
+ CM.visible_message("[CM] manages to break [CM.legcuffed]!", \
+ "You successfully break [CM.legcuffed].")
+ CM.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
+ del(CM.legcuffed)
+ CM.legcuffed = null
+ CM.update_inv_legcuffed(0)
+ else
+ var/obj/item/weapon/legcuffs/HC = CM.legcuffed
+ var/breakouttime = 1200 //A default in case you are somehow legcuffed with something that isn't an obj/item/weapon/legcuffs type
+ var/displaytime = 2 //Minutes to display in the "this will take X minutes."
+ if(istype(HC)) //If you are legcuffed with actual legcuffs... Well what do I know, maybe someone will want to legcuff you with toilet paper in the future...
+ breakouttime = HC.breakouttime
+ displaytime = breakouttime / 600 //Minutes
+ CM.visible_message("[CM] attempts to remove [HC]!", \
+ "You attempt to remove [HC]. (This will take around [displaytime] minutes and you need to stand still.)")
+ spawn(0)
+ if(do_after(CM, breakouttime))
+ if(!CM.legcuffed || CM.buckled)
+ return //time leniency for lag which also might make this whole thing pointless but the server
+ CM.visible_message("[CM] manages to remove [CM.legcuffed]!", \
+ "You successfully remove [CM.legcuffed].")
+ CM.legcuffed.loc = usr.loc
+ CM.legcuffed = null
+ CM.update_inv_legcuffed(0)
diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm
index 1d002c1b77d..3b53d5d549a 100644
--- a/code/modules/mob/living/say.dm
+++ b/code/modules/mob/living/say.dm
@@ -376,7 +376,8 @@ var/list/department_radio_keys = list(
for(var/mob/M in heard_a + heard_b)
if(M.client)
speech_bubble_recipients.Add(M.client)
- flick_overlay(image('icons/mob/talk.dmi', src, "h[bubble_type][say_test(message)]",MOB_LAYER+1), speech_bubble_recipients, 30)
+ spawn(0)
+ flick_overlay(image('icons/mob/talk.dmi', src, "h[bubble_type][say_test(message)]",MOB_LAYER+1), speech_bubble_recipients, 30)
log_say("[name]/[key] : [message]")
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index 4a1efcfe614..9be5fa05662 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -29,6 +29,7 @@ var/list/ai_list = list()
var/icon/holo_icon//Default is assigned when AI is created.
var/obj/item/device/pda/ai/aiPDA = null
var/obj/item/device/multitool/aiMulti = null
+ var/obj/item/device/camera/ai_camera/aicamera = null
//MALFUNCTION
var/datum/module_picker/malf_picker
@@ -84,6 +85,7 @@ var/list/ai_list = list()
aiPDA.name = name + " (" + aiPDA.ownjob + ")"
aiMulti = new(src)
+ aicamera = new/obj/item/device/camera/ai_camera(src)
if (istype(loc, /turf))
verbs.Add(/mob/living/silicon/ai/proc/ai_call_shuttle,/mob/living/silicon/ai/proc/ai_camera_track, \
@@ -406,16 +408,6 @@ var/list/ai_list = list()
O.show_message(text("\red [] took a swipe at []!", M, src), 1)
return
-/mob/living/silicon/ai/attack_hand(mob/living/carbon/M as mob)
- if(ishuman(M))//Checks to see if they are ninja
- if(istype(M:gloves, /obj/item/clothing/gloves/space_ninja)&&M:gloves:candrain&&!M:gloves:draining)
- if(M:wear_suit:s_control)
- M:wear_suit:transfer_ai("AICORE", "NINJASUIT", src, M)
- else
- M << "\red ERROR: \black Remote access channel disabled."
- return
-
-
/mob/living/silicon/ai/attack_animal(mob/living/simple_animal/M as mob)
if(M.melee_damage_upper == 0)
M.emote("[M.friendly] [src]")
@@ -689,3 +681,4 @@ var/list/ai_list = list()
set name = "State Laws"
checklaws()
+
diff --git a/code/modules/mob/living/silicon/ai/freelook/cameranet.dm b/code/modules/mob/living/silicon/ai/freelook/cameranet.dm
index a838e80042d..f9da2399c9a 100644
--- a/code/modules/mob/living/silicon/ai/freelook/cameranet.dm
+++ b/code/modules/mob/living/silicon/ai/freelook/cameranet.dm
@@ -130,6 +130,10 @@ var/datum/cameranet/cameranet = new()
// 0xf = 15
var/turf/position = get_turf(target)
+ return checkTurfVis(position)
+
+
+/datum/cameranet/proc/checkTurfVis(var/turf/position)
var/datum/camerachunk/chunk = getCameraChunk(position.x, position.y, position.z)
if(chunk)
if(chunk.changed)
@@ -147,4 +151,4 @@ var/datum/cameranet/cameranet = new()
if(cameranet.chunkGenerated(x, y, z))
var/datum/camerachunk/chunk = cameranet.getCameraChunk(x, y, z)
usr.client.debug_variables(chunk)
-*/
\ No newline at end of file
+*/
diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm
index d692d5cba21..7f911fa56ad 100644
--- a/code/modules/mob/living/silicon/ai/freelook/eye.dm
+++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm
@@ -63,18 +63,6 @@
AI.cameraFollow = null
AI.eyeobj.setLoc(src)
-/mob/living/Click()
- if(isAI(usr))
- return
- ..()
-
-/mob/living/DblClick()
- if(isAI(usr) && usr != src)
- var/mob/living/silicon/ai/A = usr
- A.ai_actual_track(src)
- return
- ..()
-
// This will move the AIEye. It will also cause lights near the eye to light up, if toggled.
// This is handled in the proc below this one.
diff --git a/code/modules/mob/living/silicon/ai/hud.dm b/code/modules/mob/living/silicon/ai/hud.dm
deleted file mode 100644
index 79ca8f172ba..00000000000
--- a/code/modules/mob/living/silicon/ai/hud.dm
+++ /dev/null
@@ -1,2 +0,0 @@
-/datum/hud/proc/ai_hud()
- return
\ No newline at end of file
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index e7fee9d1821..07aa7c7d67c 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -734,12 +734,6 @@
user.visible_message("[user] pets [src]!", \
"You pet [src]!")
- if(ishuman(user))
- if(istype(user:gloves, /obj/item/clothing/gloves/space_ninja)&&user:gloves:candrain&&!user:gloves:draining)
- call(/obj/item/clothing/gloves/space_ninja/proc/drain)("CYBORG",src,user:wear_suit)
- return
-
-
/mob/living/silicon/robot/attack_paw(mob/user)
return attack_hand(user)
diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm
index e71a3bdf790..81a9c45bfd6 100644
--- a/code/modules/mob/living/silicon/say.dm
+++ b/code/modules/mob/living/silicon/say.dm
@@ -75,7 +75,8 @@
speech_bubble_recipients.Add(M.client)
//speech bubble
- flick_overlay(image('icons/mob/talk.dmi', src, "hR[say_test(message)]",MOB_LAYER+1), speech_bubble_recipients, 30)
+ spawn(0)
+ flick_overlay(image('icons/mob/talk.dmi', src, "hR[say_test(message)]",MOB_LAYER+1), speech_bubble_recipients, 30)
/*Radios "filter out" this conversation channel so we don't need to account for them.
This is another way of saying that we won't bother dealing with them.*/
diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm
index 4d55730fe61..fb061b46175 100644
--- a/code/modules/mob/living/simple_animal/friendly/corgi.dm
+++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm
@@ -66,7 +66,7 @@
//Removing from inventory
if(href_list["remove_inv"])
- if(get_dist(src,usr) > 1 || !(ishuman(usr) || ismonkey(usr) || isrobot(usr) || isalienadult(usr)))
+ if(!Adjacent(usr) || !(ishuman(usr) || ismonkey(usr) || isrobot(usr) || isalienadult(usr)))
return
var/remove_from = href_list["remove_inv"]
switch(remove_from)
@@ -99,7 +99,7 @@
//Adding things to inventory
else if(href_list["add_inv"])
- if(get_dist(src,usr) > 1 || !(ishuman(usr) || ismonkey(usr) || isrobot(usr) || isalienadult(usr)))
+ if(!Adjacent(usr) || !(ishuman(usr) || ismonkey(usr) || isrobot(usr) || isalienadult(usr)))
return
var/add_to = href_list["add_inv"]
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index 5df695605d8..c48ba8dca22 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -82,11 +82,6 @@ var/next_mob_id = 0
M.show_message( message, 1, blind_message, 2)
-//This is awful, still.
-/mob/attackby(obj/item/I, mob/user)
- if(I && istype(I)) //The istype is necessary for things like bodybags which are structures that do not have an attack() proc.
- I.attack(src, user)
-
/mob/proc/movement_delay()
return 0
@@ -246,7 +241,7 @@ var/list/slot_equipment_priority = list( \
/mob/verb/mode()
set name = "Activate Held Object"
- set category = "IC"
+ set category = "Object"
set src = usr
if(hand)
@@ -259,6 +254,8 @@ var/list/slot_equipment_priority = list( \
if (W)
W.attack_self(src)
update_inv_r_hand(0)
+ if(next_move < world.time)
+ next_move = world.time + 2
return
/*
@@ -477,7 +474,7 @@ var/list/slot_equipment_priority = list( \
if(machine && in_range(src, usr))
show_inv(machine)
- if(!usr.stat && usr.canmove && !usr.restrained() && in_range(src, usr))
+ if(!usr.stat && usr.canmove && !usr.restrained() && Adjacent(usr))
if(href_list["item"])
var/slot = text2num(href_list["item"])
var/obj/item/what = get_item_by_slot(slot)
@@ -487,28 +484,30 @@ var/list/slot_equipment_priority = list( \
"[usr] tries to remove [src]'s [what.name].")
what.add_fingerprint(usr)
if(do_mob(usr, src, STRIP_DELAY))
- if(what)
+ if(what && Adjacent(usr))
u_equip(what)
else
what = usr.get_active_hand()
if(what && what.mob_can_equip(src, slot, 1))
visible_message("[usr] tries to put [what] on [src].")
if(do_mob(usr, src, STRIP_DELAY * 0.5))
- if(what)
+ if(what && Adjacent(usr))
usr.u_equip(what)
equip_to_slot_if_possible(what, slot, 0, 1)
- if(usr.machine == src && in_range(src, usr))
- show_inv(usr)
+ if(usr.machine == src)
+ if(Adjacent(usr))
+ show_inv(usr)
+ else
+ usr << browse(null,"window=mob\ref[src]")
/mob/MouseDrop(mob/M)
..()
if(M != usr) return
if(usr == src) return
- if(!in_range(usr, src)) return
+ if(!Adjacent(usr)) return
if(istype(M, /mob/living/silicon/ai)) return
- if(LinkBlocked(usr.loc, loc)) return
show_inv(usr)
diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm
index 10bec1b2123..5f0bcf31668 100644
--- a/code/modules/mob/mob_defines.dm
+++ b/code/modules/mob/mob_defines.dm
@@ -23,7 +23,6 @@
var/obj/screen/nutrition_icon = null
var/obj/screen/pressure = null
var/obj/screen/damageoverlay = null
-
/*A bunch of this stuff really needs to go under their own defines instead of being globally attached to mob.
A variable should only be globally attached to turfs/objects/whatever, when it is in fact needed as such.
The current method unnecessarily clusters up the variable list, especially for humans (although rearranging won't really clean it up a lot but the difference will be noticable for other mobs).
@@ -45,7 +44,6 @@
var/disabilities = 0 //Carbon
var/atom/movable/pulling = null
var/next_move = null
- var/prev_move = null
var/monkeyizing = null //Carbon
var/hand = null
var/eye_blind = null //Carbon
@@ -95,7 +93,6 @@
var/a_intent = "help"//Living
var/m_int = null//Living
var/m_intent = "run"//Living
- var/lastDblClick = 0
var/lastKnownIP = null
var/obj/structure/stool/bed/buckled = null//Living
var/obj/item/l_hand = null//Living
diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm
index 1d51a302f34..d95fa724b0f 100644
--- a/code/modules/mob/mob_grab.dm
+++ b/code/modules/mob/mob_grab.dm
@@ -3,6 +3,7 @@
/obj/item/weapon/grab
name = "grab"
+ flags = NOBLUDGEON
var/obj/screen/grab/hud = null
var/mob/affecting = null
var/mob/assailant = null
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index ed698b4e20d..19d492c55aa 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -291,58 +291,6 @@ It's fairly easy to fix if dealing with single letters but not so much with comp
return 1
return 0
-
-//Triggered when F12 is pressed (Unless someone changed something in the DMF)
-/mob/verb/button_pressed_F12()
- set name = "F12"
- set hidden = 1
-
- if(hud_used)
- if(ishuman(src))
- if(!src.client) return
-
- if(hud_used.hud_shown)
- hud_used.hud_shown = 0
- if(src.hud_used.adding)
- src.client.screen -= src.hud_used.adding
- if(src.hud_used.other)
- src.client.screen -= src.hud_used.other
- if(src.hud_used.hotkeybuttons)
- src.client.screen -= src.hud_used.hotkeybuttons
- if(src.hud_used.item_action_list)
- src.client.screen -= src.hud_used.item_action_list
-
- //Due to some poor coding some things need special treatment:
- //These ones are a part of 'adding', 'other' or 'hotkeybuttons' but we want them to stay
- src.client.screen += src.hud_used.l_hand_hud_object //we want the hands to be visible
- src.client.screen += src.hud_used.r_hand_hud_object //we want the hands to be visible
- src.client.screen += src.hud_used.action_intent //we want the intent swticher visible
- src.hud_used.action_intent.screen_loc = ui_acti_alt //move this to the alternative position, where zone_select usually is.
-
- //These ones are not a part of 'adding', 'other' or 'hotkeybuttons' but we want them gone.
- src.client.screen -= src.zone_sel //zone_sel is a mob variable for some reason.
-
- else
- hud_used.hud_shown = 1
- if(src.hud_used.adding)
- src.client.screen += src.hud_used.adding
- if(src.hud_used.other && src.hud_used.inventory_shown)
- src.client.screen += src.hud_used.other
- if(src.hud_used.hotkeybuttons && !src.hud_used.hotkey_ui_hidden)
- src.client.screen += src.hud_used.hotkeybuttons
-
-
- src.hud_used.action_intent.screen_loc = ui_acti //Restore intent selection to the original position
- src.client.screen += src.zone_sel //This one is a special snowflake
-
- hud_used.hidden_inventory_update()
- hud_used.persistant_inventory_update()
- update_action_buttons()
- else
- usr << "\red Inventory hiding is currently only supported for human mobs, sorry."
- else
- usr << "\red This mob type does not use a HUD."
-
//converts intent-strings into numbers and back
/proc/intent_numeric(argument)
if(istext(argument))
diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm
index 7ed169f0088..6997ab151cd 100644
--- a/code/modules/mob/mob_movement.dm
+++ b/code/modules/mob/mob_movement.dm
@@ -158,7 +158,7 @@
/atom/movable/Move(NewLoc, direct)
- if (direct & direct - 1)
+ if (direct & (direct - 1))
if (direct & 1)
if (direct & 4)
if (step(src, NORTH))
@@ -251,9 +251,12 @@
if(mob.restrained()) //Why being pulled while cuffed prevents you from moving
for(var/mob/M in range(mob, 1))
- if(M.pulling == mob && !M.restrained() && M.stat == 0 && M.canmove)
- src << "\blue You're restrained! You can't move!"
- return 0
+ if(M.pulling == mob)
+ if(!M.restrained() && M.stat == 0 && M.canmove && mob.Adjacent(M))
+ src << "\blue You're restrained! You can't move!"
+ return 0
+ else
+ M.stop_pulling()
move_delay = world.time//set move delay
@@ -492,7 +495,7 @@
return
if (pulling.anchored)
return
- if ((pulling.loc != loc && get_dist(src, pulling) > 1) || !isturf(pulling.loc))
+ if (pulling.Adjacent(src))
return
if (ismob(pulling))
var/mob/M = pulling
diff --git a/code/modules/mob/new_player/hud.dm b/code/modules/mob/new_player/hud.dm
deleted file mode 100644
index 67af01d6453..00000000000
--- a/code/modules/mob/new_player/hud.dm
+++ /dev/null
@@ -1,3 +0,0 @@
-
-/datum/hud/proc/unplayer_hud()
- return
\ No newline at end of file
diff --git a/code/modules/mob/screen.dm b/code/modules/mob/screen.dm
deleted file mode 100644
index 3f6218a2089..00000000000
--- a/code/modules/mob/screen.dm
+++ /dev/null
@@ -1,505 +0,0 @@
-/obj/screen
- name = ""
- icon = 'icons/mob/screen_gen.dmi'
- layer = 20.0
- unacidable = 1
- var/obj/master = null //A reference to the object in the slot. Grabs or items, generally.
-
-
-/obj/screen/text
- icon = null
- icon_state = null
- mouse_opacity = 0
- screen_loc = "CENTER-7,CENTER-7"
- maptext_height = 480
- maptext_width = 480
-
-
-/obj/screen/inventory
- var/slot_id //The indentifier for the slot. It has nothing to do with ID cards.
-
-
-/obj/screen/close
- name = "close"
-
-/obj/screen/close/Click()
- if(master)
- if(istype(master, /obj/item/weapon/storage))
- var/obj/item/weapon/storage/S = master
- S.close(usr)
-
-
-/obj/screen/item_action
- var/obj/item/owner
-
-/obj/screen/item_action/Click()
- if(!usr || !owner)
- return
-
- if(usr.stat || usr.restrained() || usr.stunned || usr.lying)
- return
-
- if(!(owner in usr))
- return
-
- owner.ui_action_click()
-
-//This is the proc used to update all the action buttons. It just returns for all mob types except humans.
-/mob/proc/update_action_buttons()
- return
-
-
-/obj/screen/grab
- name = "grab"
-
-/obj/screen/grab/Click()
- var/obj/item/weapon/grab/G = master
- G.s_click(src)
-
-/obj/screen/grab/attack_hand()
- return
-
-/obj/screen/grab/attackby()
- return
-
-
-/obj/screen/storage
- name = "storage"
-
-/obj/screen/storage/attack_hand(mob/user)
- if(master)
- var/obj/item/I = user.get_active_hand()
- if(I)
- master.attackby(I, user)
-
-
-/obj/screen/zone_sel
- name = "damage zone"
- icon_state = "zone_sel"
- screen_loc = ui_zonesel
- var/selecting = "chest"
-
-/obj/screen/zone_sel/Click(location, control,params)
- var/list/PL = params2list(params)
- var/icon_x = text2num(PL["icon-x"])
- var/icon_y = text2num(PL["icon-y"])
- var/old_selecting = selecting //We're only going to update_icon() if there's been a change
-
- switch(icon_y)
- if(1 to 9) //Legs
- switch(icon_x)
- if(10 to 15)
- selecting = "r_leg"
- if(17 to 22)
- selecting = "l_leg"
- else
- return
- if(10 to 13) //Hands and groin
- switch(icon_x)
- if(8 to 11)
- selecting = "r_arm"
- if(12 to 20)
- selecting = "groin"
- if(21 to 24)
- selecting = "l_arm"
- else
- return
- if(14 to 22) //Chest and arms to shoulders
- switch(icon_x)
- if(8 to 11)
- selecting = "r_arm"
- if(12 to 20)
- selecting = "chest"
- if(21 to 24)
- selecting = "l_arm"
- else
- return
- if(23 to 30) //Head, but we need to check for eye or mouth
- if(icon_x in 12 to 20)
- selecting = "head"
- switch(icon_y)
- if(23 to 24)
- if(icon_x in 15 to 17)
- selecting = "mouth"
- if(26) //Eyeline, eyes are on 15 and 17
- if(icon_x in 14 to 18)
- selecting = "eyes"
- if(25 to 27)
- if(icon_x in 15 to 17)
- selecting = "eyes"
-
- if(old_selecting != selecting)
- update_icon()
-
-/obj/screen/zone_sel/update_icon()
- overlays.Cut()
- overlays += image('icons/mob/screen_gen.dmi', "[selecting]")
-
-
-/obj/screen/Click(location, control, params)
- if(!usr) return
-
- switch(name)
- if("toggle")
- if(usr.hud_used.inventory_shown)
- usr.hud_used.inventory_shown = 0
- usr.client.screen -= usr.hud_used.other
- else
- usr.hud_used.inventory_shown = 1
- usr.client.screen += usr.hud_used.other
-
- usr.hud_used.hidden_inventory_update()
-
- if("equip")
- if(ishuman(usr))
- var/mob/living/carbon/human/H = usr
- H.quick_equip()
-
- if("resist")
- if(isliving(usr))
- var/mob/living/L = usr
- L.resist()
-
- if("mov_intent")
- if(iscarbon(usr))
- var/mob/living/carbon/C = usr
- if(C.legcuffed)
- C << "You are legcuffed! You cannot run until you get [C.legcuffed] removed!"
- C.m_intent = "walk" //Just incase
- C.hud_used.move_intent.icon_state = "walking"
- return
- switch(usr.m_intent)
- if("run")
- usr.m_intent = "walk"
- usr.hud_used.move_intent.icon_state = "walking"
- if("walk")
- usr.m_intent = "run"
- usr.hud_used.move_intent.icon_state = "running"
- if(istype(usr,/mob/living/carbon/alien/humanoid))
- usr.update_icons()
- if("m_intent")
- if(!usr.m_int)
- switch(usr.m_intent)
- if("run")
- usr.m_int = "13,14"
- if("walk")
- usr.m_int = "14,14"
- if("face")
- usr.m_int = "15,14"
- else
- usr.m_int = null
- if("walk")
- usr.m_intent = "walk"
- usr.m_int = "14,14"
- if("face")
- usr.m_intent = "face"
- usr.m_int = "15,14"
- if("run")
- usr.m_intent = "run"
- usr.m_int = "13,14"
- if("Reset Machine")
- usr.unset_machine()
- if("internal")
- if(iscarbon(usr))
- var/mob/living/carbon/C = usr
- if(!C.stat && !C.stunned && !C.paralysis && !C.restrained())
- if(C.internal)
- C.internal = null
- C << "No longer running on internals."
- if(C.internals)
- C.internals.icon_state = "internal0"
- else
- if(!istype(C.wear_mask, /obj/item/clothing/mask))
- C << "You are not wearing a mask."
- return
- else
- if(istype(C.l_hand, /obj/item/weapon/tank))
- C << "You are now running on internals from the [C.l_hand] on your left hand."
- C.internal = C.l_hand
- else if(istype(C.r_hand, /obj/item/weapon/tank))
- C << "You are now running on internals from the [C.r_hand] on your right hand."
- C.internal = C.r_hand
- else if(ishuman(C))
- var/mob/living/carbon/human/H = C
- if(istype(H.s_store, /obj/item/weapon/tank))
- H << "You are now running on internals from the [H.s_store] on your [H.wear_suit]."
- H.internal = H.s_store
- else if(istype(H.belt, /obj/item/weapon/tank))
- H << "You are now running on internals from the [H.belt] on your belt."
- H.internal = H.belt
- else if(istype(H.l_store, /obj/item/weapon/tank))
- H << "You are now running on internals from the [H.l_store] in your left pocket."
- H.internal = H.l_store
- else if(istype(H.r_store, /obj/item/weapon/tank))
- H << "You are now running on internals from the [H.r_store] in your right pocket."
- H.internal = H.r_store
-
- //Seperate so CO2 jetpacks are a little less cumbersome.
- if(!C.internal && istype(C.back, /obj/item/weapon/tank))
- C << "You are now running on internals from the [C.back] on your back."
- C.internal = C.back
-
- if(C.internal)
- if(C.internals)
- C.internals.icon_state = "internal1"
- else
- C << "You don't have an oxygen tank."
- if("act_intent")
- usr.a_intent_change("right")
- if("pull")
- usr.stop_pulling()
- if("throw/catch")
- if(!usr.stat && isturf(usr.loc) && !usr.restrained())
- usr:toggle_throw_mode()
- if("drop")
- usr.drop_item_v()
- if("swap")
- usr:swap_hand()
- if("hand")
- usr:swap_hand()
- if("r_hand")
- if(iscarbon(usr))
- var/mob/living/carbon/C = usr
- C.activate_hand("r")
- if("l_hand")
- if(iscarbon(usr))
- var/mob/living/carbon/C = usr
- C.activate_hand("l")
- if("module")
- if(issilicon(usr))
- if(usr:module)
- return
- usr:pick_module()
-
- if("radio")
- if(issilicon(usr))
- usr:radio_menu()
- if("panel")
- if(issilicon(usr))
- usr:installed_modules()
-
- if("store")
- if(issilicon(usr))
- usr:uneq_active()
-
- if("module1")
- if(usr:module_state_1)
- if(usr:module_active != usr:module_state_1)
- usr:inv1.icon_state = "inv1 +a"
- usr:inv2.icon_state = "inv2"
- usr:inv3.icon_state = "inv3"
- usr:module_active = usr:module_state_1
- else
- usr:inv1.icon_state = "inv1"
- usr:module_active = null
-
- if("module2")
- if(usr:module_state_2)
- if(usr:module_active != usr:module_state_2)
- usr:inv1.icon_state = "inv1"
- usr:inv2.icon_state = "inv2 +a"
- usr:inv3.icon_state = "inv3"
- usr:module_active = usr:module_state_2
- else
- usr:inv2.icon_state = "inv2"
- usr:module_active = null
-
- if("module3")
- if(usr:module_state_3)
- if(usr:module_active != usr:module_state_3)
- usr:inv1.icon_state = "inv1"
- usr:inv2.icon_state = "inv2"
- usr:inv3.icon_state = "inv3 +a"
- usr:module_active = usr:module_state_3
- else
- usr:inv3.icon_state = "inv3"
- usr:module_active = null
-
- else
- DblClick()
-
-
-/obj/screen/inventory/attack_hand(mob/user)
- if(user.attack_ui(slot_id))
- user.update_inv_l_hand(0)
- user.update_inv_r_hand(0)
-
-/obj/screen/inventory/attack_paw(mob/user)
- return attack_hand(user)
-
-/mob/living/carbon/human/verb/quick_equip()
- set name = "quick-equip"
- set hidden = 1
-
- if(ishuman(src))
- var/mob/living/carbon/human/H = src
- var/obj/item/I = H.get_active_hand()
- if(!I)
- H << "You are not holding anything to equip."
- return
- if(H.equip_to_appropriate_slot(I))
- if(hand)
- update_inv_l_hand(0)
- else
- update_inv_r_hand(0)
- else
- H << "\red You are unable to equip that."
-
-/mob/living/verb/resist()
- set name = "Resist"
- set category = "IC"
-
- if(!isliving(usr) || usr.next_move > world.time)
- return
- usr.next_move = world.time + 20
-
- var/mob/living/L = usr
-
- //resisting grabs (as if it helps anyone...)
- if(!L.stat && L.canmove && !L.restrained())
- var/resisting = 0
- for(var/obj/O in L.requests)
- del(O)
- resisting++
- for(var/obj/item/weapon/grab/G in usr.grabbed_by)
- resisting++
- if(G.state == GRAB_PASSIVE)
- del(G)
- else
- if(G.state == GRAB_AGGRESSIVE)
- if(prob(25))
- L.visible_message("[L] has broken free of [G.assailant]'s grip!")
- del(G)
- else
- if(G.state == GRAB_NECK)
- if(prob(5))
- L.visible_message("[L] has broken free of [G.assailant]'s headlock!")
- del(G)
- if(resisting)
- L.visible_message("[L] resists!")
-
-
- //unbuckling yourself
- if(L.buckled && L.last_special <= world.time)
- if(iscarbon(L))
- var/mob/living/carbon/C = L
- if(C.handcuffed)
- C.next_move = world.time + 100
- C.last_special = world.time + 100
- C.visible_message("[usr] attempts to unbuckle themself!", \
- "You attempt to unbuckle yourself. (This will take around 2 minutes and you need to stay still.)")
- spawn(0)
- if(do_after(usr, 1200))
- if(!C.buckled)
- return
- C.visible_message("[usr] manages to unbuckle themself!", \
- "You successfully unbuckle yourself.")
- C.buckled.manual_unbuckle(C)
- else
- L.buckled.manual_unbuckle(L)
- else
- L.buckled.manual_unbuckle(L)
-
- //Breaking out of a locker?
- else if(loc && istype(loc, /obj/structure/closet))
- var/obj/structure/closet/C = L.loc
- var/breakout_time = 2 //2 minutes by default
- if(istype(L.loc, /obj/structure/closet/critter) && !C.welded)
- breakout_time = 0.75 //45 seconds if it's an unwelded critter crate
-
- if(C.opened || (!C.welded && !C.locked))
- return //Door's open, not locked or welded, no point in resisting.
-
- //okay, so the closet is either welded or locked... resist!!!
- usr.next_move = world.time + 100
- L.last_special = world.time + 100
- L << "You lean on the back of [C] and start pushing the door open. (this will take about [breakout_time] minutes.)"
- for(var/mob/O in viewers(C))
- O << "[C] begins to shake violently!"
-
- if(do_after(usr,(breakout_time*60*10))) //minutes * 60seconds * 10deciseconds
- if(!C || !L || L.stat != CONSCIOUS || L.loc != C || C.opened || (!C.locked && !C.welded))
- return
- //we check after a while whether there is a point of resisting anymore and whether the user is capable of resisting
-
- C.welded = 0 //applies to all lockers lockers
- C.locked = 0 //applies to critter crates and secure lockers only
- C.broken = 1 //applies to secure lockers only
- L.visible_message("[L] successfully broke out of [C]!", \
- "You successfully break out of [C]!")
- if(istype(C.loc, /obj/structure/bigDelivery)) //Do this to prevent contents from being opened into nullspace (read: bluespace)
- var/obj/structure/bigDelivery/BD = C.loc
- BD.attack_hand(usr)
- C.open()
-
- //breaking out of handcuffs
- else if(iscarbon(L))
- var/mob/living/carbon/CM = L
- if(CM.handcuffed && CM.canmove && (CM.last_special <= world.time))
- CM.next_move = world.time + 100
- CM.last_special = world.time + 100
- if(isalienadult(CM) || (HULK in usr.mutations))//Don't want to do a lot of logic gating here.
- CM.visible_message("[CM] is trying to break [CM.handcuffed]!", \
- "You attempt to break [CM.handcuffed]. (This will take around 5 seconds and you need to stand still.)")
- spawn(0)
- if(do_after(CM, 50))
- if(!CM.handcuffed || CM.buckled)
- return
- CM.visible_message("[CM] manages to break [CM.handcuffed]!" , \
- "You successfully break [CM.handcuffed]!")
- CM.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
- del(CM.handcuffed)
- CM.handcuffed = null
- CM.update_inv_handcuffed(0)
- else
- var/obj/item/weapon/handcuffs/HC = CM.handcuffed
- var/breakouttime = 1200 //A default in case you are somehow handcuffed with something that isn't an obj/item/weapon/handcuffs type
- var/displaytime = 2 //Minutes to display in the "this will take X minutes."
- if(istype(HC)) //If you are handcuffed with actual handcuffs... Well what do I know, maybe someone will want to handcuff you with toilet paper in the future...
- breakouttime = HC.breakouttime
- displaytime = breakouttime / 600 //Minutes
- CM.visible_message("[usr] attempts to remove [HC]!", \
- "You attempt to remove [HC]. (This will take around [displaytime] minutes and you need to stand still.)")
- spawn(0)
- if(do_after(CM, breakouttime))
- if(!CM.handcuffed || CM.buckled)
- return // time leniency for lag which also might make this whole thing pointless but the server
- CM.visible_message("[CM] manages to remove [CM.handcuffed]!", \
- "You successfully remove [CM.handcuffed].")
- CM.handcuffed.loc = usr.loc
- CM.handcuffed = null
- CM.update_inv_handcuffed(0)
- else if(CM.legcuffed && CM.canmove && (CM.last_special <= world.time))
- CM.next_move = world.time + 100
- CM.last_special = world.time + 100
- if(isalienadult(CM) || (HULK in usr.mutations))//Don't want to do a lot of logic gating here.
- CM.visible_message("[CM] is trying to break [CM.legcuffed]!", \
- "You attempt to break [CM.legcuffed]. (This will take around 5 seconds and you need to stand still.)")
- spawn(0)
- if(do_after(CM, 50))
- if(!CM.legcuffed || CM.buckled)
- return
- CM.visible_message("[CM] manages to break [CM.legcuffed]!", \
- "You successfully break [CM.legcuffed].")
- CM.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
- del(CM.legcuffed)
- CM.legcuffed = null
- CM.update_inv_legcuffed(0)
- else
- var/obj/item/weapon/legcuffs/HC = CM.legcuffed
- var/breakouttime = 1200 //A default in case you are somehow legcuffed with something that isn't an obj/item/weapon/legcuffs type
- var/displaytime = 2 //Minutes to display in the "this will take X minutes."
- if(istype(HC)) //If you are legcuffed with actual legcuffs... Well what do I know, maybe someone will want to legcuff you with toilet paper in the future...
- breakouttime = HC.breakouttime
- displaytime = breakouttime / 600 //Minutes
- CM.visible_message("[CM] attempts to remove [HC]!", \
- "You attempt to remove [HC]. (This will take around [displaytime] minutes and you need to stand still.)")
- spawn(0)
- if(do_after(CM, breakouttime))
- if(!CM.legcuffed || CM.buckled)
- return //time leniency for lag which also might make this whole thing pointless but the server
- CM.visible_message("[CM] manages to remove [CM.legcuffed]!", \
- "You successfully remove [CM.legcuffed].")
- CM.legcuffed.loc = usr.loc
- CM.legcuffed = null
- CM.update_inv_legcuffed(0)
\ No newline at end of file
diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm
index 4d662aea876..90f55715009 100644
--- a/code/modules/paperwork/filingcabinet.dm
+++ b/code/modules/paperwork/filingcabinet.dm
@@ -67,6 +67,22 @@
dat += ""
user << browse("[name][dat]", "window=filingcabinet;size=350x300")
+/obj/structure/filingcabinet/attack_tk(mob/user)
+ if(anchored)
+ attack_self_tk(user)
+ else
+ ..()
+
+/obj/structure/filingcabinet/attack_self_tk(mob/user)
+ if(contents.len)
+ if(prob(40 + contents.len * 5))
+ var/obj/item/I = pick(contents)
+ I.loc = loc
+ if(prob(25))
+ step_rand(I)
+ user << "You pull \a [I] out of [src] at random."
+ return
+ user << "You find nothing in [src]."
/obj/structure/filingcabinet/Topic(href, href_list)
if(href_list["retrieve"])
@@ -88,7 +104,7 @@
/obj/structure/filingcabinet/security
var/virgin = 1
-/obj/structure/filingcabinet/security/attack_hand(mob/user)
+/obj/structure/filingcabinet/security/proc/populate()
if(virgin)
for(var/datum/data/record/G in data_core.general)
var/datum/data/record/S = find_record("name", G.fields["name"], data_core.security)
@@ -105,8 +121,12 @@
P.name = "paper - '[G.fields["name"]]'"
virgin = 0 //tabbing here is correct- it's possible for people to try and use it
//before the records have been generated, so we do this inside the loop.
+/obj/structure/filingcabinet/security/attack_hand()
+ populate()
+ ..()
+/obj/structure/filingcabinet/security/attack_tk()
+ populate()
..()
-
/*
* Medical Record Cabinets
@@ -114,7 +134,7 @@
/obj/structure/filingcabinet/medical
var/virgin = 1
-/obj/structure/filingcabinet/medical/attack_hand(mob/user)
+/obj/structure/filingcabinet/medical/proc/populate()
if(virgin)
for(var/datum/data/record/G in data_core.general)
var/datum/data/record/M = find_record("name", G.fields["name"], data_core.medical)
@@ -131,4 +151,9 @@
P.name = "paper - '[G.fields["name"]]'"
virgin = 0 //tabbing here is correct- it's possible for people to try and use it
//before the records have been generated, so we do this inside the loop.
- ..()
\ No newline at end of file
+/obj/structure/filingcabinet/medical/attack_hand()
+ populate()
+ ..()
+/obj/structure/filingcabinet/medical/attack_tk()
+ populate()
+ ..()
diff --git a/code/modules/paperwork/handlabeler.dm b/code/modules/paperwork/handlabeler.dm
index 5381dfc30d6..99abdf8f1c7 100644
--- a/code/modules/paperwork/handlabeler.dm
+++ b/code/modules/paperwork/handlabeler.dm
@@ -8,7 +8,8 @@
var/mode = 0
-/obj/item/weapon/hand_labeler/afterattack(atom/A, mob/user)
+/obj/item/weapon/hand_labeler/afterattack(atom/A, mob/user,proximity)
+ if(!proximity) return
if(!mode) //if it's off, give up.
return
if(A == loc) // if placing the labeller into something (e.g. backpack)
diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm
index d9aa009b1e3..3d90cd11dd0 100644
--- a/code/modules/paperwork/photocopier.dm
+++ b/code/modules/paperwork/photocopier.dm
@@ -20,8 +20,9 @@
var/obj/item/weapon/paper/copy = null //what's in the copier!
var/obj/item/weapon/photo/photocopy = null
var/copies = 1 //how many copies to print!
- var/toner = 30 //how much toner is left! woooooo~
+ var/toner = 40 //how much toner is left! woooooo~
var/maxcopies = 10 //how many copies can be copied at once- idea shamelessly stolen from bs12's copier!
+ var/greytoggle = "Greyscale"
/obj/machinery/photocopier/attack_ai(mob/user)
@@ -43,8 +44,12 @@
dat += "Printing: [copies] copies."
dat += "- "
dat += "+
"
+ if(photocopy)
+ dat += "Printing in [greytoggle]
"
else if(toner)
dat += "Please insert paper to copy.
"
+ if(istype(user,/mob/living/silicon/ai))
+ dat += "Print photo from database
"
dat += "Current toner level: [toner]"
if(!toner)
dat +="
Please insert a new toner cartridge!"
@@ -78,36 +83,52 @@
updateUsrDialog()
else if(photocopy)
for(var/i = 0, i < copies, i++)
- if(toner > 0)
+ if(toner >= 5) //Was set to = 0, but if there was say 3 toner left and this ran, you would get -2 which would be weird for ink
var/obj/item/weapon/photo/p = new /obj/item/weapon/photo (loc)
var/icon/I = icon(photocopy.icon, photocopy.icon_state)
var/icon/img = icon(photocopy.img)
- if(toner > 10) //plenty of toner, go straight greyscale
- I.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0)) //I'm not sure how expensive this is, but given the many limitations of photocopying, it shouldn't be an issue.
- img.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0))
- else //not much toner left, lighten the photo
- I.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(100,100,100))
- img.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(100,100,100))
+ if(greytoggle == "Greyscale")
+ if(toner > 10) //plenty of toner, go straight greyscale
+ I.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0)) //I'm not sure how expensive this is, but given the many limitations of photocopying, it shouldn't be an issue.
+ img.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0))
+ else //not much toner left, lighten the photo
+ I.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(100,100,100))
+ img.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(100,100,100))
+ toner -= 5 //photos use a lot of ink!
+ else if(greytoggle == "Color")
+ if(toner >= 10)
+ toner -= 10 //Color photos use even more ink!
+ else
+ continue
p.icon = I
p.img = img
p.name = photocopy.name
p.desc = photocopy.desc
p.scribble = photocopy.scribble
- toner -= 5 //photos use a lot of ink!
+ p.pixel_x = rand(-10, 10)
+ p.pixel_y = rand(-10, 10)
+ p.blueprints = photocopy.blueprints //a copy of a picture is still good enough for the syndicate
+
sleep(15)
else
break
updateUsrDialog()
else if(href_list["remove"])
if(copy)
- copy.loc = usr.loc
- usr.put_in_hands(copy)
+ if(!istype(usr,/mob/living/silicon/ai)) //surprised this check didn't exist before, putting stuff in AI's hand is bad
+ copy.loc = usr.loc
+ usr.put_in_hands(copy)
+ else
+ copy.loc = src.loc
usr << "You take [copy] out of [src]."
copy = null
updateUsrDialog()
else if(photocopy)
- photocopy.loc = usr.loc
- usr.put_in_hands(photocopy)
+ if(!istype(usr,/mob/living/silicon/ai)) //same with this one, wtf
+ photocopy.loc = usr.loc
+ usr.put_in_hands(photocopy)
+ else
+ photocopy.loc = src.loc
usr << "You take [photocopy] out of [src]."
photocopy = null
updateUsrDialog()
@@ -119,6 +140,38 @@
if(copies < maxcopies)
copies++
updateUsrDialog()
+ else if(href_list["aipic"])
+ if(!istype(usr,/mob/living/silicon/ai)) return
+ if(toner >= 5)
+ var/list/nametemp = list()
+ var/find
+ var/datum/picture/selection
+ var/mob/living/silicon/ai/tempAI = usr
+ for(var/datum/picture/t in tempAI.aicamera.aipictures)
+ nametemp += t.fields["name"]
+ find = input("Select picture (numbered in order taken)") in nametemp
+ var/obj/item/weapon/photo/p = new /obj/item/weapon/photo (loc)
+ for(var/datum/picture/q in tempAI.aicamera.aipictures)
+ if(q.fields["name"] == find)
+ selection = q
+ break
+ var/icon/I = selection.fields["icon"]
+ var/icon/img = selection.fields["img"]
+ p.icon = I
+ p.img = img
+ p.desc = selection.fields["desc"]
+ p.blueprints = selection.fields["blueprints"]
+ p.pixel_x = rand(-10, 10)
+ p.pixel_y = rand(-10, 10)
+ toner -= 5 //AI prints color pictures only, thus they can do it more efficiently
+ sleep(15)
+ updateUsrDialog()
+ else if(href_list["colortoggle"])
+ if(greytoggle == "Greyscale")
+ greytoggle = "Color"
+ else
+ greytoggle ="Greyscale"
+ updateUsrDialog()
/obj/machinery/photocopier/attackby(obj/item/O, mob/user)
if(istype(O, /obj/item/weapon/paper))
@@ -145,7 +198,7 @@
if(toner == 0)
user.drop_item()
del(O)
- toner = 30
+ toner = 40
user << "You insert [O] into [src]."
updateUsrDialog()
else
diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm
index c989ebddf2f..e0250840d55 100644
--- a/code/modules/paperwork/photography.dm
+++ b/code/modules/paperwork/photography.dm
@@ -99,13 +99,34 @@
icon_state = "camera"
item_state = "electropack"
w_class = 2.0
- flags = FPRINT | CONDUCT | USEDELAY | TABLEPASS
+ flags = FPRINT | CONDUCT | TABLEPASS
slot_flags = SLOT_BELT
m_amt = 2000
var/pictures_max = 10
var/pictures_left = 10
var/on = 1
var/blueprints = 0 //are blueprints visible in the current photo being created?
+ var/aipictures[] = list() //Allows for storage of pictures taken by AI, in a similar manner the datacore stores info
+
+
+/obj/item/device/camera/ai_camera //camera AI can take pictures with
+ name = "AI photo camera"
+
+ verb/picture()
+ set category ="AI Commands"
+ set name = "Take Picture"
+ set src in usr
+ var/mob/living/silicon/ai/my_ai = usr
+ var/target = get_turf(my_ai.eyeobj)
+
+ captureimage(target, usr)
+
+ verb/viewpicture()
+ set category ="AI Commands"
+ set name = "View Pictures"
+ set src in usr
+
+ viewpictures()
/obj/item/device/camera/attack(mob/living/carbon/human/M, mob/user)
@@ -125,7 +146,7 @@
..()
-/obj/item/device/camera/proc/get_icon(turf/the_turf)
+/obj/item/device/camera/proc/camera_get_icon(turf/the_turf, blueprints)
//Bigger icon base to capture those icons that were shifted to the next tile
//i.e. pretty much all wall-mounted machinery
var/icon/res = icon('icons/effects/96x96.dmi', "")
@@ -165,7 +186,7 @@
return res
-/obj/item/device/camera/proc/get_mobs(turf/the_turf)
+/obj/item/device/camera/proc/camera_get_mobs(turf/the_turf)
var/mob_detail
for(var/mob/living/carbon/A in the_turf)
if(A.invisibility) continue
@@ -185,9 +206,7 @@
return mob_detail
-/obj/item/device/camera/afterattack(atom/target, mob/user, flag)
- if(!on || !pictures_left || ismob(target.loc)) return
-
+/obj/item/device/camera/proc/captureimage(atom/target, mob/user, flag) //Proc for both regular and AI-based camera to take the image
var/x_c = target.x - 1
var/y_c = target.y + 1
var/z_c = target.z
@@ -203,12 +222,23 @@
for(var/j = 1; j <= 3; j++)
var/turf/T = locate(x_c, y_c, z_c)
if(T in seen)
- temp.Blend(get_icon(T), ICON_OVERLAY, 32 * (j-1-1), 32 - 32 * (i-1))
- mobs += get_mobs(T)
+ if(istype(user,/mob/living/silicon/ai))
+ if(0 == cameranet.checkTurfVis(T)) //Checks to see if this turf is visible to the AI's cameras
+ x_c++ //because continue would skip the x_c++ further down, and it is rather important to this proc to work right
+ continue
+ temp.Blend(camera_get_icon(T), ICON_OVERLAY, 32 * (j-1-1), 32 - 32 * (i-1))
+ mobs += camera_get_mobs(T)
x_c++
y_c--
x_c -= 3
+ if(!istype(usr,/mob/living/silicon/ai))
+ printpicture(user, temp, mobs, blueprints, flag)
+ else
+ aipicture(user, temp, mobs, blueprints)
+
+
+/obj/item/device/camera/proc/printpicture(mob/user, icon/temp, mobs, blueprints, flag) //Normal camera proc for creating photos
var/obj/item/weapon/photo/P = new/obj/item/weapon/photo()
user.put_in_hands(P)
var/icon/small_img = icon(temp)
@@ -225,6 +255,72 @@
P.blueprints = 1
blueprints = 0
+
+/obj/item/device/camera/proc/aipicture(mob/user, icon/temp, mobs, blueprints) //instead of printing a picture like a regular camera would, we do this instead for the AI
+
+ var/icon/small_img = icon(temp)
+ var/icon/ic = icon('icons/obj/items.dmi',"photo")
+ small_img.Scale(8, 8)
+ ic.Blend(small_img,ICON_OVERLAY, 10, 13)
+ var/icon = ic
+ var/img = temp
+ var/desc = mobs
+ var/pixel_x = rand(-10, 10)
+ var/pixel_y = rand(-10, 10)
+
+ if(blueprints)
+ blueprints = 1
+
+ injectaialbum(icon, img, desc, pixel_x, pixel_y, blueprints)
+
+
+/datum/picture
+ var/name = "picture"
+ var/list/fields = list()
+
+
+/obj/item/device/camera/proc/injectaialbum(var/icon, var/img, var/desc, var/pixel_x, var/pixel_y, var/blueprints) //stores image information to a list similar to that of the datacore
+ var/numberer = 1
+ for(var/datum/picture in src.aipictures)
+ numberer++
+ var/datum/picture/P = new()
+ P.fields["name"] = "Photo [numberer]"
+ P.fields["icon"] = icon
+ P.fields["img"] = img
+ P.fields["desc"] = desc
+ P.fields["pixel_x"] = pixel_x
+ P.fields["pixel_y"] = pixel_y
+ P.fields["blueprints"] = blueprints
+
+ aipictures += P
+
+
+/obj/item/device/camera/ai_camera/proc/viewpictures() //AI proc for viewing pictures they have taken
+ var/list/nametemp = list()
+ var/find
+ var/datum/picture/selection
+ for(var/datum/picture/t in src.aipictures)
+ nametemp += t.fields["name"]
+ find = input("Select picture (numbered in order taken)") in nametemp
+ var/obj/item/weapon/photo/P = new/obj/item/weapon/photo()
+ for(var/datum/picture/q in src.aipictures)
+ if(q.fields["name"] == find)
+ selection = q
+ break // just in case some AI decides to take 10 thousand pictures in a round
+ P.icon = selection.fields["icon"]
+ P.img = selection.fields["img"]
+ P.desc = selection.fields["desc"]
+ P.pixel_x = selection.fields["pixel_x"]
+ P.pixel_y = selection.fields["pixel_y"]
+
+ P.show(usr)
+ usr << P.desc
+ del P //so 10 thousdand pictures items are not left in memory should an AI take them and then view them all.
+
+/obj/item/device/camera/afterattack(atom/target, mob/user, flag)
+ if(!on || !pictures_left || ismob(target.loc)) return
+ captureimage(target, user, flag)
+
playsound(loc, pick('sound/items/polaroid1.ogg', 'sound/items/polaroid2.ogg'), 75, 1, -3)
pictures_left--
diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm
index 09ce2053a17..5f91e9df885 100644
--- a/code/modules/power/apc.dm
+++ b/code/modules/power/apc.dm
@@ -452,11 +452,6 @@
return
if(stat & (BROKEN|MAINT))
return
-
- if(ishuman(user))
- if(istype(user:gloves, /obj/item/clothing/gloves/space_ninja)&&user:gloves:candrain&&!user:gloves:draining)
- call(/obj/item/clothing/gloves/space_ninja/proc/drain)("APC",src,user:wear_suit)
- return
// do APC interaction
user.set_machine(src)
src.interact(user)
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index ac06014fa1b..36a11675bab 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -109,10 +109,7 @@
/obj/structure/cable/proc/get_powernet() //TODO: remove this as it is obsolete
return powernet
-/obj/structure/cable/attack_hand(mob/user)
- if(ishuman(user))
- if(istype(user:gloves, /obj/item/clothing/gloves/space_ninja)&&user:gloves:candrain&&!user:gloves:draining)
- call(/obj/item/clothing/gloves/space_ninja/proc/drain)("WIRE",src,user:wear_suit)
+/obj/structure/cable/attack_tk(mob/user)
return
/obj/structure/cable/attackby(obj/item/W, mob/user)
@@ -211,7 +208,7 @@
throw_range = 5
m_amt = 50
g_amt = 20
- flags = TABLEPASS | USEDELAY | FPRINT | CONDUCT
+ flags = TABLEPASS | FPRINT | CONDUCT
slot_flags = SLOT_BELT
attack_verb = list("whipped", "lashed", "disciplined", "flogged")
diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm
index 055e62d9ca0..0d64b68dc9c 100644
--- a/code/modules/power/cell.dm
+++ b/code/modules/power/cell.dm
@@ -63,8 +63,11 @@
/obj/item/weapon/cell/attack_self(mob/user as mob)
src.add_fingerprint(user)
if(ishuman(user))
- if(istype(user:gloves, /obj/item/clothing/gloves/space_ninja)&&user:gloves:candrain&&!user:gloves:draining)
- call(/obj/item/clothing/gloves/space_ninja/proc/drain)("CELL",src,user:wear_suit)
+ var/mob/living/carbon/human/H = user
+ var/obj/item/clothing/gloves/space_ninja/SNG = H.gloves
+ if(!istype(SNG) || !SNG.candrain || !SNG.draining) return
+
+ SNG.drain("CELL",src,H.wear_suit)
return
/obj/item/weapon/cell/attackby(obj/item/W, mob/user)
diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm
index d6e56d4ea47..1ad24c77dc5 100644
--- a/code/modules/power/lighting.dm
+++ b/code/modules/power/lighting.dm
@@ -491,6 +491,8 @@
if(prot > 0 || (COLD_RESISTANCE in user.mutations))
user << "You remove the light [fitting]"
+ else if(TK in user.mutations)
+ user << "You telekinetically remove the light [fitting]."
else
user << "You try to remove the light [fitting], but you burn your hand on it!"
@@ -500,7 +502,8 @@
H.update_damage_overlays(0)
H.updatehealth()
return // if burned, don't remove the light
-
+ else
+ user << "You remove the light [fitting]."
// create a light tube/bulb item and put it in the user's hand
var/obj/item/weapon/light/L = new light_type()
L.status = status
@@ -520,6 +523,29 @@
status = LIGHT_EMPTY
update()
+/obj/machinery/light/attack_tk(mob/user)
+ if(status == LIGHT_EMPTY)
+ user << "There is no [fitting] in this light."
+ return
+
+ user << "You telekinetically remove the light [fitting]."
+ // create a light tube/bulb item and put it in the user's hand
+ var/obj/item/weapon/light/L = new light_type()
+ L.status = status
+ L.rigged = rigged
+ L.brightness = brightness
+
+ // light item inherits the switchcount, then zero it
+ L.switchcount = switchcount
+ switchcount = 0
+
+ L.update()
+ L.add_fingerprint(user)
+ L.loc = loc
+
+ status = LIGHT_EMPTY
+ update()
+
// break the light and make sparks if was on
/obj/machinery/light/proc/broken(var/skip_sound_and_sparks = 0)
@@ -700,7 +726,8 @@
// shatter light, unless it was an attempt to put it in a light socket
// now only shatter if the intent was harm
-/obj/item/weapon/light/afterattack(atom/target, mob/user)
+/obj/item/weapon/light/afterattack(atom/target, mob/user,proximity)
+ if(!proximity) return
if(istype(target, /obj/machinery/light))
return
if(user.a_intent != "harm")
diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm
index cbb9ccb90d1..e5f08b47f1e 100644
--- a/code/modules/power/smes.dm
+++ b/code/modules/power/smes.dm
@@ -168,11 +168,6 @@
/obj/machinery/power/smes/attack_hand(mob/user)
add_fingerprint(user)
if(stat & BROKEN) return
-
- if(ishuman(user))
- if(istype(user:gloves, /obj/item/clothing/gloves/space_ninja)&&user:gloves:candrain&&!user:gloves:draining)
- call(/obj/item/clothing/gloves/space_ninja/proc/drain)("SMES",src,user:wear_suit)
- return
interact(user)
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index 6884fbde620..88e12b1affd 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -4,7 +4,7 @@
icon = 'icons/obj/gun.dmi'
icon_state = "detective"
item_state = "gun"
- flags = FPRINT | TABLEPASS | CONDUCT | USEDELAY
+ flags = FPRINT | TABLEPASS | CONDUCT
slot_flags = SLOT_BELT
m_amt = 2000
w_class = 3.0
@@ -41,7 +41,7 @@
afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, flag, params)//TODO: go over this
- if(flag) //we're placing gun on a table or in backpack
+ if(flag) //It's adjacent, is the user, or is on the user's person
return
//Exclude lasertag guns from the CLUMSY check.
diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm
index 20508c797be..89d5a02f585 100644
--- a/code/modules/projectiles/guns/energy/special.dm
+++ b/code/modules/projectiles/guns/energy/special.dm
@@ -5,7 +5,7 @@
fire_sound = 'sound/weapons/Laser.ogg'
origin_tech = "combat=2;magnets=4"
w_class = 5
- flags = FPRINT | TABLEPASS | CONDUCT | USEDELAY
+ flags = FPRINT | TABLEPASS | CONDUCT
slot_flags = SLOT_BACK
charge_cost = 100
projectile_type = "/obj/item/projectile/ion"
@@ -33,7 +33,7 @@ obj/item/weapon/gun/energy/staff
icon_state = "staffofchange"
item_state = "staffofchange"
fire_sound = 'sound/weapons/emitter.ogg'
- flags = FPRINT | TABLEPASS | CONDUCT | USEDELAY
+ flags = FPRINT | TABLEPASS | CONDUCT
slot_flags = SLOT_BACK
w_class = 5
charge_cost = 200
diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm
index 30c22961209..9435130db2f 100644
--- a/code/modules/projectiles/guns/projectile/shotgun.dm
+++ b/code/modules/projectiles/guns/projectile/shotgun.dm
@@ -6,7 +6,7 @@
max_shells = 4
w_class = 4.0
force = 10
- flags = FPRINT | TABLEPASS | CONDUCT | USEDELAY
+ flags = FPRINT | TABLEPASS | CONDUCT
slot_flags = SLOT_BACK
caliber = "shotgun"
origin_tech = "combat=4;materials=2"
@@ -68,7 +68,7 @@
max_shells = 2
w_class = 4.0
force = 10
- flags = FPRINT | TABLEPASS | CONDUCT | USEDELAY
+ flags = FPRINT | TABLEPASS | CONDUCT
slot_flags = SLOT_BACK
caliber = "shotgun"
origin_tech = "combat=3;materials=1"
diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm
index 7a159a76505..465b51d966a 100644
--- a/code/modules/reagents/reagent_containers/dropper.dm
+++ b/code/modules/reagents/reagent_containers/dropper.dm
@@ -8,7 +8,8 @@
volume = 5
var/filled = 0
- afterattack(obj/target, mob/user , flag)
+ afterattack(obj/target, mob/user , proximity)
+ if(!proximity) return
if(!target.reagents) return
if(filled)
diff --git a/code/modules/reagents/reagent_containers/food/condiment.dm b/code/modules/reagents/reagent_containers/food/condiment.dm
index d9f196375fb..06fd2b45319 100644
--- a/code/modules/reagents/reagent_containers/food/condiment.dm
+++ b/code/modules/reagents/reagent_containers/food/condiment.dm
@@ -62,7 +62,8 @@
return
- afterattack(obj/target, mob/user , flag)
+ afterattack(obj/target, mob/user , proximity)
+ if(!proximity) return
if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us.
if(!target.reagents.total_volume)
diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm
index 4accb30f147..f0e54d4a086 100644
--- a/code/modules/reagents/reagent_containers/food/drinks.dm
+++ b/code/modules/reagents/reagent_containers/food/drinks.dm
@@ -67,8 +67,8 @@
return 0
- afterattack(obj/target, mob/user , flag)
-
+ afterattack(obj/target, mob/user , proximity)
+ if(!proximity) return
if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us.
if(!target.reagents.total_volume)
@@ -380,4 +380,4 @@
..()
reagents.add_reagent("dr_gibb", 30)
src.pixel_x = rand(-10.0, 10)
- src.pixel_y = rand(-10.0, 10)
\ No newline at end of file
+ src.pixel_y = rand(-10.0, 10)
diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm
index 86bd4060083..725407813b7 100644
--- a/code/modules/reagents/reagent_containers/food/snacks.dm
+++ b/code/modules/reagents/reagent_containers/food/snacks.dm
@@ -100,7 +100,7 @@
return 0
-/obj/item/weapon/reagent_containers/food/snacks/afterattack(obj/target, mob/user , flag)
+/obj/item/weapon/reagent_containers/food/snacks/afterattack(obj/target, mob/user , proximity)
return
@@ -1323,7 +1323,8 @@
..()
reagents.add_reagent("nutriment",10)
- afterattack(obj/O, mob/user)
+ afterattack(obj/O, mob/user,proximity)
+ if(!proximity) return
if(istype(O,/obj/structure/sink) && !wrapped)
user << "You place [src] under a stream of water..."
user.drop_item()
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index faeb79687dd..e43e45f3a85 100644
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -40,7 +40,8 @@
for(var/datum/reagent/R in reagents.reagent_list)
usr << "[R.volume] units of [R.name]"
- afterattack(obj/target, mob/user , flag)
+ afterattack(obj/target, mob/user, proximity)
+ if(!proximity) return // not adjacent
for(var/type in can_be_placed_into)
if(istype(target, type))
return
diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm
index 1dcd171b764..79d1e40fbbf 100644
--- a/code/modules/reagents/reagent_containers/pill.dm
+++ b/code/modules/reagents/reagent_containers/pill.dm
@@ -60,7 +60,8 @@
return 0
- afterattack(obj/target, mob/user , flag)
+ afterattack(obj/target, mob/user , proximity)
+ if(!proximity) return
if(target.is_open_container() != 0 && target.reagents)
if(!target.reagents.total_volume)
user << "[target] is empty. There's nothing to dissolve [src] in."
diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm
index 63c07bd8970..c6eef991394 100644
--- a/code/modules/reagents/reagent_containers/spray.dm
+++ b/code/modules/reagents/reagent_containers/spray.dm
@@ -4,7 +4,7 @@
icon = 'icons/obj/janitor.dmi'
icon_state = "cleaner"
item_state = "cleaner"
- flags = TABLEPASS|OPENCONTAINER|FPRINT|USEDELAY
+ flags = TABLEPASS|OPENCONTAINER|FPRINT|NOBLUDGEON
slot_flags = SLOT_BELT
throwforce = 3
w_class = 2.0
@@ -236,11 +236,12 @@
reagents.add_reagent("plantbgone", 100)
-/obj/item/weapon/reagent_containers/spray/plantbgone/afterattack(atom/A as mob|obj, mob/user as mob)
- if (istype(A, /obj/machinery/hydroponics)) // We are targeting hydrotray
- return
+/obj/item/weapon/reagent_containers/spray/plantbgone/afterattack(atom/A as mob|obj, mob/user as mob, proximity)
+ if(proximity)
+ if (istype(A, /obj/machinery/hydroponics)) // We are targeting hydrotray
+ return
- if (istype(A, /obj/effect/blob)) // blob damage in blob code
- return
+ if (istype(A, /obj/effect/blob)) // blob damage in blob code
+ return
..()
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index 8d75e1aa21e..763d3c9b7b2 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -40,7 +40,8 @@
attackby(obj/item/I, mob/user)
return
- afterattack(obj/target, mob/user , flag)
+ afterattack(obj/target, mob/user , proximity)
+ if(!proximity) return
if(!target.reagents) return
switch(mode)
diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm
index e6f2d05b811..82c6ea1d023 100644
--- a/code/modules/recycling/disposal.dm
+++ b/code/modules/recycling/disposal.dm
@@ -446,7 +446,7 @@
/obj/machinery/disposal/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
if (istype(mover,/obj/item) && mover.throwing)
var/obj/item/I = mover
- if(istype(I, /obj/item/weapon/dummy) || istype(I, /obj/item/projectile))
+ if(istype(I, /obj/item/projectile))
return
if(prob(75))
I.loc = src
diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm
index 357d4032e90..c199516f103 100644
--- a/code/modules/recycling/sortingmachinery.dm
+++ b/code/modules/recycling/sortingmachinery.dm
@@ -93,15 +93,16 @@
name = "package wrapper"
icon = 'icons/obj/items.dmi'
icon_state = "deliveryPaper"
+ flags = FPRINT | NOBLUDGEON
w_class = 3.0
var/amount = 25.0
- afterattack(var/obj/target as obj, mob/user as mob)
+ afterattack(var/obj/target as obj, mob/user as mob, proximity)
+ if(!proximity) return
if(!istype(target)) //this really shouldn't be necessary (but it is). -Pete
return
- if(istype(target, /obj/structure/table) || istype(target, /obj/structure/rack) \
- || istype(target, /obj/item/smallDelivery) || istype(target,/obj/structure/bigDelivery) \
+ if(istype(target, /obj/item/smallDelivery) || istype(target,/obj/structure/bigDelivery) \
|| istype(target, /obj/item/weapon/evidencebag) || istype(target, /obj/structure/closet/body_bag))
return
if(target.anchored)
@@ -229,7 +230,7 @@
return
Bumped(var/atom/movable/AM) //Go straight into the chute
- if(istype(AM, /obj/item/projectile) || istype(AM, /obj/item/weapon/dummy)) return
+ if(istype(AM, /obj/item/projectile)) return
switch(dir)
if(NORTH)
if(AM.loc.y != loc.y+1) return
diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm
index 4da8960b080..1fd7235f7bb 100644
--- a/code/modules/research/rdconsole.dm
+++ b/code/modules/research/rdconsole.dm
@@ -545,11 +545,6 @@ won't update every console in existence) but it's more of a hassle to do. Also,
if(stat & (BROKEN|NOPOWER))
return
- if(ishuman(user))
- if(istype(user:gloves, /obj/item/clothing/gloves/space_ninja)&&user:gloves:candrain&&!user:gloves:draining)
- call(/obj/item/clothing/gloves/space_ninja/proc/drain)("RESEARCH",src,user:wear_suit)
- return
-
user.set_machine(src)
var/dat = ""
files.RefreshResearch()
diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm
index 3e458226f1a..b56dcf8022d 100644
--- a/code/modules/research/server.dm
+++ b/code/modules/research/server.dm
@@ -154,19 +154,13 @@
del(src)
return 1
-/obj/machinery/r_n_d/server/attack_hand(mob/user as mob)
+/obj/machinery/r_n_d/server/attack_hand(mob/user as mob) // I guess only exists to stop ninjas or hell does it even work I dunno. See also ninja gloves.
if (disabled)
return
if (shocked)
shock(user,50)
- if(ishuman(user))
- if(istype(user:gloves, /obj/item/clothing/gloves/space_ninja)&&user:gloves:candrain&&!user:gloves:draining)
- call(/obj/item/clothing/gloves/space_ninja/proc/drain)("RESEARCH",src,user:wear_suit)
return
-
-
-
/obj/machinery/r_n_d/server/centcom
name = "Centcom Central R&D Database"
server_id = -1
diff --git a/html/changelog.html b/html/changelog.html
index a9a06e9cbac..e146fa3497f 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -51,7 +51,23 @@ should be listed in the changelog upon commit tho. Thanks. -->
-
+
+
+
+
+
17 September 2013
+
SuperSayu updated:
+
+ - You can no longer strip people through windows and windoors
+ - You can open doors by hand even if there is a firedoor in the way, making firedoor+airlock no longer an unbeatable combination
+ - Ghosts can now click on anything to examine it, or double click to jump to a turf. Double clicking a mob, bot, or (heaven forbid) singularity/Nar-Sie will let you follow it. Double clicking your own corpse re-enters it.
+ - AI can double click a mob to follow it, as well as double clicking turfs to jump.
+ - Ventcrawling mobs can alt-click a vent to start ventcrawling.
+ - Telekinesis is now part of the click system. You can click on buttons, items, etc, without having a telekinetic throw in hand; the throw will appear when you click on something you can move (with your mind).
+
+
+
+
13 September 2013
JJRcop updated:
@@ -88,6 +104,15 @@ should be listed in the changelog upon commit tho. Thanks. -->
+
+
12 September 2013
+
AndroidSFV updated:
+
+ - AI Photography: AIs now have two new verbs, Take Picture and View Picture. The pictures the AI takes are centered on the AI's eyeobj. You can use these pictures on a newscaster, and print them at a photocopier.
+
+
+
+
31 August 2013
Cael_Aislinn updated:
diff --git a/maps/MetaStation.v36B.dmm b/maps/MetaStation.v36C.dmm
similarity index 99%
rename from maps/MetaStation.v36B.dmm
rename to maps/MetaStation.v36C.dmm
index 07d91315853..43aa0f65387 100644
--- a/maps/MetaStation.v36B.dmm
+++ b/maps/MetaStation.v36C.dmm
@@ -1089,11 +1089,11 @@
"auW" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/window/northright{name = "Secure Atrium"; pixel_y = 1; req_access_txt = "1"},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/main)
"auX" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/door/window/northleft{name = "Secure Atrium"; pixel_y = 1; req_access_txt = "1"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main)
"auY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/security/main)
-"auZ" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/effect/landmark{name = "tripai"},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = 0; pixel_y = 20},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 0; pixel_y = -26},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 1; freerange = 0; listening = 1; name = "Common Channel"; pixel_x = -25; pixel_y = -4},/obj/machinery/door/window{dir = 4; name = "Tertiary AI Core Access"; pixel_x = 2; req_access_txt = "16"},/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Tertiary AI Base"},/area/turret_protected/ai)
+"auZ" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/effect/landmark{name = "tripai"},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = 0; pixel_y = 20},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 0; pixel_y = -26},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 1; freerange = 0; listening = 1; name = "Common Channel"; pixel_x = -25; pixel_y = -4},/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Tertiary AI Base"},/area/turret_protected/ai)
"ava" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai)
"avb" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/crew_quarters)
"avc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/turret_protected/ai)
-"avd" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/ai_slipper{icon_state = "motion0"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai)
+"avd" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/ai_slipper{icon_state = "motion0"},/obj/machinery/door/window{dir = 8; icon_state = "left"; name = "Tertiary AI Core Access"; pixel_x = 0; req_access_txt = "16"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai)
"ave" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area)
"avf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/fore)
"avg" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=0-SecurityHall"; location = "16-Court"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/fore)
@@ -1102,7 +1102,7 @@
"avj" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom)
"avk" = (/obj/structure/table,/obj/item/weapon/book/manual/security_space_law,/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/brig)
"avl" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom)
-"avm" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/effect/landmark{name = "tripai"},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = 0; pixel_y = 19},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 0; pixel_y = -26},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 1; freerange = 1; listening = 1; name = "Common Channel"; pixel_x = 27; pixel_y = -3},/obj/machinery/door/window{dir = 8; name = "Secondary AI Core Access"; pixel_x = -2; req_access_txt = "16"},/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Secondary AI Base"},/area/turret_protected/ai)
+"avm" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/effect/landmark{name = "tripai"},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = 0; pixel_y = 19},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 0; pixel_y = -26},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 1; freerange = 1; listening = 1; name = "Common Channel"; pixel_x = 27; pixel_y = -3},/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Secondary AI Base"},/area/turret_protected/ai)
"avn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom)
"avo" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom)
"avp" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom)
@@ -1147,10 +1147,10 @@
"awc" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/main)
"awd" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/machinery/power/apc{dir = 8; name = "Primary Tool Storage APC"; pixel_x = -26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/storage/primary)
"awe" = (/turf/simulated/floor/bluegrid,/area/turret_protected/ai)
-"awf" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/ai_slipper{icon_state = "motion0"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai)
+"awf" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/ai_slipper{icon_state = "motion0"},/obj/machinery/door/window{dir = 4; name = "Secondary AI Core Access"; pixel_x = 0; req_access_txt = "16"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai)
"awg" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai)
"awh" = (/obj/structure/table,/obj/machinery/camera/autoname{c_tag = "Engineering SMES Room"; dir = 8; network = list("SS13")},/obj/item/toy/prize/seraph{pixel_y = 10},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai)
-"awi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/flasher{id = "AI"; pixel_x = -24; pixel_y = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/ai)
+"awi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/flasher{id = "AI"; pixel_x = -24; pixel_y = 8},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/ai)
"awj" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/wall/r_wall,/area/turret_protected/ai)
"awk" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai)
"awl" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/wall/r_wall,/area/turret_protected/ai)
@@ -1158,7 +1158,7 @@
"awn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/fore)
"awo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/fore)
"awp" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters)
-"awq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/bluegrid,/area/turret_protected/ai)
+"awq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor/bluegrid,/area/turret_protected/ai)
"awr" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/closet/emcloset,/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/courtroom)
"aws" = (/obj/machinery/door/airlock/maintenance{name = "Brig Maintenance"; req_access_txt = "63"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore)
"awt" = (/obj/structure/closet/secure_closet/warden,/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden)
@@ -1485,7 +1485,7 @@
"aCC" = (/obj/machinery/door/airlock/maintenance{name = "Supply Maintenance"; req_access_txt = "50"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"aCD" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"aCE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/table,/obj/item/weapon/book/manual/security_space_law,/obj/item/weapon/handcuffs,/turf/simulated/floor{dir = 4; icon_state = "redcorner"},/area/bridge)
-"aCF" = (/obj/structure/rack,/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/obj/item/clothing/gloves/orange,/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor)
+"aCF" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "yellowcorner"},/area/hallway/primary/starboard)
"aCG" = (/obj/machinery/light/small{dir = 4},/obj/structure/rack,/obj/item/weapon/crowbar,/obj/item/weapon/wrench,/obj/item/weapon/weldingtool,/turf/simulated/floor/plating,/area/maintenance/fore)
"aCH" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/fore)
"aCI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central)
@@ -1511,7 +1511,7 @@
"aDc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/crew_quarters)
"aDd" = (/obj/machinery/computer/crew,/turf/simulated/floor{dir = 1; icon_state = "green"},/area/bridge)
"aDe" = (/obj/structure/table,/obj/machinery/recharger,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 29; pixel_y = 22},/obj/machinery/newscaster/security_unit{pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden)
-"aDf" = (/obj/machinery/power/apc{dir = 4; name = "Custodial Closet APC"; pixel_x = 24},/obj/item/weapon/storage/box/mousetraps,/obj/item/weapon/storage/box/mousetraps,/obj/structure/table,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor)
+"aDf" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/hallway/primary/starboard)
"aDg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/crew_quarters)
"aDh" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/crew_quarters)
"aDi" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/fore)
@@ -1561,7 +1561,7 @@
"aEa" = (/obj/machinery/power/apc{cell_type = 5000; dir = 4; name = "Armory APC"; pixel_x = 24; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/security/warden)
"aEb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/security/warden)
"aEc" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/weapon/cigbutt,/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor)
-"aEd" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor)
+"aEd" = (/obj/effect/landmark{name = "JoinLate"},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station)
"aEe" = (/obj/machinery/vending/cola,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/fore)
"aEf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/fore)
"aEg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/turret_protected/ai)
@@ -1569,8 +1569,8 @@
"aEi" = (/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/bluegrid,/area/turret_protected/ai)
"aEj" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai)
"aEk" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/bluegrid,/area/turret_protected/ai)
-"aEl" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/flasher{id = "AI"; pixel_x = 24; pixel_y = -8},/turf/simulated/floor/bluegrid,/area/turret_protected/ai)
-"aEm" = (/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 28; pixel_y = 5},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = -27; pixel_y = 4},/obj/machinery/turretid{name = "AI Chamber turret control"; pixel_x = 24; pixel_y = -7},/obj/effect/landmark/start{name = "AI"},/obj/item/device/radio/intercom{broadcasting = 1; freerange = 1; listening = 1; name = "Common Channel"; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/door/window{name = "Primary AI Core Access"; pixel_y = -2; req_access_txt = "16"},/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Primary AI Base"},/area/turret_protected/ai)
+"aEl" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor)
+"aEm" = (/obj/machinery/power/apc{dir = 4; name = "Custodial Closet APC"; pixel_x = 24},/obj/structure/table,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/light/small{dir = 4},/obj/item/clothing/gloves/orange,/obj/item/weapon/storage/box/mousetraps,/obj/item/weapon/storage/box/mousetraps,/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor)
"aEn" = (/obj/machinery/vending/cigarette,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/fore)
"aEo" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom)
"aEp" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/spray/plantbgone,/obj/item/pestkiller{pixel_x = 3; pixel_y = 4},/obj/item/nutrient/ez,/obj/item/nutrient/rh{pixel_x = 2; pixel_y = 1},/turf/simulated/floor{icon_state = "bot"},/area/hallway/secondary/construction{name = "\improper Garden"})
@@ -1591,7 +1591,7 @@
"aEE" = (/obj/machinery/computer/med_data,/turf/simulated/floor{dir = 1; icon_state = "green"},/area/bridge)
"aEF" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/hallway/primary/central)
"aEG" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central)
-"aEH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor)
+"aEH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/effect/landmark/start{name = "Janitor"},/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor)
"aEI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/janitor)
"aEJ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor)
"aEK" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor{dir = 5; icon_state = "yellow"},/area/hallway/primary/starboard)
@@ -1622,12 +1622,12 @@
"aFj" = (/obj/structure/disposalpipe/segment,/obj/effect/landmark/start{name = "Cargo Technician"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"})
"aFk" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"})
"aFl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor)
-"aFm" = (/obj/item/weapon/legcuffs/beartrap,/obj/item/weapon/legcuffs/beartrap,/obj/structure/table,/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/requests_console{department = "Janitorial"; departmentType = 1; pixel_x = 29; pixel_y = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor)
+"aFm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor)
"aFn" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"})
"aFo" = (/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "floorgrime"},/area/prison/solitary{name = "Auxiliary Bathrooms"})
"aFp" = (/obj/structure/disposalpipe/sortjunction{dir = 2; icon_state = "pipe-j1s"; sortType = 2},/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"})
"aFq" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai)
-"aFr" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/power/apc{aidisabled = 0; dir = 1; name = "AI Chamber APC"; pixel_y = 24},/obj/machinery/light/small{dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{tag = "icon-vault (SOUTHEAST)"; icon_state = "vault"; dir = 6},/area/turret_protected/ai)
+"aFr" = (/obj/item/weapon/legcuffs/beartrap,/obj/item/weapon/legcuffs/beartrap,/obj/structure/table,/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/requests_console{department = "Janitorial"; departmentType = 1; pixel_x = 29; pixel_y = 0},/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor)
"aFs" = (/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload)
"aFt" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/fore)
"aFu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/hallway/secondary/construction{name = "\improper Garden"})
@@ -1707,7 +1707,7 @@
"aGQ" = (/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/office{name = "\improper Supply Offices"})
"aGR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"})
"aGS" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "Janitor"},/obj/structure/plasticflaps{opacity = 1},/turf/simulated/floor{icon_state = "bot"},/area/hallway/primary/central)
-"aGT" = (/obj/machinery/hologram/holopad,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/door/window{name = "Primary AI Core Access"; pixel_y = -2; req_access_txt = "16"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/turret_protected/ai)
+"aGT" = (/turf/simulated/floor/plating,/area/hallway/primary/central)
"aGU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload)
"aGV" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor{icon_state = "dark"},/area/security/checkpoint2{name = "Customs"})
"aGW" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/turret_protected/ai_upload)
@@ -1721,9 +1721,9 @@
"aHe" = (/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/secondary/construction{name = "\improper Garden"})
"aHf" = (/obj/structure/stool/bed/chair{dir = 8},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 30},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"})
"aHg" = (/turf/simulated/wall,/area/quartermaster/office{name = "\improper Supply Offices"})
-"aHh" = (/obj/machinery/door/window/westleft{dir = 1; name = "Janitoral Delivery"; req_access_txt = "26"},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "delivery"},/area/janitor)
-"aHi" = (/obj/item/weapon/mop,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor,/area/janitor)
-"aHj" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/structure/janitorialcart,/obj/machinery/light/small,/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor)
+"aHh" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor)
+"aHi" = (/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/hallway/primary/central)
+"aHj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central)
"aHk" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor)
"aHl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central)
"aHm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 4; icon_state = "yellowcorner"},/area/hallway/primary/central)
@@ -1773,7 +1773,7 @@
"aIe" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/quartermaster/storage)
"aIf" = (/obj/machinery/autolathe,/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 6; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"})
"aIg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/quartermaster/storage)
-"aIh" = (/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/hallway/primary/central)
+"aIh" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/hallway/primary/central)
"aIi" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor)
"aIj" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/bridge)
"aIk" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/machinery/door/window/southleft{dir = 1; name = "Engineering Desk"; req_access_txt = "32"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 4; icon_state = "yellowfull"; tag = "icon-whitehall (WEST)"},/area/engine/break_room)
@@ -1849,7 +1849,7 @@
"aJC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j1s"; sortType = 3},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/hallway/primary/port)
"aJD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/turret_protected/ai_upload)
"aJE" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/weapon/aiModule/asimov,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload)
-"aJF" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/flasher{pixel_x = 0; pixel_y = 24; id = "AI"},/obj/machinery/light/small{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{tag = "icon-vault (SOUTHWEST)"; icon_state = "vault"; dir = 10},/area/turret_protected/ai)
+"aJF" = (/obj/machinery/door/airlock{name = "Central Emergency Storage"; req_access_txt = "0"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/hallway/primary/central)
"aJG" = (/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload)
"aJH" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload)
"aJI" = (/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/turf/simulated/floor/bluegrid,/area/turret_protected/ai)
@@ -1981,7 +1981,7 @@
"aMe" = (/obj/structure/closet/jcloset,/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor)
"aMf" = (/obj/structure/closet/l3closet/janitor,/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor)
"aMg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/engine/break_room)
-"aMh" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/hallway/primary/central)
+"aMh" = (/obj/machinery/door_control{id = "hop"; name = "Privacy Shutters Control"; pixel_x = -25; pixel_y = -8; req_access_txt = "28"},/obj/machinery/pdapainter,/turf/simulated/floor/wood,/area/crew_quarters/heads)
"aMi" = (/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j2"; tag = "icon-pipe-j1 (WEST)"},/turf/simulated/floor,/area/crew_quarters/locker)
"aMj" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;27;37"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"aMk" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/hallway/primary/central)
@@ -2019,7 +2019,7 @@
"aMQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 5; icon_state = "neutral"},/area/hallway/secondary/entry{name = "Arrivals"})
"aMR" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{name = "Quartermaster"; req_access_txt = "41"},/turf/simulated/floor,/area/quartermaster/qm)
"aMS" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j1"; tag = "icon-pipe-j1 (EAST)"},/turf/simulated/floor,/area/hallway/primary/central)
-"aMT" = (/obj/machinery/door/airlock{name = "Central Emergency Storage"; req_access_txt = "0"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/hallway/primary/central)
+"aMT" = (/obj/structure/filingcabinet/chestdrawer,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/heads)
"aMU" = (/obj/machinery/light/small{dir = 8},/obj/machinery/newscaster{pixel_x = -32; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/prison/solitary{name = "Auxiliary Bathrooms"})
"aMV" = (/obj/structure/stool/bed/chair/office/dark,/obj/effect/landmark/start{name = "Head of Personnel"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light_switch{pixel_x = 28; pixel_y = 0},/turf/simulated/floor/wood,/area/crew_quarters/heads)
"aMW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
@@ -2118,8 +2118,8 @@
"aOL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/quartermaster/office{name = "\improper Supply Offices"})
"aOM" = (/obj/machinery/conveyor{dir = 4; id = "packageSort2"},/obj/structure/plasticflaps{opacity = 0},/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Supply Offices"})
"aON" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/pen,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/heads)
-"aOO" = (/obj/machinery/door_control{id = "hop"; name = "Privacy Shutters Control"; pixel_x = 0; pixel_y = -25; req_access_txt = "28"},/obj/machinery/pdapainter,/obj/machinery/light_switch{pixel_x = 28; pixel_y = 0},/turf/simulated/floor/wood,/area/crew_quarters/heads)
-"aOP" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = 30; pixel_y = 0},/obj/structure/filingcabinet/chestdrawer,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/heads)
+"aOO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/heads)
+"aOP" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/item/device/radio/intercom{dir = 2; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -28},/obj/machinery/hologram/holopad,/turf/simulated/floor/carpet,/area/crew_quarters/heads)
"aOQ" = (/obj/structure/closet/wardrobe/white,/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/locker)
"aOR" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fore)
"aOS" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/window{dir = 1; name = "HoP's Desk"; pixel_y = 0; req_access_txt = "57"},/turf/simulated/floor/wood,/area/crew_quarters/heads)
@@ -2176,7 +2176,7 @@
"aPR" = (/obj/machinery/computer/communications,/obj/item/device/radio/intercom{dir = 8; freerange = 1; name = "Station Intercom (Captain)"; pixel_x = 28},/obj/machinery/ai_status_display{pixel_y = 32},/obj/machinery/keycard_auth{pixel_x = 24; pixel_y = 24},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"aPS" = (/obj/machinery/power/apc{cell_type = 10000; dir = 1; name = "Central Hall APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/primary/central)
"aPT" = (/obj/structure/table,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/bridge)
-"aPU" = (/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload_foyer)
+"aPU" = (/obj/machinery/camera{c_tag = "Atmospherics Tank - Mix"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/maintenance/storage)
"aPV" = (/obj/machinery/power/apc{dir = 1; name = "AI Upload Access APC"; pixel_x = 0; pixel_y = 27},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload_foyer)
"aPW" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/turretid{control_area = "\improper AI Upload Chamber"; name = "AI Upload turret control"; pixel_x = 8; pixel_y = 24},/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1447; name = "Private AI Channel"; pixel_x = -8; pixel_y = 22},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload_foyer)
"aPX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload_foyer)
@@ -2196,7 +2196,7 @@
"aQl" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/hallway/primary/central)
"aQm" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/starboard)
"aQn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/airlock/security{name = "Customs Desk"; req_access = null; req_access_txt = "1"},/turf/simulated/floor,/area/security/checkpoint2{name = "Customs"})
-"aQo" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/heads)
+"aQo" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "delivery"},/area/bridge/meeting_room{name = "\improper Command Corridors"})
"aQp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"})
"aQq" = (/obj/effect/landmark/start{name = "Cargo Technician"},/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/office{name = "\improper Supply Offices"})
"aQr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/crew_quarters/fitness)
@@ -2316,7 +2316,7 @@
"aSB" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/obj/item/clothing/gloves/yellow,/obj/item/device/t_scanner,/obj/item/device/multitool,/turf/simulated/floor/plating,/area/storage/tech)
"aSC" = (/obj/structure/table,/obj/structure/closet/fireaxecabinet{pixel_y = -32},/obj/machinery/light_switch{pixel_x = 28; pixel_y = 0},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/bridge)
"aSD" = (/turf/simulated/wall,/area/turret_protected/ai_upload_foyer)
-"aSE" = (/obj/machinery/computer/station_alert,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/turret_protected/ai_upload_foyer)
+"aSE" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "bot"},/area/bridge/meeting_room{name = "\improper Command Corridors"})
"aSF" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_locked"; locked = 1; name = "AI Upload"; req_access_txt = "16"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload)
"aSG" = (/obj/machinery/light_switch{pixel_x = 27},/obj/structure/reagent_dispensers/peppertank{pixel_x = 0; pixel_y = 30},/obj/structure/closet/secure_closet/security,/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/checkpoint2{name = "Customs"})
"aSH" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"})
@@ -2365,7 +2365,7 @@
"aTy" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"})
"aTz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor{icon_state = "arrival"; dir = 5},/area/hallway/secondary/entry{name = "Arrivals"})
"aTA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/effect/landmark/start{name = "Cargo Technician"},/turf/simulated/floor,/area/quartermaster/storage)
-"aTB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/carpet,/area/crew_quarters/heads)
+"aTB" = (/obj/machinery/door_control{id = "council blast"; name = "Council Chamber Blast Door Control"; pixel_x = -1; pixel_y = -24; req_access_txt = "19"},/turf/simulated/floor/carpet,/area/bridge)
"aTC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/wood,/area/crew_quarters/theatre)
"aTD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Security Office"; req_access_txt = "63"},/turf/simulated/floor,/area/security/checkpoint/supply)
"aTE" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/supply)
@@ -2422,7 +2422,7 @@
"aUD" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"aUE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/wall/r_wall,/area/engine/engineering)
"aUF" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central)
-"aUG" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = 32; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "delivery"},/area/bridge/meeting_room{name = "\improper Command Corridors"})
+"aUG" = (/obj/structure/table/reinforced,/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 1; icon_state = "rightsecure"; name = "Head of Personnel's Desk"; req_access_txt = "57"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/window/northleft{dir = 2; icon_state = "left"; name = "Reception Window"; req_access_txt = "0"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "hop"; layer = 2.9; name = "Privacy Door"; opacity = 0},/turf/simulated/floor,/area/crew_quarters/heads)
"aUH" = (/turf/simulated/floor{icon_state = "bot"},/area/bridge/meeting_room{name = "\improper Command Corridors"})
"aUI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"})
"aUJ" = (/obj/machinery/door/window/westleft{dir = 2; name = "Research Division Deliveries"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "delivery"},/area/maintenance/aft{name = "Aft Maintenance"})
@@ -2476,7 +2476,7 @@
"aVF" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central)
"aVG" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central)
"aVH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central)
-"aVI" = (/obj/structure/table/reinforced,/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 1; icon_state = "rightsecure"; name = "Head of Personnel's Desk"; req_access_txt = "57"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/window/northleft{dir = 2; icon_state = "left"; name = "Reception Window"; req_access_txt = "0"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "hop"; layer = 3.12; name = "Privacy Door"; opacity = 0},/turf/simulated/floor,/area/crew_quarters/heads)
+"aVI" = (/turf/simulated/wall/r_wall,/area/janitor)
"aVJ" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/obj/machinery/door_control{id = "hop"; name = "Privacy Shutters Control"; pixel_x = 0; pixel_y = -25; req_access_txt = "28"},/turf/simulated/floor/wood,/area/crew_quarters/heads)
"aVK" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/vending/cigarette,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar)
"aVL" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central)
@@ -2528,8 +2528,8 @@
"aWF" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central)
"aWG" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central)
"aWH" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central)
-"aWI" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/wood,/area/crew_quarters/heads)
-"aWJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central)
+"aWI" = (/obj/structure/janitorialcart,/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor)
+"aWJ" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor)
"aWK" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/central)
"aWL" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/hallway/primary/central)
"aWM" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "L2"},/area/hallway/primary/central)
@@ -2591,7 +2591,7 @@
"aXQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"})
"aXR" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"aXS" = (/obj/structure/table/woodentable,/obj/item/weapon/hand_labeler,/obj/item/weapon/packageWrap,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/heads)
-"aXT" = (/obj/structure/closet/secure_closet/hop,/turf/simulated/floor/wood,/area/crew_quarters/heads)
+"aXT" = (/obj/item/weapon/mop,/obj/item/weapon/reagent_containers/glass/bucket,/obj/machinery/light/small,/turf/simulated/floor,/area/janitor)
"aXU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/firealarm{pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port)
"aXV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"})
"aXW" = (/obj/machinery/computer/ordercomp,/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = "Prison"; pixel_x = 0; pixel_y = 30},/turf/simulated/floor/wood,/area/crew_quarters/heads)
@@ -2764,17 +2764,17 @@
"bbh" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/construction/Storage{name = "Storage Wing"})
"bbi" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/construction/Storage{name = "Storage Wing"})
"bbj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/construction/Storage{name = "Storage Wing"})
-"bbk" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet,/area/crew_quarters/heads)
-"bbl" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/mob/living/simple_animal/corgi/Ian,/turf/simulated/floor/carpet,/area/crew_quarters/heads)
+"bbk" = (/obj/machinery/door/window/westleft{dir = 8; name = "Janitoral Delivery"; req_access_txt = "26"},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{icon_state = "delivery"},/area/janitor)
+"bbl" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/hallway/primary/central)
"bbm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"})
"bbn" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"})
"bbo" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/sortjunction{dir = 1; icon_state = "pipe-j1s"; sortType = 15},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/hallway/primary/central)
-"bbp" = (/obj/machinery/light_switch{pixel_x = -25; pixel_y = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door_control{id = "hop"; name = "Privacy Shutters Control"; pixel_x = -24; pixel_y = -6; req_access_txt = "28"},/turf/simulated/floor/carpet,/area/crew_quarters/heads)
+"bbp" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/carpet,/area/crew_quarters/heads)
"bbq" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/hallway/primary/central)
"bbr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"})
"bbs" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central)
"bbt" = (/obj/item/weapon/cigbutt,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
-"bbu" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor/carpet,/area/crew_quarters/heads)
+"bbu" = (/obj/machinery/door_control{id = "hop"; name = "Privacy Shutters Control"; pixel_x = -24; pixel_y = -6; req_access_txt = "28"},/obj/machinery/light_switch{pixel_x = -25; pixel_y = 5},/turf/simulated/floor/carpet,/area/crew_quarters/heads)
"bbv" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/carpet,/area/crew_quarters/heads)
"bbw" = (/obj/structure/table/woodentable,/obj/structure/mirror{pixel_x = -28},/obj/item/weapon/lipstick/black,/obj/item/weapon/lipstick/jade{pixel_x = 2; pixel_y = 2},/obj/item/weapon/lipstick/purple{pixel_x = -2; pixel_y = -2},/turf/simulated/floor/wood,/area/crew_quarters/theatre)
"bbx" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/space,/area)
@@ -2833,7 +2833,7 @@
"bcy" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/checkpoint2{name = "Customs"})
"bcz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint2{name = "Customs"})
"bcA" = (/obj/machinery/door/airlock/maintenance{name = "Security Maintenance"; req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/security/checkpoint2{name = "Customs"})
-"bcB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{desc = "\"This is a plaque in honour of our comrades on the G-4407 and TG-212 Stations. Hopefully the MS-36B model can live up to your fame and fortune.\" Scratched beneath is a crude image of postcards yelling at each other in a corrupted world."; icon_state = "plaque"; name = "Commemorative Plaque"},/area/hallway/primary/port)
+"bcB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{desc = "\"This is a plaque in honour of our comrades on the G-4407 and TG-212 Stations. Hopefully the MS-36C model can live up to your fame and fortune.\" Scratched beneath is a crude image of postcards yelling at each other in a world of darkness."; icon_state = "plaque"; name = "Commemorative Plaque"},/area/hallway/primary/port)
"bcC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "neutral"; dir = 9},/area/hallway/primary/port)
"bcD" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"})
"bcE" = (/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"})
@@ -2860,7 +2860,7 @@
"bcZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/hallway/primary/port)
"bda" = (/obj/structure/closet/firecloset,/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/turf/simulated/floor{dir = 9; icon_state = "neutral"},/area/hallway/primary/central)
"bdb" = (/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "Head of Personnel APC"; pixel_y = 24},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/machinery/light{dir = 1},/turf/simulated/floor/carpet,/area/crew_quarters/heads)
-"bdc" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central)
+"bdc" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central)
"bdd" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/hallway/primary/fore)
"bde" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/bridge)
"bdf" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/bridge)
@@ -2895,7 +2895,7 @@
"bdI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engine/engineering)
"bdJ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 1; icon_state = "browncorner"},/area/hallway/primary/fore)
"bdK" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_engineering{name = "Engineering Foyer"; req_access_txt = "32"},/turf/simulated/floor,/area/engine/break_room)
-"bdL" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/carpet,/area/crew_quarters/heads)
+"bdL" = (/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/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_Toxins = 0},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/hallway/primary/central)
"bdM" = (/turf/simulated/wall,/area/construction/Storage{name = "Storage Wing"})
"bdN" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/obj/item/weapon/folder/yellow,/turf/simulated/floor,/area/engine/break_room)
"bdO" = (/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon{codes_txt = "delivery;dir=2"; freq = 1400; location = "Research Division"},/turf/simulated/floor{icon_state = "bot"},/area/maintenance/aft{name = "Aft Maintenance"})
@@ -2918,7 +2918,7 @@
"bef" = (/obj/structure/stool/bed/chair{dir = 8},/obj/effect/landmark{name = "JoinLate"},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station)
"beg" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (EAST)"; icon_state = "heater"; dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/shuttle/arrival/station)
"beh" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion (WEST)"; icon_state = "propulsion"; dir = 8},/turf/space,/area/shuttle/arrival/station)
-"bei" = (/obj/machinery/atmospherics/pipe/simple{color = "yellow"; dir = 4; icon_state = "intact-y"; initialize_directions = 12; level = 1},/obj/machinery/atmospherics/pipe/simple{color = "cyan"; icon_state = "intact-c"},/obj/machinery/atmospherics/pipe/simple{color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/storage)
+"bei" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/heads)
"bej" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"})
"bek" = (/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint2{name = "Customs"})
"bel" = (/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint2{name = "Customs"})
@@ -2956,7 +2956,7 @@
"beR" = (/obj/machinery/light,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/rack,/obj/item/weapon/storage/lockbox,/obj/item/clothing/mask/cigarette/cigar,/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/bridge)
"beS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/weapon/screwdriver{pixel_y = 10},/obj/machinery/door_control{desc = "A remote control-switch for the engineering security doors."; id = "Engineering"; name = "Engineering Lockdown"; pixel_x = -24; pixel_y = -6; req_access_txt = "10"},/obj/item/device/radio/off,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light_switch{pixel_x = -27; pixel_y = 6},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/engineering)
"beT" = (/obj/structure/stool/bed/chair{dir = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor{icon_state = "neutral"},/area/crew_quarters/courtroom)
-"beU" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/carpet,/area/crew_quarters/heads)
+"beU" = (/obj/structure/grille,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "hop"; name = "Privacy Shutters"; opacity = 0},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/crew_quarters/heads)
"beV" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/bridge)
"beW" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "hop"; name = "Privacy Shutters"; opacity = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/crew_quarters/heads)
"beX" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "hop"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/crew_quarters/heads)
@@ -3515,7 +3515,7 @@
"bpE" = (/obj/machinery/atmospherics/pipe/manifold{color = "green"; dir = 1; icon_state = "manifold-g"; level = 2; tag = "icon-manifold-g (NORTH)"},/turf/simulated/floor,/area/maintenance/storage)
"bpF" = (/obj/machinery/atmospherics/pipe/manifold{tag = "icon-manifold-g (EAST)"; icon_state = "manifold-g"; dir = 4; level = 2; color = "green"},/turf/simulated/floor,/area/maintenance/storage)
"bpG" = (/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")},/turf/simulated/floor{icon_state = "green"; dir = 4},/area/maintenance/storage)
-"bpH" = (/obj/structure/grille,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "hop"; name = "Privacy Shutters"; opacity = 0},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/heads)
+"bpH" = (/obj/structure/closet/secure_closet/hop,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/wood,/area/crew_quarters/heads)
"bpI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/maintenance/storage)
"bpJ" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "waste_sensor"; output = 63},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/maintenance/storage)
"bpK" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/maintenance/storage)
@@ -3549,7 +3549,7 @@
"bqm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/quartermaster/storage)
"bqn" = (/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/machinery/power/apc{dir = 1; name = "Quartermaster's Office APC"; pixel_x = 0; pixel_y = 30},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/quartermaster/qm)
"bqo" = (/obj/machinery/atmospherics/pipe/simple{color = "red"; icon_state = "intact-r"; level = 2},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/maintenance/storage)
-"bqp" = (/obj/machinery/atmospherics/pipe/simple{color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/obj/machinery/atmospherics/pipe/simple{color = "cyan"; icon_state = "intact-c"},/obj/machinery/atmospherics/pipe/simple{color = "yellow"; dir = 4; icon_state = "intact-y"; level = 2},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/storage)
+"bqp" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/flasher{id = "AI"; pixel_x = 24; pixel_y = -8},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor/bluegrid,/area/turret_protected/ai)
"bqq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/security/checkpoint/supply)
"bqr" = (/obj/structure/closet/secure_closet/quartermaster,/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "brown"},/area/quartermaster/qm)
"bqs" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/bridge)
@@ -3805,7 +3805,7 @@
"bvi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/bridge)
"bvj" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/bridge)
"bvk" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -26; pixel_y = 0},/turf/simulated/floor/wood,/area/bridge)
-"bvl" = (/obj/machinery/door_control{id = "bridge blast"; name = "Bridge Blast Door Control"; pixel_x = -1; pixel_y = -24; req_access_txt = "19"},/turf/simulated/floor/carpet,/area/bridge)
+"bvl" = (/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 28; pixel_y = 5},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = -27; pixel_y = 4},/obj/machinery/turretid{name = "AI Chamber turret control"; pixel_x = 24; pixel_y = -7},/obj/effect/landmark/start{name = "AI"},/obj/item/device/radio/intercom{broadcasting = 1; freerange = 1; listening = 1; name = "Common Channel"; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Primary AI Base"},/area/turret_protected/ai)
"bvm" = (/obj/structure/stool/bed/chair/comfy/black{dir = 4},/turf/simulated/floor/carpet,/area/bridge)
"bvn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/engineering{name = "Arrivals Expansion Area"; req_access_txt = "32"},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"})
"bvo" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/blue,/turf/simulated/floor/carpet,/area/bridge)
@@ -3952,7 +3952,7 @@
"bxZ" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/yellow,/obj/item/weapon/folder/yellow,/turf/simulated/floor/wood,/area/library)
"bya" = (/obj/effect/landmark/start{name = "Librarian"},/obj/structure/stool/bed/chair/office/dark{dir = 1},/turf/simulated/floor/wood,/area/library)
"byb" = (/obj/structure/table/woodentable,/obj/machinery/librarycomp{pixel_y = 0},/obj/structure/noticeboard{desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; name = "requests board"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/wood,/area/library)
-"byc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central)
+"byc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/ai)
"byd" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/qm)
"bye" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/qm)
"byf" = (/obj/machinery/computer/supplycomp,/turf/simulated/floor{dir = 10; icon_state = "brown"},/area/quartermaster/qm)
@@ -4111,8 +4111,8 @@
"bBc" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "whitehall"},/area/medical/research{name = "Research Division"})
"bBd" = (/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/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/engine/chiefs_office)
"bBe" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/hallway/primary/central)
-"bBf" = (/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/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_Toxins = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/central)
-"bBg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;17"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/teleporter{name = "\improper Teleporter Room"})
+"bBf" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/power/apc{aidisabled = 0; dir = 1; name = "AI Chamber APC"; pixel_y = 24},/obj/machinery/light/small{dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{tag = "icon-vault (SOUTHEAST)"; icon_state = "vault"; dir = 6},/area/turret_protected/ai)
+"bBg" = (/obj/machinery/hologram/holopad,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/door/window{name = "Primary AI Core Access"; pixel_y = -2; req_access_txt = "16"},/obj/machinery/door/window{dir = 1; name = "Primary AI Core Access"; pixel_y = 0; req_access_txt = "16"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/turret_protected/ai)
"bBh" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
"bBi" = (/turf/simulated/wall/r_wall,/area/bridge/meeting_room{name = "\improper Command Corridors"})
"bBj" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/bridge/meeting_room{name = "\improper Command Corridors"})
@@ -4121,13 +4121,13 @@
"bBm" = (/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"})
"bBn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"})
"bBo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"})
-"bBp" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
+"bBp" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/flasher{pixel_x = 0; pixel_y = 24; id = "AI"},/obj/machinery/light/small{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{tag = "icon-vault (SOUTHWEST)"; icon_state = "vault"; dir = 10},/area/turret_protected/ai)
"bBq" = (/turf/simulated/wall/r_wall,/area/teleporter{name = "\improper Teleporter Room"})
"bBr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor/plating,/area/quartermaster/qm)
"bBs" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/medical/cmo)
-"bBt" = (/obj/machinery/vending/cola,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/teleporter{name = "\improper Teleporter Room"})
+"bBt" = (/obj/machinery/recharge_station,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/turret_protected/ai_upload_foyer)
"bBu" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"},/area/toxins/lab)
-"bBv" = (/obj/machinery/vending/coffee,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/teleporter{name = "\improper Teleporter Room"})
+"bBv" = (/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload_foyer)
"bBw" = (/obj/machinery/door/airlock/maintenance{name = "Hydroponics Maintenance"; req_access_txt = "35"; req_one_access_txt = "0"},/turf/simulated/floor/plating,/area/hydroponics)
"bBx" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/hallway/primary/central)
"bBy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/central)
@@ -4141,12 +4141,12 @@
"bBG" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar)
"bBH" = (/obj/structure/table/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar)
"bBI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor{dir = 8; icon_state = "loadingarea"; tag = "loading"},/area/quartermaster/storage)
-"bBJ" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/teleporter{name = "\improper Teleporter Room"})
+"bBJ" = (/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},/turf/simulated/floor/plating,/area/toxins/lab)
"bBK" = (/obj/structure/disposalpipe/segment{dir = 4},/mob/living/carbon/monkey{name = "Pun Pun"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar)
"bBL" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/storage/tech)
"bBM" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar)
"bBN" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar)
-"bBO" = (/obj/item/weapon/storage/belt/utility,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = 27; pixel_y = 0},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/teleporter{name = "\improper Teleporter Room"})
+"bBO" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/hydroponics)
"bBP" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/storage/tech)
"bBQ" = (/obj/machinery/atmospherics/pipe/simple{color = "cyan"; icon_state = "intact-c"; level = 2},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/maintenance/storage)
"bBR" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/tcommsat/computer)
@@ -4168,7 +4168,7 @@
"bCh" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/turf/simulated/floor/carpet,/area/security/vacantoffice)
"bCi" = (/obj/structure/table/woodentable,/obj/item/weapon/paper,/obj/machinery/newscaster/security_unit{pixel_x = 30; pixel_y = 0},/turf/simulated/floor/wood,/area/security/vacantoffice)
"bCj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
-"bCk" = (/obj/structure/table,/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/teleporter{name = "\improper Teleporter Room"})
+"bCk" = (/obj/machinery/camera{c_tag = "Atmospherics Tank - O2"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/maintenance/storage)
"bCl" = (/obj/structure/table/woodentable,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/disposalpipe/segment{dir = 4},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office)
"bCm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"})
"bCn" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/toxins/lab)
@@ -4188,16 +4188,16 @@
"bCB" = (/obj/machinery/computer/med_data,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{dir = 2; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/surgery)
"bCC" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"})
"bCD" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "dark"},/area/bridge/meeting_room{name = "\improper Command Corridors"})
-"bCE" = (/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/teleporter{name = "\improper Teleporter Room"})
+"bCE" = (/obj/machinery/camera{c_tag = "Atmospherics Tank - N2"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/maintenance/storage)
"bCF" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"})
-"bCG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/teleporter{name = "\improper Teleporter Room"})
+"bCG" = (/turf/simulated/wall/r_wall,/area/gateway)
"bCH" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "dark"},/area/bridge/meeting_room{name = "\improper Command Corridors"})
"bCI" = (/obj/machinery/door/airlock/maintenance{name = "Atmospherics Maintenance"; req_access_txt = "24"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard)
"bCJ" = (/obj/machinery/teleport/station,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plating,/area/teleporter{name = "\improper Teleporter Room"})
"bCK" = (/obj/item/weapon/cartridge/medical{pixel_x = -2; pixel_y = 6},/obj/item/weapon/cartridge/medical{pixel_x = 6; pixel_y = 3},/obj/item/weapon/cartridge/medical,/obj/item/weapon/cartridge/chemistry{pixel_y = 2},/obj/structure/table/reinforced,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo)
"bCL" = (/obj/machinery/teleport/hub,/turf/simulated/floor/plating,/area/teleporter{name = "\improper Teleporter Room"})
"bCM" = (/obj/item/device/radio/off,/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/box/lights/mixed,/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
-"bCN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/teleporter{name = "\improper Teleporter Room"})
+"bCN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;17"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/gateway)
"bCO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor,/area/hallway/primary/central)
"bCP" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Maltese Falcon APC"; pixel_y = -24},/obj/structure/cable/yellow,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar)
"bCQ" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar)
@@ -4253,21 +4253,21 @@
"bDO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/starboard)
"bDP" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "dark"},/area/bridge/meeting_room{name = "\improper Command Corridors"})
"bDQ" = (/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
-"bDR" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
+"bDR" = (/obj/machinery/vending/cola,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/gateway)
"bDS" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
"bDT" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge/meeting_room{name = "\improper Command Corridors"})
-"bDU" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
+"bDU" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/vending/cigarette,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/gateway)
"bDV" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "dark"},/area/bridge/meeting_room{name = "\improper Command Corridors"})
"bDW" = (/obj/structure/closet/secure_closet/personal,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/locker)
"bDX" = (/obj/structure/table/reinforced,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 30; pixel_y = 0},/obj/structure/bedsheetbin{pixel_x = 2},/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/mask/muzzle,/obj/item/weapon/gun/syringe,/turf/simulated/floor{dir = 2; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/surgery)
-"bDY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/teleporter{name = "\improper Teleporter Room"})
-"bDZ" = (/obj/machinery/door/airlock/maintenance{name = "Gateway Maintenance"; req_access_txt = "17"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/teleporter{name = "\improper Teleporter Room"})
-"bEa" = (/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"})
+"bDY" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway)
+"bDZ" = (/obj/item/weapon/storage/belt/utility,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = 27; pixel_y = 0},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway)
+"bEa" = (/obj/structure/table,/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway)
"bEb" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating,/area/maintenance/starboard)
-"bEc" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/teleporter{name = "\improper Teleporter Room"})
-"bEd" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/light,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/teleporter{name = "\improper Teleporter Room"})
-"bEe" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/suit/hazardvest,/obj/item/clothing/suit/hazardvest,/obj/item/clothing/head/hardhat/orange{name = "protective hat"},/obj/item/clothing/head/hardhat/orange{name = "protective hat"},/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/teleporter{name = "\improper Teleporter Room"})
-"bEf" = (/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/teleporter{name = "\improper Teleporter Room"})
+"bEc" = (/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway)
+"bEd" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/gateway)
+"bEe" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
+"bEf" = (/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
"bEg" = (/obj/item/weapon/cigbutt,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery)
"bEh" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central)
"bEi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central)
@@ -4293,7 +4293,7 @@
"bEC" = (/obj/machinery/atmospherics/binary/pump{dir = 0; icon_state = "intact_off"; name = "Port to Filter"; on = 0},/obj/machinery/light/small{dir = 8},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor,/area/maintenance/storage)
"bED" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8; icon_state = "manifold"; level = 2},/obj/structure/stool,/turf/simulated/floor,/area/maintenance/storage)
"bEE" = (/obj/machinery/atmospherics/unary/heat_reservoir/heater{dir = 8; icon_state = "freezer_0"; tag = ""},/turf/simulated/floor,/area/maintenance/storage)
-"bEF" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"})
+"bEF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/gateway)
"bEG" = (/obj/machinery/camera/autoname{dir = 8; network = list("SS13","Medbay")},/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/structure/rack{layer = 2.8},/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry)
"bEH" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/wood,/area/security/vacantoffice)
"bEI" = (/obj/structure/table/woodentable,/obj/structure/noticeboard{desc = "A memorial wall for pinning up momentos"; name = "memorial board"; pixel_y = 32},/obj/machinery/newscaster{pixel_x = -30},/obj/item/weapon/storage/fancy/candle_box,/obj/item/weapon/storage/fancy/candle_box{pixel_x = -2; pixel_y = 2},/turf/simulated/floor/carpet,/area/chapel/main)
@@ -4329,10 +4329,10 @@
"bFm" = (/turf/simulated/wall/r_wall,/area/assembly/showroom{name = "\improper Corporate Showroom"})
"bFn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{icon = 'icons/obj/doors/Doorele.dmi'; name = "Corporate Showroom"; req_access_txt = "19"},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"})
"bFo" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "purplefull"},/area/hallway/primary/aft)
-"bFp" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Gateway Access"; req_access_txt = "62"},/turf/simulated/floor,/area/teleporter{name = "\improper Teleporter Room"})
-"bFq" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/teleporter{name = "\improper Teleporter Room"})
-"bFr" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"})
-"bFs" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"})
+"bFp" = (/obj/machinery/door/airlock/maintenance{name = "Gateway Maintenance"; req_access_txt = "17"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/gateway)
+"bFq" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/gateway)
+"bFr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/light,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/gateway)
+"bFs" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/suit/hazardvest,/obj/item/clothing/suit/hazardvest,/obj/item/clothing/head/hardhat/orange{name = "protective hat"},/obj/item/clothing/head/hardhat/orange{name = "protective hat"},/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway)
"bFt" = (/obj/machinery/shieldwallgen,/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/teleporter{name = "\improper Teleporter Room"})
"bFu" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/teleporter{name = "\improper Teleporter Room"})
"bFv" = (/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
@@ -4400,12 +4400,12 @@
"bGF" = (/obj/structure/showcase{desc = "A stand with a model of the perfect Nanotrasen Employee bolted to it. Signs indicate it is robustly genetically engineered, as well as being ruthlessly loyal."; name = "'Perfect Man' Exhibit"},/obj/structure/sign/atmosplaque{desc = "A guide to the exhibit, explaining how recent developments in genetic modification and cloning technologies by the Nanotrasen Corporation have led to development and the effective immortality of the 'perfect man', the loyal Nanotrasen Employee."; icon_state = "kiddieplaque"; name = "\improper 'Perfect Man' Exhibit"; pixel_x = 0; pixel_y = 32},/obj/structure/window/reinforced,/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"})
"bGG" = (/obj/structure/stool/bed/roller,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor{dir = 6; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"})
"bGH" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/sleeper{name = "Sleepers"})
-"bGI" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
-"bGJ" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/stack/medical/ointment,/obj/item/stack/medical/bruise_pack,/obj/item/weapon/reagent_containers/syringe/antitoxin,/obj/item/weapon/reagent_containers/syringe/inaprovaline{pixel_x = -1; pixel_y = 2},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/teleporter{name = "\improper Teleporter Room"})
-"bGK" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"})
-"bGL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/teleporter{name = "\improper Teleporter Room"})
+"bGI" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/gateway)
+"bGJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Gateway Access"; req_access_txt = "62"},/turf/simulated/floor,/area/gateway)
+"bGK" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/gateway)
+"bGL" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/gateway)
"bGM" = (/turf/simulated/floor{icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"})
-"bGN" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/teleporter{name = "\improper Teleporter Room"})
+"bGN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/gateway)
"bGO" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central)
"bGP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
"bGQ" = (/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/glasses/science,/obj/item/clothing/glasses/science,/obj/structure/table,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/misc_lab)
@@ -4441,14 +4441,14 @@
"bHu" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/maintenance/storage)
"bHv" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "whitegreencorner"},/area/medical/sleeper{name = "Sleepers"})
"bHw" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"})
-"bHx" = (/obj/machinery/shieldwallgen,/turf/simulated/floor{icon_state = "dark"},/area/teleporter{name = "\improper Teleporter Room"})
+"bHx" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
"bHy" = (/obj/structure/table/woodentable,/obj/item/weapon/paper,/obj/machinery/newscaster{pixel_y = -32},/turf/simulated/floor/wood,/area/security/vacantoffice)
"bHz" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/white,/turf/simulated/floor/wood,/area/security/vacantoffice)
"bHA" = (/obj/machinery/power/apc{dir = 2; name = "Vacant Office APC"; pixel_y = -25},/obj/structure/cable/yellow,/turf/simulated/floor/wood,/area/security/vacantoffice)
"bHB" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/turf/simulated/floor/wood,/area/security/vacantoffice)
"bHC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay{name = "Medbay Central"})
"bHD" = (/obj/machinery/chem_dispenser,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry)
-"bHE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/teleporter{name = "\improper Teleporter Room"})
+"bHE" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/stack/medical/ointment,/obj/item/stack/medical/bruise_pack,/obj/item/weapon/reagent_containers/syringe/antitoxin,/obj/item/weapon/reagent_containers/syringe/inaprovaline{pixel_x = -1; pixel_y = 2},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway)
"bHF" = (/obj/item/device/radio/intercom{pixel_y = 25},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office)
"bHG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office)
"bHH" = (/obj/structure/table,/obj/structure/window/reinforced,/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{pixel_y = 2},/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{pixel_y = 2},/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{pixel_y = 2},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/chapel/main)
@@ -4563,7 +4563,7 @@
"bJM" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/cryo)
"bJN" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/camera/autoname{dir = 1; network = list("SS13","Medbay")},/obj/structure/table/reinforced,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone,/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo)
"bJO" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"})
-"bJP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
+"bJP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/gateway)
"bJQ" = (/obj/machinery/door/window/northleft{dir = 8; name = "Jetpack Storage"; pixel_x = -1; pixel_y = 0; req_access_txt = "19"},/obj/structure/window/reinforced,/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/tank/jetpack/carbondioxide,/obj/item/weapon/tank/jetpack/carbondioxide{pixel_x = -2; pixel_y = 3},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
"bJR" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard)
"bJS" = (/obj/structure/table,/obj/item/seeds/lemonseed,/obj/item/seeds/cherryseed,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/item/nutrient/ez,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics)
@@ -4646,7 +4646,7 @@
"bLr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bLs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo)
"bLt" = (/obj/machinery/light,/turf/simulated/floor{dir = 8; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"})
-"bLu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/hydroponics)
+"bLu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/gateway)
"bLv" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/window/eastright{name = "Chemistry Desk"; req_access_txt = "5; 33"},/obj/item/weapon/reagent_containers/glass/bottle/antitoxin{pixel_x = -4; pixel_y = -3},/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline{pixel_x = 7; pixel_y = -3},/obj/item/weapon/reagent_containers/syringe/inaprovaline{pixel_x = 3; pixel_y = -2},/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/glass/bottle/toxin{pixel_x = 4; pixel_y = 2},/obj/machinery/door/window/eastright{dir = 8; name = "Chemistry Desk"; req_access_txt = "5"},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bLw" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 1; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"})
"bLx" = (/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"})
@@ -4655,7 +4655,7 @@
"bLA" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen)
"bLB" = (/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/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/plating,/area/medical/sleeper{name = "Sleepers"})
"bLC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
-"bLD" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/hydroponics)
+"bLD" = (/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/gateway)
"bLE" = (/obj/machinery/door/window/southleft{base_state = "left"; dir = 8; icon_state = "left"; name = "Kitchen Delivery"; req_access_txt = "28"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/kitchen)
"bLF" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "Kitchen"},/obj/structure/plasticflaps{opacity = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/maintenance/starboard)
"bLG" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/primary/central)
@@ -4785,7 +4785,7 @@
"bOa" = (/obj/machinery/vending/hydronutrients,/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics)
"bOb" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"bOc" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/o2{pixel_x = -2; pixel_y = 4},/turf/simulated/floor{dir = 10; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"})
-"bOd" = (/obj/structure/stool/bed/chair/office/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 9; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/hydroponics)
+"bOd" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/gateway)
"bOe" = (/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/starboard)
"bOf" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics)
"bOg" = (/obj/effect/landmark/start{name = "Chef"},/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
@@ -4830,7 +4830,7 @@
"bOT" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"})
"bOU" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_Toxins = 0},/turf/simulated/floor,/area/hallway/primary/central)
"bOV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor,/area/hallway/primary/central)
-"bOW" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{icon_state = "white"},/area/hydroponics)
+"bOW" = (/obj/machinery/shieldwallgen,/turf/simulated/floor{icon_state = "dark"},/area/gateway)
"bOX" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/hallway/primary/central)
"bOY" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "L1"},/area/hallway/primary/central)
"bOZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "L3"},/area/hallway/primary/central)
@@ -4842,7 +4842,7 @@
"bPf" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "L15"},/area/hallway/primary/central)
"bPg" = (/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/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/hallway/primary/central)
"bPh" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_Toxins = 0},/turf/simulated/floor,/area/hallway/primary/central)
-"bPi" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/hydroponics)
+"bPi" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/gateway)
"bPj" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor,/area/hallway/primary/central)
"bPk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{dir = 2; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"})
"bPl" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/external{req_access_txt = "13"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
@@ -4934,7 +4934,7 @@
"bQT" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/maintenance/storage)
"bQU" = (/obj/machinery/atmospherics/pipe/simple{color = "red"; icon_state = "intact-r"; level = 2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage)
"bQV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "warningcorner"; tag = "icon-warningcorner (EAST)"},/area/maintenance/storage)
-"bQW" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/hydroponics)
+"bQW" = (/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/gateway)
"bQX" = (/obj/structure/stool,/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "warning"},/area/maintenance/storage)
"bQY" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "n2_in"; name = "Nitrogen Supply Control"; output_tag = "n2_out"; sensors = list("n2_sensor" = "Tank")},/obj/machinery/atmospherics/pipe/simple{color = "green"; icon_state = "intact-g"; level = 2},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor{icon_state = "redfull"},/area/maintenance/storage)
"bQZ" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Burn Chamber Outlet"},/obj/machinery/ignition_switch{id = "atmosmixspark"; pixel_x = -5; pixel_y = -25},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "warning"},/area/maintenance/storage)
@@ -5138,7 +5138,7 @@
"bUP" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/stool,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/misc_lab)
"bUQ" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/door_control{id = "misclab"; name = "Test Chamber Blast Doors"; pixel_x = 6; pixel_y = 30; req_access_txt = "47"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 5},/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/toxins/misc_lab)
"bUR" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
-"bUS" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
+"bUS" = (/obj/machinery/camera{c_tag = "Atmospherics Tank - CO2"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/maintenance/storage)
"bUT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bUU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"})
"bUV" = (/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay{name = "Medbay Central"})
@@ -5161,12 +5161,12 @@
"bVm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/table/woodentable,/obj/item/candle,/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
"bVn" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bVo" = (/obj/structure/table,/obj/item/weapon/phone{pixel_x = -3; pixel_y = 3},/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/machinery/requests_console{announcementConsole = 1; department = "Telecoms Admin"; departmentType = 5; name = "Telecoms RC"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 2; icon_state = "yellow"},/area/tcommsat/computer)
-"bVp" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/teleporter{name = "\improper Teleporter Room"})
+"bVp" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
"bVq" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/quartermaster/storage)
-"bVr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "Gateway Atrium"; req_access_txt = "62"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor,/area/teleporter{name = "\improper Teleporter Room"})
+"bVr" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/hydroponics)
"bVs" = (/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server)
"bVt" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = -32},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar)
-"bVu" = (/turf/simulated/floor{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/hydroponics)
+"bVu" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/hydroponics)
"bVv" = (/turf/simulated/floor{icon_state = "bar"},/area/hallway/primary/central)
"bVw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
"bVx" = (/obj/machinery/seed_extractor,/obj/machinery/light,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics)
@@ -5402,7 +5402,7 @@
"bZT" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft)
"bZU" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/hydroponics)
"bZV" = (/turf/simulated/floor{dir = 1; icon_state = "warnwhitecorner"; tag = "icon-warnwhitecorner (EAST)"},/area/hydroponics)
-"bZW" = (/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/machinery/atmospherics/pipe/manifold{color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/bridge/meeting_room{name = "\improper Command Corridors"})
+"bZW" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/hydroponics)
"bZX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/wall/r_wall,/area/maintenance/aft{name = "Aft Maintenance"})
"bZY" = (/obj/structure/stool/bed/chair/office/light,/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/hydroponics)
"bZZ" = (/obj/structure/disposaloutlet{dir = 2},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating/airless,/area)
@@ -5503,7 +5503,7 @@
"cbQ" = (/obj/machinery/vending/snack,/obj/machinery/newscaster{pixel_x = -30; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/central)
"cbR" = (/obj/structure/closet/crate/rcd{pixel_y = 4},/obj/machinery/door/window/northleft{dir = 4; name = "RCD Storage"; pixel_x = 1; pixel_y = 0; req_access_txt = "19"},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
"cbS" = (/obj/structure/dispenser/oxygen{pixel_x = -1; pixel_y = 2},/turf/simulated/floor,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
-"cbT" = (/obj/machinery/camera/motion{c_tag = "E.V.A. Storage #2"; dir = 8},/obj/machinery/requests_console{department = "EVA"; pixel_x = 32; pixel_y = 0},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
+"cbT" = (/obj/machinery/camera{c_tag = "Atmospherics Tank - Air"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/maintenance/storage)
"cbU" = (/obj/machinery/power/apc{dir = 8; name = "Teleporter APC"; pixel_x = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"})
"cbV" = (/obj/machinery/sparker{id = "Misc"; pixel_x = -25},/turf/simulated/floor/engine,/area/toxins/misc_lab)
"cbW" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "libsht"; name = "Privacy Shutters"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/wood,/area/library)
@@ -5533,7 +5533,7 @@
"ccu" = (/obj/machinery/light,/obj/machinery/camera/autoname{dir = 1; network = list("SS13","Medbay")},/obj/structure/stool/bed/roller,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"})
"ccv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"})
"ccw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"})
-"ccx" = (/obj/machinery/gateway{dir = 10},/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/teleporter{name = "\improper Teleporter Room"})
+"ccx" = (/turf/simulated/floor{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/hydroponics)
"ccy" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/science)
"ccz" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/security/checkpoint/science)
"ccA" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/checkpoint/science)
@@ -5564,7 +5564,7 @@
"ccZ" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/machinery/camera/autoname{dir = 2; network = list("SS13")},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central)
"cda" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery)
"cdb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
-"cdc" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"})
+"cdc" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 9; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/hydroponics)
"cdd" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "o2_in"; name = "Oxygen Supply Control"; output_tag = "o2_out"; sensors = list("o2_sensor" = "Tank")},/obj/machinery/atmospherics/pipe/simple{color = "green"; icon_state = "intact-g"; level = 2},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor{icon_state = "bluefull"},/area/maintenance/storage)
"cde" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
"cdf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
@@ -5572,21 +5572,21 @@
"cdh" = (/obj/machinery/door/poddoor{density = 1; icon_state = "closed"; id = "QMLoaddoor"; name = "Supply Dock Loading Door"; opacity = 1},/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage)
"cdi" = (/obj/machinery/atmospherics/pipe/simple{color = "green"; icon_state = "intact-g"; level = 2},/obj/machinery/atmospherics/binary/pump{dir = 8; name = "O2 to Airmix"},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{icon_state = "bluefull"},/area/maintenance/storage)
"cdj" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
-"cdk" = (/obj/structure/dispenser/oxygen{pixel_x = -1; pixel_y = 2},/obj/machinery/light{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/teleporter{name = "\improper Teleporter Room"})
-"cdl" = (/obj/structure/stool/bed/roller,/obj/machinery/vending/wallmed1{pixel_x = -28; pixel_y = 0},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/teleporter{name = "\improper Teleporter Room"})
+"cdk" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "Gateway Atrium"; req_access_txt = "62"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor,/area/gateway)
+"cdl" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;17"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/gateway)
"cdm" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"cdn" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"cdo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central)
"cdp" = (/obj/structure/table/reinforced,/obj/machinery/door/poddoor/shutters/preopen{id = "kitchen"; name = "kitchen shutters"},/obj/machinery/door/firedoor,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
"cdq" = (/obj/machinery/atmospherics/pipe/simple{color = "green"; icon_state = "intact-g"; level = 2},/obj/machinery/atmospherics/pipe/simple{color = "cyan"; dir = 4; icon_state = "intact-c"; level = 2},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/maintenance/storage)
-"cdr" = (/obj/machinery/gateway{dir = 6},/turf/simulated/floor{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/teleporter{name = "\improper Teleporter Room"})
+"cdr" = (/obj/machinery/vending/coffee,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/gateway)
"cds" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay{name = "Medbay Central"})
"cdt" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
"cdu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
"cdv" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless,/area)
"cdw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft)
"cdx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
-"cdy" = (/obj/machinery/gateway,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/teleporter{name = "\improper Teleporter Room"})
+"cdy" = (/obj/machinery/vending/cigarette,/obj/machinery/newscaster{pixel_x = 0; pixel_y = -29},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/gateway)
"cdz" = (/obj/machinery/requests_console{department = "Kitchen"; departmentType = 2; pixel_x = 30; pixel_y = 0},/obj/machinery/processor,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
"cdA" = (/obj/machinery/light/small{dir = 4},/obj/effect/landmark/start{name = "Chaplain"},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office)
"cdB" = (/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
@@ -5598,7 +5598,7 @@
"cdH" = (/obj/structure/sign/greencross,/turf/simulated/wall,/area/medical/chemistry)
"cdI" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{layer = 2.7; name = "Private Function Room"; opacity = 1},/turf/simulated/floor/wood,/area/library)
"cdJ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;37"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
-"cdK" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
+"cdK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central)
"cdL" = (/obj/structure/filingcabinet,/turf/simulated/floor{icon_state = "red"; dir = 6},/area/security/checkpoint/science)
"cdM" = (/obj/machinery/power/apc{dir = 8; name = "Research Wing Security APC"; pixel_x = -24},/obj/structure/cable/yellow,/turf/simulated/floor{icon_state = "red"; dir = 10},/area/security/checkpoint/science)
"cdN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "kitchen"; name = "kitchen shutters"; opacity = 0},/turf/simulated/floor/plating,/area/crew_quarters/kitchen)
@@ -5624,7 +5624,7 @@
"ceh" = (/turf/simulated/wall,/area/medical/cryo)
"cei" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "tox_in"; name = "Toxin Supply Control"; output_tag = "tox_out"; sensors = list("tox_sensor" = "Tank")},/obj/machinery/atmospherics/pipe/simple{color = "green"; icon_state = "intact-g"; level = 2},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor{icon_state = "purplefull"},/area/maintenance/storage)
"cej" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/maintenance/storage)
-"cek" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/vending/cigarette,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/teleporter{name = "\improper Teleporter Room"})
+"cek" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central)
"cel" = (/obj/machinery/atmospherics/pipe/simple{color = "green"; icon_state = "intact-g"; level = 2},/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_off"; name = "Plasma to Pure"; on = 0},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/turf/simulated/floor{icon_state = "purplefull"},/area/maintenance/storage)
"cem" = (/turf/simulated/wall,/area/medical/cmo)
"cen" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/medical/cmo)
@@ -5654,7 +5654,7 @@
"ceL" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "whitehall"},/area/medical/research{name = "Research Division"})
"ceM" = (/obj/machinery/shieldwallgen{req_access = list(47)},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/engine,/area/toxins/misc_lab)
"ceN" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/window/northleft{dir = 8; name = "Disposals Chute"; pixel_x = -1; pixel_y = 0; req_access_txt = "0"},/obj/machinery/disposal/deliveryChute{dir = 8; name = "disposals chute"; pixel_x = 5},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/teleporter{name = "\improper Teleporter Room"})
-"ceO" = (/obj/machinery/gateway{dir = 4},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/teleporter{name = "\improper Teleporter Room"})
+"ceO" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "council blast"; name = "Council Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/bridge)
"ceP" = (/obj/machinery/door/window/southleft{dir = 1; name = "Test Chamber"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "misclab"; name = "test chamber blast door"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/engine,/area/toxins/misc_lab)
"ceQ" = (/obj/machinery/door/airlock/external{name = "Auxiliary Airlock"},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"})
"ceR" = (/obj/machinery/telecomms/server/presets/engineering,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server)
@@ -5683,10 +5683,10 @@
"cfo" = (/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/machinery/atmospherics/pipe/simple{color = "green"; icon_state = "intact-g"; level = 2},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/maintenance/storage)
"cfp" = (/obj/structure/closet/toolcloset,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server)
"cfq" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/blue,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo)
-"cfr" = (/obj/machinery/gateway/centerstation,/turf/simulated/floor{icon_state = "dark"},/area/teleporter{name = "\improper Teleporter Room"})
+"cfr" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "council blast"; name = "Council Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/bridge)
"cfs" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/assembly/showroom{name = "\improper Corporate Showroom"})
"cft" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorcomglass.dmi'},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"})
-"cfu" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"})
+"cfu" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "council blast"; name = "Council Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/bridge)
"cfv" = (/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"cfw" = (/obj/structure/table,/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/floor{dir = 6; icon_state = "yellow"},/area/tcommsat/computer)
"cfx" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/window/westleft{dir = 4; name = "Hydroponics Desk"; req_access_txt = "0"; req_one_access_txt = "30;35"},/obj/structure/noticeboard{desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; name = "requests board"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 4; icon_state = "greenfull"; tag = "icon-whitehall (WEST)"},/area/hydroponics)
@@ -5713,10 +5713,10 @@
"cfS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central)
"cfT" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = ""; name = "Hydroponics"; req_access_txt = "35"},/turf/simulated/floor,/area/hydroponics)
"cfU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central)
-"cfV" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;17"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/teleporter{name = "\improper Teleporter Room"})
+"cfV" = (/obj/machinery/camera{c_tag = "Atmospherics Tank - N2O"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor/engine/n20,/area/maintenance/storage)
"cfW" = (/obj/machinery/door/window/southleft{name = "Test Chamber"; req_access_txt = "47"},/turf/simulated/floor/engine,/area/toxins/misc_lab)
"cfX" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/toxins/misc_lab)
-"cfY" = (/obj/structure/table,/obj/item/weapon/paper/pamphlet,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/teleporter{name = "\improper Teleporter Room"})
+"cfY" = (/obj/machinery/camera/motion{c_tag = "E.V.A. Storage #2"; dir = 8},/obj/machinery/requests_console{department = "EVA"; pixel_x = 32; pixel_y = 0},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
"cfZ" = (/obj/machinery/vending/coffee,/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/bar)
"cga" = (/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},/turf/simulated/floor/plating,/area/maintenance/starboard)
"cgb" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/bag/plants/portaseeder,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics)
@@ -5729,10 +5729,10 @@
"cgi" = (/obj/structure/table/woodentable,/obj/item/device/taperecorder{pixel_y = 0},/obj/item/device/camera,/obj/item/device/radio/intercom{pixel_y = -25},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library)
"cgj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"cgk" = (/obj/structure/stool/bed,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/weapon/bedsheet/medical,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
-"cgl" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/teleporter{name = "\improper Teleporter Room"})
+"cgl" = (/obj/machinery/gateway{dir = 10},/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/gateway)
"cgm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/cryo)
-"cgn" = (/obj/machinery/gateway{dir = 8},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/teleporter{name = "\improper Teleporter Room"})
-"cgo" = (/obj/structure/closet/secure_closet/medical1{pixel_x = 0},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/teleporter{name = "\improper Teleporter Room"})
+"cgn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/gateway)
+"cgo" = (/obj/structure/dispenser/oxygen{pixel_x = -1; pixel_y = 2},/obj/machinery/light{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway)
"cgp" = (/obj/machinery/atmospherics/pipe/manifold{dir = 2; icon_state = "manifold"; level = 2},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor,/area/medical/cryo)
"cgq" = (/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact"; level = 2},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/medical/cryo)
"cgr" = (/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "delivery"},/area/medical/cryo)
@@ -5752,7 +5752,7 @@
"cgF" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/weapon/crowbar,/obj/item/weapon/storage/toolbox/emergency,/obj/item/device/radio/off,/turf/simulated/floor{icon_state = "bot"},/area/teleporter{name = "\improper Teleporter Room"})
"cgG" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/obj/item/device/multitool,/turf/simulated/floor{icon_state = "bot"},/area/teleporter{name = "\improper Teleporter Room"})
"cgH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "delivery"},/area/teleporter{name = "\improper Teleporter Room"})
-"cgI" = (/obj/structure/closet/l3closet/scientist,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/teleporter{name = "\improper Teleporter Room"})
+"cgI" = (/obj/structure/stool/bed/roller,/obj/machinery/vending/wallmed1{pixel_x = -28; pixel_y = 0},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway)
"cgJ" = (/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"cgK" = (/obj/structure/closet,/obj/item/weapon/extinguisher,/obj/effect/decal/cleanable/cobweb,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"cgL" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
@@ -5765,9 +5765,9 @@
"cgS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "20;12"},/turf/simulated/floor/plating,/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"cgT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"cgU" = (/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/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/bar)
-"cgV" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/bridge)
-"cgW" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/bridge)
-"cgX" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/bridge)
+"cgV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/gateway)
+"cgW" = (/obj/machinery/gateway{dir = 6},/turf/simulated/floor{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/gateway)
+"cgX" = (/obj/machinery/gateway,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/gateway)
"cgY" = (/obj/structure/table/woodentable,/obj/item/weapon/paper,/obj/item/weapon/pen/blue{pixel_x = 5; pixel_y = 5},/turf/simulated/floor/wood,/area/library)
"cgZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central)
"cha" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central)
@@ -5776,7 +5776,7 @@
"chd" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/closet/secure_closet/freezer/fridge,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
"che" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/fancy/donut_box,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/poddoor/shutters/preopen{id = "kitchen"; name = "kitchen shutters"},/obj/machinery/door/firedoor,/obj/structure/noticeboard{desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; name = "requests board"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
"chf" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central)
-"chg" = (/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/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"})
+"chg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
"chh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "greencorner"},/area/hallway/primary/central)
"chi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central)
"chj" = (/obj/structure/closet/emcloset,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
@@ -5796,7 +5796,7 @@
"chx" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/wood,/area/security/vacantoffice)
"chy" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"chz" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = ""; name = "Surgery Observation"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
-"chA" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/teleporter{name = "\improper Teleporter Room"})
+"chA" = (/obj/machinery/gateway{dir = 4},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/gateway)
"chB" = (/obj/machinery/atmospherics/trinary/filter{dir = 1; icon_state = "intact_on"; name = "Gas filter (Toxins tank)"; on = 1},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "purplefull"},/area/maintenance/storage)
"chC" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8; icon_state = "manifold"; level = 2},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/medical/cryo)
"chD" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1; icon_state = "manifold"; level = 2},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/medical/cryo)
@@ -5809,14 +5809,14 @@
"chK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo)
"chL" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/mob/living/simple_animal/cat/Runtime,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo)
"chM" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo)
-"chN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/teleporter{name = "\improper Teleporter Room"})
+"chN" = (/obj/machinery/gateway/centerstation,/turf/simulated/floor{icon_state = "dark"},/area/gateway)
"chO" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{name = "CMO Maintenance"; req_access_txt = "40"},/turf/simulated/floor/plating,/area/medical/cmo)
"chP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/central)
"chQ" = (/obj/structure/table,/obj/machinery/reagentgrinder,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics)
-"chR" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/teleporter{name = "\improper Teleporter Room"})
+"chR" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/gateway)
"chS" = (/obj/structure/table,/obj/item/device/analyzer/plant_analyzer,/obj/item/nutrient/ez,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics)
-"chT" = (/obj/machinery/gateway{dir = 9},/turf/simulated/floor{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/teleporter{name = "\improper Teleporter Room"})
-"chU" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"})
+"chT" = (/obj/structure/table,/obj/item/weapon/paper/pamphlet,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway)
+"chU" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/gateway)
"chV" = (/obj/structure/sign/chemistry,/turf/simulated/wall,/area/medical/chemistry)
"chW" = (/obj/machinery/atmospherics/pipe/simple{color = "blue"; icon_state = "intact-b-f"; level = 1; name = "pipe"},/obj/item/weapon/reagent_containers/food/snacks/pie,/obj/machinery/door/poddoor/shutters/preopen{id = "kitchen"; name = "kitchen shutters"},/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
"chX" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main)
@@ -5824,7 +5824,7 @@
"chZ" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/door/window/eastleft{dir = 1; name = "Research and Development Deliveries"; req_access_txt = "7"},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "delivery"},/area/toxins/lab)
"cia" = (/obj/structure/filingcabinet/chestdrawer,/obj/structure/window/reinforced{dir = 8},/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "yellow"},/area/tcommsat/computer)
"cib" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #5"; req_access_txt = "55"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/xenobiology)
-"cic" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/teleporter{name = "\improper Teleporter Room"})
+"cic" = (/obj/machinery/gateway{dir = 8},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/gateway)
"cid" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 6; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/tcommsat/computer)
"cie" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "green"; dir = 4},/area/hallway/primary/central)
"cif" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor/plating,/area/maintenance/portsolar)
@@ -5888,7 +5888,7 @@
"cjl" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/window/reinforced,/obj/structure/showcase{desc = "A flimsy model of NanoTrasen's revolutionary genetic modifier. Novel features include a locking system to protect scientists from test subjects, and a built-in suction system to remove vomit."; icon = 'icons/obj/Cryogenic2.dmi'; icon_state = "scanner"; name = "DNA Modifier Exhibit"; pixel_y = 3},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"})
"cjm" = (/obj/machinery/newscaster{pixel_x = -30},/obj/structure/table,/obj/item/weapon/folder/white,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology)
"cjn" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
-"cjo" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central)
+"cjo" = (/obj/structure/closet/secure_closet/medical1{pixel_x = 0},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway)
"cjp" = (/obj/machinery/bookbinder{pixel_y = 0},/obj/machinery/light{dir = 4},/turf/simulated/floor/wood,/area/library)
"cjq" = (/obj/machinery/door/poddoor/shutters/preopen{id = "kitchen"; name = "kitchen shutters"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
"cjr" = (/obj/machinery/door/airlock/external{name = "Transport Airlock"},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"})
@@ -5922,8 +5922,8 @@
"cjT" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/device/radio/intercom{dir = 8; freerange = 1; name = "Station Intercom (Telecoms)"; pixel_x = 28},/turf/simulated/floor{dir = 6; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/tcommsat/computer)
"cjU" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit)
"cjV" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor,/area/maintenance/storage)
-"cjW" = (/obj/machinery/gateway{dir = 5},/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/teleporter{name = "\improper Teleporter Room"})
-"cjX" = (/obj/machinery/gateway{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/teleporter{name = "\improper Teleporter Room"})
+"cjW" = (/obj/structure/closet/l3closet/scientist,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway)
+"cjX" = (/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/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/gateway)
"cjY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
"cjZ" = (/obj/machinery/light{dir = 4},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/hallway/secondary/exit)
"cka" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/obj/machinery/atmospherics/pipe/simple{color = "blue"; icon_state = "intact-b-f"; level = 1; name = "pipe"},/obj/machinery/door_control{id = "kitchen"; name = "Kitchen Shutters Control"; pixel_x = -1; pixel_y = 24; req_access_txt = "28"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
@@ -5955,7 +5955,7 @@
"ckA" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"})
"ckB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"ckC" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
-"ckD" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/toxins/mixing)
+"ckD" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/gateway)
"ckE" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit)
"ckF" = (/obj/structure/stool/bed/chair,/obj/machinery/power/apc{dir = 1; name = "Medical Security Checkpoint APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint/medical)
"ckG" = (/obj/structure/table,/obj/item/weapon/book/manual/security_space_law,/obj/machinery/newscaster{pixel_x = 0; pixel_y = -30},/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint/medical)
@@ -6020,7 +6020,7 @@
"clN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology)
"clO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/medical/morgue)
"clP" = (/obj/machinery/vending/cigarette,/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/aft)
-"clQ" = (/obj/machinery/vending/cigarette,/obj/machinery/newscaster{pixel_x = 0; pixel_y = -29},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/teleporter{name = "\improper Teleporter Room"})
+"clQ" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/gateway)
"clR" = (/obj/machinery/door/poddoor/shutters{id = "Skynet_launch"; name = "Mech Bay"},/turf/simulated/floor{icon_state = "delivery"},/area/assembly/chargebay)
"clS" = (/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/assembly/chargebay)
"clT" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating{tag = "icon-warnplate (EAST)"; icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"})
@@ -6521,7 +6521,7 @@
"cvu" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"cvv" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"cvw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3{name = "Medbay Aft"})
-"cvx" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/assembly/robotics)
+"cvx" = (/obj/machinery/gateway{dir = 9},/turf/simulated/floor{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/gateway)
"cvy" = (/obj/structure/table/woodentable,/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/item/weapon/folder/blue,/obj/item/weapon/disk/data,/obj/item/weapon/disk/tech_disk{pixel_x = 3; pixel_y = -1},/obj/item/weapon/disk/design_disk{pixel_x = 1; pixel_y = -2},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"})
"cvz" = (/obj/structure/table,/obj/machinery/power/apc{dir = 1; name = "Robotics Lab APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 23},/obj/item/weapon/crowbar,/obj/item/device/multitool{pixel_x = 3},/obj/item/device/radio/headset/headset_sci{pixel_x = -3},/obj/item/device/multitool{pixel_x = 3},/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics)
"cvA" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
@@ -6916,7 +6916,7 @@
"cCZ" = (/obj/machinery/disposal,/obj/structure/sign/deathsposal{pixel_x = 0; pixel_y = -32},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology)
"cDa" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/virology)
"cDb" = (/obj/structure/table,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology)
-"cDc" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/assembly/chargebay)
+"cDc" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/gateway)
"cDd" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/toxins/xenobiology)
"cDe" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
"cDf" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
@@ -7274,7 +7274,7 @@
"cJT" = (/obj/effect/landmark/start{name = "Roboticist"},/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor,/area/assembly/chargebay)
"cJU" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{tag = "icon-warnplate (EAST)"; icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"})
"cJV" = (/obj/structure/closet,/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/aft)
-"cJW" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/hydroponics)
+"cJW" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway)
"cJX" = (/obj/machinery/door/airlock/external{name = "Salvage Shuttle Dock"},/turf/simulated/shuttle/plating,/area/centcom/evac)
"cJY" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"})
"cJZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 1; icon_state = "whitegreencorner"},/area/medical/medbay3{name = "Medbay Aft"})
@@ -7522,7 +7522,7 @@
"cOH" = (/turf/simulated/floor/plating,/area/toxins/xenobiology)
"cOI" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/toxins/xenobiology)
"cOJ" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/toxins/xenobiology)
-"cOK" = (/obj/structure/closet/l3closet/scientist,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/teleporter{name = "\improper Teleporter Room"})
+"cOK" = (/obj/machinery/gateway{dir = 5},/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/gateway)
"cOL" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
"cOM" = (/obj/machinery/power/apc{dir = 4; name = "Medbay Aft APC"; pixel_x = 26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"})
"cON" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"})
@@ -7566,9 +7566,9 @@
"cPz" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac)
"cPA" = (/turf/space/transit/north/shuttlespace_ns7,/area/shuttle/escape/transit)
"cPB" = (/obj/machinery/computer/atmos_alert,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom)
-"cPC" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"})
-"cPD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"})
-"cPE" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/weapon/storage/toolbox/emergency,/obj/item/device/flashlight,/obj/machinery/power/apc{cell_type = 5000; dir = 4; name = "Gateway APC"; pixel_x = 28; pixel_y = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/teleporter{name = "\improper Teleporter Room"})
+"cPC" = (/obj/machinery/gateway{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/gateway)
+"cPD" = (/obj/machinery/camera{c_tag = "Atmospherics Tank - Toxins"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor/engine{carbon_dioxide = 0; name = "plasma floor"; nitrogen = 0; oxygen = 0; toxins = 70000},/area/maintenance/storage)
+"cPE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/gateway)
"cPF" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/bridge/meeting_room{name = "\improper Command Corridors"})
"cPG" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 10},/obj/item/weapon/cell{charge = 100; maxcharge = 15000},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
"cPH" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_y = -32; subspace_transmission = 1; syndie = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
@@ -9240,10 +9240,14 @@
"dvJ" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/mine/production)
"dvK" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor,/area/mine/production)
"dvL" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/turf/simulated/floor/plating,/area/mine/production)
+"dvM" = (/obj/structure/closet/l3closet/scientist,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway)
+"dvN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/gateway)
+"dvO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/gateway)
"dvP" = (/obj/machinery/door/airlock/external{name = "Mining Shuttle Airlock"; req_access_txt = "48"},/turf/simulated/floor,/area/mine/production)
"dvQ" = (/obj/machinery/door/window/westright{name = "Production Area"; req_access_txt = "48"},/turf/simulated/floor,/area/mine/production)
"dvR" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/camera{c_tag = "Production Room"; dir = 8; network = list("MINE")},/turf/simulated/floor,/area/mine/production)
"dvS" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating,/area/mine/production)
+"dvT" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/weapon/storage/toolbox/emergency,/obj/item/device/flashlight,/obj/machinery/power/apc{cell_type = 5000; dir = 4; name = "Gateway APC"; pixel_x = 28; pixel_y = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway)
"dvU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/mine/production)
"dvV" = (/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/mine/production)
"dvW" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/turf/simulated/floor,/area/mine/production)
@@ -9269,16 +9273,19 @@
"dwq" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/mine/production)
"dwr" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/plating,/area/mine/production)
"dws" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor,/area/mine/production)
+"dwt" = (/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},/turf/simulated/floor/plating,/area/assembly/robotics)
"dwu" = (/obj/machinery/conveyor{dir = 8; id = "mining_internal"},/obj/structure/plasticflaps,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production)
"dwv" = (/obj/machinery/conveyor{dir = 8; id = "mining_internal"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production)
"dww" = (/obj/machinery/conveyor{dir = 8; id = "mining_internal"},/obj/machinery/mineral/output,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production)
"dwx" = (/obj/machinery/mineral/stacking_machine,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production)
+"dwy" = (/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/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/assembly/robotics)
"dwz" = (/obj/structure/holowindow,/obj/item/weapon/beach_ball/holoball/dodgeball,/turf/simulated/floor/holofloor{dir = 1; icon_state = "green"},/area/holodeck/source_boxingcourt)
"dwA" = (/obj/structure/holowindow,/obj/item/weapon/beach_ball/holoball/dodgeball,/turf/simulated/floor/holofloor{dir = 9; icon_state = "green"},/area/holodeck/source_boxingcourt)
"dwB" = (/obj/structure/holowindow,/obj/item/weapon/beach_ball/holoball/dodgeball,/turf/simulated/floor/holofloor{dir = 5; icon_state = "green"},/area/holodeck/source_boxingcourt)
"dwC" = (/obj/structure/table,/obj/item/device/radio/off,/turf/simulated/shuttle/floor,/area/centcom/evac)
"dwD" = (/obj/structure/table,/obj/item/device/radio/off,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship)
"dwE" = (/obj/structure/table,/obj/item/device/radio/off,/turf/simulated/floor/airless,/area/tcommsat/chamber)
+"dwF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/assembly/chargebay)
"dwG" = (/obj/structure/window/reinforced,/obj/machinery/door_control{id = "xenobio6"; name = "Containment Blast Doors"; pixel_x = 24; pixel_y = 24; req_access_txt = "55"},/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/toxins/xenobiology)
"dwH" = (/obj/machinery/light{dir = 1},/obj/machinery/door_control{id = "xenobio1"; name = "Containment Blast Doors"; pixel_x = -24; pixel_y = 24; req_access_txt = "55"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
"dwI" = (/obj/structure/disposaloutlet,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating/airless,/area)
@@ -9461,6 +9468,8 @@
"dAd" = (/obj/machinery/requests_console{department = "Atmospherics"; departmentType = 4; name = "Atmos RC"; pixel_x = 30; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple{color = "red"; icon_state = "intact-r"; level = 2},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/storage)
"dAe" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"})
"dAf" = (/obj/machinery/power/apc{cell_type = 10000; dir = 8; name = "Atmospherics APC"; pixel_x = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage)
+"dAg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/assembly/chargebay)
+"dAh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/assembly/chargebay)
"dAi" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{tag = "icon-warnplate (EAST)"; icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"})
"dAj" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{tag = "icon-warnplate (EAST)"; icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"})
"dAk" = (/obj/structure/table,/obj/item/weapon/book/manual/medical_cloning{pixel_y = 6},/obj/item/weapon/paper,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics_cloning)
@@ -9483,7 +9492,6 @@
"dAB" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline{pixel_x = 7; pixel_y = -3},/obj/item/weapon/reagent_containers/glass/bottle/antitoxin{pixel_x = -4; pixel_y = -3},/obj/item/weapon/reagent_containers/syringe/inaprovaline{pixel_x = 3; pixel_y = -2},/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/turf/simulated/floor{dir = 4; icon_state = "whiteblue"},/area/medical/genetics)
"dAC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"})
"dAD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor,/area/assembly/chargebay)
-"dAE" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/assembly/chargebay)
"dAG" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"dAH" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"dAI" = (/turf/simulated/floor/plating{tag = "icon-warnplate (EAST)"; icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"})
@@ -9685,8 +9693,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaaeaaeawmaaeaaeaaeaaeaadaaaaadaKBbtwaqhbrTaKBaadaaaauKawQawRawQauKawSawTawUawVawWazFawYanharuawVaxaaxbaxcaxdaxeadrakKadraadavUaxfaxgaxhaxiaxjavUaadaYhawdanfayEaZFartaYhancaxoaxwatXaweaxqaCRaxtaxraxuaCRaxvaweatXaxwavfawnawoaoaaoaaoaaoaaoaawraxAaxBaxCaxDaxEanyafcayWayYazmaygaxJaryazeazfanyaqoazeazganyazdazeazhanyaovazXanyanyaxHanyanyaxTameaxIapoaxSarNanAaxZanZayaaxYauHaycaycaydayeayfayeaooayhayiayjaykaaaaaaaadaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaeaadaaeaadaadaaeaaeaadaadaKBaKBbMeaqhaKBaKBaaaaaaavLawQawQawQaylaymaynaynayoaypayqayramgaqyaqEaqzaywayxayyayzadrakKadraaaavUayAayBasfaxiayDavUaaaaYhasSamwaxQaybatkaYhayIaxXatXatXawGawqatXawlawkawjatXawiawhatXatXaytatZayPatxayRaySayRayRayRayTapeayUayVatGaubauuauOavbavravsaxJanyavuaxJanyanyawwaxJanyanyawxaxJanyayCayvazjauvazlauzaxFawEawyaxGavAavAarNaDvazrazsaztanraqPazwazxazyazzamOaDxamTazCayiayjazDaaaaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaeaaeaaeaaEaaaaadaadaadaKBaKBbHMbHMaqhafUaaaaaaaaaauKawRawRawRauKazGazHazIazJaypaynaroakyarfawVazNazOazPazQazRadrakKadraadazSazTazUazVazWauwavUaadaYhaqsaqtaxQaqnanRaYhaAdatWatXatXawgawfavmatXatXatXauZavdavaatXatXaAlawnaAmarsaAoaApaAoaAqaAoaAraAraAsaAtaAraqBarhasCaBKasTatrarpbfuaBOaBNaBKafbaBOaBNaBKaBLaBOaBNaBKbfZatBatzatEatCaknaukaulameaumawpaAHarNauDaAJaoGawMaqiazDaAMaANaAOaAPaLfasRaASaATayiayjaAUaAVaadaAWaaaaaaaaaaaaaAWaaaaaaaAWaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaEbmNaAZbmNaakaaaaadaaaaadaKBafVarnbGxaqhaKBaKBaadaaaavLaBaaBbaBcavLaBdavQavRawVaBfaynaBgakyaBhawVaBiaBjaBkaBlbtbadrakKadraaaaBnavUaBoaBpaBoavUavUaaaaYhbggbgHbgjbgcbgfaYhayIaEhaEgaEgaEjaElatXatXaEmatXatXawqaFqavcavcaCTaEfaCSaoaaoaaBDaBEaoaaBFaBGaBGbeTaBGaBHanybFibEBamebDMbDLameamebDKameamebngazbameameamebDKameameaAFaxTavGbGwbGsbGsavvavGameaumbFjbfjarNaBZaAJaAKawMaCabtabnhaCdaAObfvasPasPaCfasPasPaCgbeQaCiaadaaaaaaaaaaaaaaaaCjaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaAXbmNbJAbmNaadaadaadaadaadaKBbrTbrTbrTarVbaQaKBaaaaaaaCmauJaCnauJaCoaaaaadaadaCpaCqaCraCsbgGaCuawVbglbgmaCxaCyaCzadrbIUadraaabbxaaabgobgnbgoaaaaadaaaaYhbhCbgqbgpbhsbhFaYhayIatWaEeatXaweaJBaCRaFraGTaJFaCRaxsaweatXaCUavfawnawobgTaCWaCWaCWaCWaCWaCWaCWaCZaCZaCZanybhybhzaDcbqhbpRaDcbntbghaDgaDcbnlaDhaDcbhoaDcbgdaDjaDjaDkaDlaDmbIjbIybIebIibHWbIdbHVbgiaBYarNbgFaDwbgDbgkbgeasPaDAaDBaAOaDCasPaDDaDEaDFbqvaycaDHazDaadaaaaaaaadaadaadaadaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaEbmNaAZbmNaakaaaaadaaaaadaKBafVarnbGxaqhaKBaKBaadaaaavLaBaaBbaBcavLaBdavQavRawVaBfaynaBgakyaBhawVaBiaBjaBkaBlbtbadrakKadraaaaBnavUaBoaBpaBoavUavUaaaaYhbggbgHbgjbgcbgfaYhayIaEhaEgaEgaEjbqpatXatXbvlatXatXbycaFqavcavcaCTaEfaCSaoaaoaaBDaBEaoaaBFaBGaBGbeTaBGaBHanybFibEBamebDMbDLameamebDKameamebngazbameameamebDKameameaAFaxTavGbGwbGsbGsavvavGameaumbFjbfjarNaBZaAJaAKawMaCabtabnhaCdaAObfvasPasPaCfasPasPaCgbeQaCiaadaaaaaaaaaaaaaaaaCjaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaAXbmNbJAbmNaadaadaadaadaadaKBbrTbrTbrTarVbaQaKBaaaaaaaCmauJaCnauJaCoaaaaadaadaCpaCqaCraCsbgGaCuawVbglbgmaCxaCyaCzadrbIUadraaabbxaaabgobgnbgoaaaaadaaaaYhbhCbgqbgpbhsbhFaYhayIatWaEeatXaweaJBaCRbBfbBgbBpaCRaxsaweatXaCUavfawnawobgTaCWaCWaCWaCWaCWaCWaCWaCZaCZaCZanybhybhzaDcbqhbpRaDcbntbghaDgaDcbnlaDhaDcbhoaDcbgdaDjaDjaDkaDlaDmbIjbIybIebIibHWbIdbHVbgiaBYarNbgFaDwbgDbgkbgeasPaDAaDBaAOaDCasPaDDaDEaDFbqvaycaDHazDaadaaaaaaaadaadaadaadaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaAXbmNaAZbmNbmNaDIaDJaDKbmNaKBaKBaKBaKBbrTaqhaKBaadaaaaaaaaaaaaaaaaaaaaaaadaadaDLaDMaDNbjoaDPbjpawVbihaFeaFfaFfaFfadrbfWadrbdMbhJbhIbhLbhKbhTbhSbjnbjmaYhblabhPbhObhGbkUaYhayIatWaEnatXatXayKaEiaweaJMaJIaEkaJLatXatXaEnavfawnawobgTaCWbkTaEpbtxaEraEsbkvaCZaEubnvaCZanyanyanyaCZbtraCZaCZbaabaabaabnubaabaabhEbaabaaaEDaEDbtqbiobjwaEDaEDaEDaEDbhAasPasPasPasPasPasPbtmbgUbtpasPasPbgWaDBaAOaENaEOaEPaEQaoGaERaESawMazDaadaAWaadaadaaeaaeaaeaadaETaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbmNbmNaEUbJJaEWaCkaCkaCkaEXbJFaEYaEZaKBaKBaqhaKBaadaFaaFaaFaaFaaFaaFaaFaaaaaadawVawVawVblgbmIawVawVbmLblmblHblVbpfbkKbhhbkfbpebjBbjAbbcbjzbaXbkRbkPbkNaYhaYhbkMbkLaYhaYhaYhaLTatWatXatXatXatXatXatXaLVatXatXatXatXatXaFsayOatZaFtaFuaFuaFvaFwaFwaFxaFyaFzaCZbnwbnxboHboCbpcbpbbpdbtDbubaCZbjsbjrbjubnEbaabjvbjxaZCbaaaEDbJCaFSaFTaFUaFVbjqaEDaEDbJBasPaFYaFZaGaasPaGbaGcbhgaGeaGfasPaGgaGhaAOaGiasPbhfaGkaGlaGmaGnaGoazDaadaaaaaaaadaGpaGqaaeaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbmNaEUaEUaGraCkaCkaCkaCkaCkaCkaGsaEUaGtaKBaqhafUaadaFaaFaaFaaFaaFaaFaaFaaaaaadaGubaWbsebaVbaybrGbbUbaxbaTbaUbaRbjHbbjbbibskbkWbbnbbmbslbbrbbbbbabbdbbcbbcbdtbbhbdvbsjbcPbcVbddatWaFsaadaGWaGXaGYaGZaGYaHaaGYaHbaGWaadaFsavfawnawoaCWaHdaHeaHeaHeaHeaHeaZXaCZbjFbjGaICbjybjtbjtbjdbjbaIHaCZbaabaabcEbjEaZHaZGbjDaZCbaaaHvaHwaHxaHyaHzaHAaHBaHCaEDatJasPaHDaHEaHFaHGaHHaDBbbQbbPbbLaHJaHKaHLaHMaATaHNaHOaHPaHQaHRaHSawMazDaadaaaaHTaadaaeaaeaaeaadaadaAWaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -9695,58 +9703,58 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaKqaCkaCkaKraCkaCkaCkaCkaCkaCkaCkaCkaKBaKBaqhaKBaadaFaaFaaFaaFaaFaaFaaFaaKsaKtaKsaKuaJnaKvaKvaKwaKvaIebeKbeLbftaKAadradradradradraQWaKBaaaaaaaadaaaaJzaKCbfsaKEbInaKGaKHaJzaKIaxXaFsaadaKJaKKaGYaJGaJHaJGaGYaKLaFsaadaFsbezawnawobswaIxaIyaIybsGaIyaIyaKMaCZaNuaIFaIFbmWaNxbnabnbaIGbneaCZbctbeCbeEbeDbeGbeFbeHbcEbexaLaaLbaKaaKbaKcaKdaKeaLcaEDatJasPaKgaKgaKhasPbfebfobbPbeMbfpaKlaHRaAKaAObsvaLfbfqaLhaATayiayjaAUaLiaadaAWaaaaaaaAWaaaaaaaaaaaaaAWaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLjaLkaLlaadaLmaCkaCkaCkaCkaCkaCkaLnaCkaCkaCkaEXaKBaUDaqhaKBaadaFaaFaaFaaFaaFaaFaaFaaLoaHWaLpaLqaJnaLraKuaLsaLtaLubBAbBIbBkbBrbqrbqnbqJbqHadraQWaLCaadbBLbpQbCdbBPaLHbfsaLIaLJaLKbukaLMaLNaLOaFsaadaFsaFsaLPaLQaLRaGYaLSaFsaFsaadaFsavfawnaAmbqKaNrbmQaJOaJOaJOaJOaLZbANaMbaMdaMdbrCbrAbrbbqYaMibDWaCZbaabaabqLbdwbaabdxbDdbCCbaaaINaIOaMqaMraMsaMtaKeaMuaEDatJasPaKgaKhaKhasPbsgbsdbsibshbuuaMzaMAbALaMCaMDaMDaMDaMEaMFayiaMGazDaaaaadaadaadaadaadaadaadaadaadaadaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiZaMIaMJaMIajcbmNaCkaCkaCkaCkaCkaCkaCkaCkaCkaCkaMMaKBbwqbwraKBaadaFaaFaaFaaFaaFaaFaaFaaKsaMOaKsaKuaJnaKvaKvaKwaKvaIebcHbEobEsaMRbtKbsUbsobsnadraQWaMWaaabFZbFYbFKbFFaNbbfsaNcaNdaNebEzaJzbsmatWaNnbDoaNnaFsaFsaNkaNlaNkaFsaFsaNnbDoaNnavfawnaRnbswbuPaIyaIyaIyaIyaIyaNsaCZbtMaJSaNvbtLaNxaNxbnbaJVaNyaCZbHhbGDbqLbsCbDBbGDbaabHbbaaaNDaNEaNFaNGaNHaNIaNJaNKaEDatJarNaNLaNLaNLaNLbBdbuTauHbuFbtHaNQaNRbuUaNTaNUaNVaNWaNXayhayiayjaNYaaaaaaaadaaaaaaaaaaaaaadaaaaaaaNZaaaaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajCaMIaObaMIajCbmNaJiaEUaCkaCkaCkaCkaCkaCkaCkaEUaOcaKBaqhbrTaKBaadaFaaFaaFaaFaaFaaFaaFacdhaOecdhaOfaJnaKvaSpaSqaSraSsbKgaIebJraKAbvPbvzaOnbwuadraQWaMWaadbFZbIRbITbISaOtbveaLIbIGaLIbYhaJzbJoaOyaSDaadaNnaSEaFsaFsaSFaFsaFsaRoaNnaadaSDbqDawnawoaCWbvNaOHaOIaOIbwIaOKbvLaCZbwJaIFbwNbwLaKRbtLbwOaJVaOQaCZbaabaabwKbKjbaabKmbaabKlbaaaEDaOVaOWaOXaOYaOZaPaaEDaEDatJarNaPbaPcaPdaPebBhbuVasPasPasPaPhaPibwvaPkbwtasPaPmaPnawMawNaPoasPbtCaadaadaaaaaaaaaaaaaadaaaaaaaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaQNaPqaPraPsbmNbmNaCkaEUaEUaEUaEUaCkaCkaCkaCkaEUaEUaKBarVagvafUaadaFaaFaaFaaFaaFaaFaaFaaPtaHWaPuaPvaJnaKvaKvaKwaKvaIebKgaIebygaKAbyfbyebydbxcaKBbtGaMWaaabFZbKwbKvbKuaPKbfsaPMaPNaPOaLIaJzaTPatWbDoaadbqEaPUaPVaPWaPXaTUaPZaTTbqEaadbDoavfawnaQcaCWaQdaQeaQfaQfaQgaNsaQhaCZbzFbztbztbzsbzwbzvbzBbzzbzDbzCbyibyhbyjbHmbaabaabaabaabaaaEDaEDaQraEDaEDaEDaEDaEDaQsatJarNaNLaQtaQubzxbzfbBaasPbxRbzuaQBbwabzjaQEbxQasPbxPaQHavEasPasPasPaadaadauBaQIauBauBauBauBauBauBauBauBbtJaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajCaMIaObaMIajCbmNaJiaEUaCkaCkaCkaCkaCkaCkaCkaEUaOcaKBaqhbrTaKBaadaFaaFaaFaaFaaFaaFaaFacdhaOecdhaOfaJnaKvaSpaSqaSraSsbKgaIebJraKAbvPbvzaOnbwuadraQWaMWaadbFZbIRbITbISaOtbveaLIbIGaLIbYhaJzbJoaOyaSDaadaNnbBtaFsaFsaSFaFsaFsaRoaNnaadaSDbqDawnawoaCWbvNaOHaOIaOIbwIaOKbvLaCZbwJaIFbwNbwLaKRbtLbwOaJVaOQaCZbaabaabwKbKjbaabKmbaabKlbaaaEDaOVaOWaOXaOYaOZaPaaEDaEDatJarNaPbaPcaPdaPebBhbuVasPasPasPaPhaPibwvaPkbwtasPaPmaPnawMawNaPoasPbtCaadaadaaaaaaaaaaaaaadaaaaaaaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaQNaPqaPraPsbmNbmNaCkaEUaEUaEUaEUaCkaCkaCkaCkaEUaEUaKBarVagvafUaadaFaaFaaFaaFaaFaaFaaFaaPtaHWaPuaPvaJnaKvaKvaKwaKvaIebKgaIebygaKAbyfbyebydbxcaKBbtGaMWaaabFZbKwbKvbKuaPKbfsaPMaPNaPOaLIaJzaTPatWbDoaadbqEbBvaPVaPWaPXaTUaPZaTTbqEaadbDoavfawnaQcaCWaQdaQeaQfaQfaQgaNsaQhaCZbzFbztbztbzsbzwbzvbzBbzzbzDbzCbyibyhbyjbHmbaabaabaabaabaaaEDaEDaQraEDaEDaEDaEDaEDaQsatJarNaNLaQtaQubzxbzfbBaasPbxRbzuaQBbwabzjaQEbxQasPbxPaQHavEasPasPasPaadaadauBaQIauBauBauBauBauBauBauBauBbtJaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaQNaQKbzWaQMbmNaEUbueaEUaQPaEXaEXaEUaEUaEUbuwaQRbueaKBasdbKdaKBaadaFaaFaaFaaFaaFaaFaaFaaaaaaabpMaPvaQTaJoaJpbnIaSrbmXbopbozbKKaQVaQVaQVaQVaQVaKBaQWaQXaadbpTbpQbpVbpUaRbbhjbhMbhxbikaLIaJzaJAatWaSDaadaSDaRiaRjaRgaLWaNgaNiaNjaSDaadaSDavfawnawoaCWaRpaRqaRrbliaIxaNsaQhaCZblhbpWaRwaRxbphbuHaRybuGaRAaCZbqkblJbplbqcbqbbKLaRHasMasMasMasMbLbasMaRJasMbLaasMasMbimaRLaNLaRMaRNaROaRPaRQasPbvcaRTaRUblRbinbipaRYasPbiqbqRbqNauybLcauyaScauBbirauBatLatMaSfatMatOauBbiratPauHaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaSgaQNaQNaShaSiaQNaQNaQNbvfaQNblSblSblSblSaQNaQNbvnaQNaQNaQNaSoaQNaadaFaaFaaFaaFaaFaaFaaFaaaaaadaZpbsfaJnaKvaKvaKwaKvaIeaJuaIebvgaQVbmObmfaWcaSyaKBaQWaKBaaaaaaaadaaaaJzaSzbisaSBaJzaJzaJzaJzaJAatWaSDbDoaSDaSDaSDaNmaNpaOAaSDaSDaSDbDoaSDbwMbwRbvsaCWaCWaCWaCWaCWaSJaSKaSLaCZaRubitaRwaSNbsRbvraCZaCZaCZaCZbaabaabaabaabaaaQsaSQaQsaSRaUobwTaQsaQsbiBarNbivarNarNbnBaSZaNLaTaaTbaTcaTdaTeasPaTfaTgbwSaPiaTibiuaTkaTlaTlaTlaTlaTmaDQasPaTnatMaToatMauGasPasPasPaTnatMauGatPasPaadaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaTpbtybtfbthbtibtjaTsaTtaTsaTsaTsaTsaTuaTsaTvaTwaTxaTyaTzaQNaadaaaaFaaFaaFaaFaaFaaaaaaaaadaZpbuKaJnaKvaKvaKwaKvaIeaTAbumbujaTDaTEaTFaTGaTHaKBaQWaKBaKBaKBaKBaKBaKBaKBaKBaKBaJzbuhbuiaJzaTJaTKaZLaTMaTNbugaZLaOCaTQaOBaZLbdabidbltaPSaTVaTWaTXbxBbuMbLGbxSaCWbswbuObswaCZaCZaCZaCZbAybzZaCZaCZbwybvQbmyaUhbLIaUiaUibNBaUkaUlaUmaUnaUobOoaUqbOebiCbiEbjCbjRbjXbkeaUwaNLbwVbwYbwZbxuaUBasPblkbmHbmHaUEasPaPkbkqaTlaODaPGaPpaTmasPasPasPasPasPasPasPasPaDUasPasPasPasPasPasQaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaULbwBbPDaUNaUMaUMaUMaUMaUOaQOaQOaUPaUMaUMaUMaUOaQOaUQaURaQNaadaadaadaaaaaaaaaaaaaaaaadaadaZpbxlaJnaKvbVqbxaaGDbxgaGDaUWbqmbqqbqlbqjbqdaVcaKBbPBbqeboZboZboZbpzboZbpsbNHboYboeaVjbwXbmAaVmaVnaVoaVkaVkaVkbppaQbaVsaPYaVtaVkaVuaVvaRhaVxaVyaVzaVAaVBaVCaVDaVEaVDaVFaVDaVGaVDaVHbzqbpXbzrbtcbzYbzYbATaVLaVMaVMaVMaVMaVNaVMaVMavAavAavAavAaVOavAarNbtdbtsbufarNbttarNaNLbqTbAzbqMbAzaNLasPasPasPasPasPbqibsbbqIblFbeSaWdaWeaTmbcebcebcebcebcebcebcebcebcebcebcebPRaszbPRaszaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSgaAXaQNaWgaQNaQNaQNaTpaWhaTpaWiaQOaQOaWjaTpaWhaTpaWkaWlaWmaWnaKBaKBaKBaKBaWpaWqaWraKBaKBaKBaKBaZpaMmaOiaKvaKvaIgaKvaOkaOpaOmaOlaQVaQVaQVaQVaWzaKBaOhaKBaKBayHayHaKSayHayHayHayHaWCaWDaOgaWEaWFaWGaWHaWEaWEaWEaKQaWWaWLaWKaWKaWKaWMaWNaAiaWPaWQaWRaWSaWTaWKaWKaWKaWKaWUaWKaWKaWKaWVaWKaWWaWKaWXaWKaWKaWYaVZaVMaXaaXbaSnaXdaOaaVMaXfaXgavAaXhbjcavAarNarNarNarNarNbhvaXjaXkaXlaXmaMgaSjaYZaSmaNMaRlaVPaRmaXvaVlaXxaXyaXzaXAaXBaTmbceaTmaTmaTmaTmaTmaTmaTmaNCaTmaTmaTmaTmbhuaTmaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaaaaNBaPBaXEbeNaXFbhtaXHaVgaXIaXFbeNaXJaXKaQNaXLaXMaBqanFaXOaXOaXOaXOaXOaXOaXPbffaXRaZpaJWaKzaJXaLdaKPaSeaNqaHgaLeaLFaHgaJyaJNaHgaMnaMNaMPaMHaMKayHaJvaIUaJtaJRaJTayHaYoaMSaUCaUsaUsaUgaKiaJUaUFaUsaKOaAhaUgaUsaUsaUsaUsaUsaUsaUgaYyaSYaSYaSYaSYaSYaSYaSYaSYaSYaSXaTOaTjaSYaUtaSXaUuaSYaTOaYGaRkaVMaYJaYKaUraYJaYLaVMaXfaYMaYNaYOaXiavAaSaaRSaRFavAaYSaSdaTmaSbaRZaRXaRWaYXaYYaSWaSWaSWaSWaSWaSWaSUaSVaSxaSAaSkaZfaTmaMlaTmaadaadaadaadaadaaaaadaadaadaaaaTmaszaTmaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaadaaaaaaaaaaaaaULaWhaZhaSlaSlaSlaSlaZiaWhaULaaaaQNaZjaZkaZlaZlaZlaZlaZlaZlaZlaZlaZmaNaaKBaHgaHgaHIaHIaHIaHgaHgaPQaHgaNfaPJaMNaOxaQqaQyaQCaGRaOUaFhaOjayHayHaMUaFBayHayHayHaQSaYpbRAaZNaZNaZNaZNaZNaZLaZLaMTaZLaYgaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXpaZTaZTaZUaZTaZTaZTaZTaZTaZTaEMaYpaRkaVMaYJaSOaSSbbJaXeaVMaXfaXiavAbacbadavAbbMaThaUnavAbkYbkZaXuaXCbaiaXXbakaMZbambaobaobapbaqbarbarbasaZbbatbaubavbawaTmaPCaTmaTmajCajcaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaAbaBbaCbaBbaDbaBbaBbaDbaBbaCbaEbaFaQNaZjaSHbaHaSIbaJbaKaSwbaMaSGaZlaZmbaObaPbktaOvaOwaOvaOvaOMaOvbkxaHgaMxaOLaOzaPyaPzaMXaPxaOTaOUaKWaKYaLyaLzaLvaLwaKZaLgayHaWCaYpaXoaZNaMfaMeaMcaLBaZLaMkaMhaTLaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaZTaDzbbybbzbbAbiebbCaDTaZTaWabbFbbGaVMaOqaYJaStaOrbbKaVMavAaWZavAavAavAavAaUqaQsbbNavAbbOavAaTmaTmaTmaWwbbRaMvbbTaMpbbVaYZbbWbbXbbYbbZbcabcbbbYbccbcdaTmbjjbcfbcgbchbchbciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaAbaEbaBbcjbckbckbclbcmbcnbcobcpbckbckbcqbcraTpaZjbcsaGVaInbcvbcwbcxbcybczbcAbaeaZxaCCaIbaIbaIaaHuaHqaHgaHgaHgaHgaGPaHsaHraGNaGOaGHaGQaFCaFDaHraHfayHaFoaFAaFBayHayHayHbcUbbFaEGaEIaEHaFlaEJaFmaZLbbqaEvaEFaadaadbdeaIjbdfbdjaZPbdhbdibdjaZPbdhbdkbdkbdlaadaadaZTaCBbdnbdobdpbdqbdrbdsaZTaIpaYpaHmaVMaVMaJQaHUaHnaVMaVMbkbaGxaGAbdBbdCavAavAaYEavAavAbdEaImaGEaGyaTmaIkaGBaFIbdKaGwaTmaGCbdNaAgbdPbdQbdRbdSbdTbdUbdVbdWaYDaZobdYbdZbeabebaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcqbecbedbeebckbefbckbefbckbefbckbefbckbegbehaXFaZjaFcaZlaFGbekbelbembenaFHaZlaXQaYBberaFQaFPaFXaFWaGdaFOaFKaFEaFMaGjaGzaGvaFjaFkaVYaFgaFnaFpaFhaFiayHayZaxmayFazZaAcayHaWCaYpaCIaZNaCFaEdaEcaDfaZLaAEaAjaTLaadaadbeVaKxaEEaDdaBebfaaxlbfcaAYaBmaECaJxbfhaadaadaZTbfiaClbfkbflbdqbbCaDVaZTaEMbfnaFbaDYbfAbfxbfybfwbfAbfAbfAbfybfAbfAbfAaDGbfAbfAaxkayubfwbfxbfAbfxaxpaDRbfAbfBbfCaEKbfEaTmaTmbfFaTmaTmbfGbfHbfIaELbfKbfLbcebcebfNbchbchbfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfPbckbckbaCbckbefbckbefbfQbefbckbefbckbegbehaXFaQQaQpaZlbfSaQnbfUbfVbfUbaHbaHarMbfXbfYaHgaKVaKUaKTaReaKNaKFaKDaHgaJgaKyaRcaGNaJwaHgaLGaLxaRKaRzaLEayHayHaIMayHayHayHayHaWCaYpbRAaIDaIBaIlaIiaIAaIzaIhaHpaTLaZPbgyaZPaOEbgsbgwbgubgvbgtbgsbgubgwbgvaNAaZPbgyaZPaZTaYtaYtaYtaNobgAbgBbgCaZTaPlbgEaPjaPPbgJbgIbgJbgKbgJbgJbgLbgMbgMbgNbgMbgMbgMbgMaHoaQmbgObgPbgQbgRbgSaQFaQDaQvbgVaQwbgXbgYbgZbhabhbbgXaTmbhcbhdaQxbfFaQzaQAaQGbhiajCaDZaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcqbhkbedbeebckbefbckbefbckbefbckbefbckbegbehaXFbhlbhmbhnaPfbhpbhqbhqbhraMQaPwbcCbepbhwaHgaIJaILaIKaNPaIoaIIaIwaHgaHcaHtaNNaPgaIfaHgaZqaJPaNSaZqaHgayHaGKaGFaGIaFJaFLayHaWCaYpaHlaZNaHkaHjaHiaHhaGSaGMaGLaKobhUbqxaPHaNhbgubgubgubgubhZbgubgubgubguaCEaBCaMBaZPaLAaJYaMabifbigaKjbiibijaZTaKmbilaKnaLDbiwbiwbiAbixbiAaMYaKXaNtbiwbixbiwbiAbiwaLLaFFaOGaOFbiyaNObiwbiybiAaMoaMybiDaMwbgXbiFbiGbiHbiIbiJbgXbgXbiKbiLbiMbiNbiObiPbiQbiRbiSbgXbgXbgXaadaaaaaaaadaaaaaaaadaadaadaaaaaEaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiTbiUbaBbcjbckbckbiVbckbiWbiXbckbiYbckbcqbiZaULaZjbjabmsblLbmmbjebjfbjgbmMbmRbmPbjkbjlaHgaZraZqaZgbabaHgaHgaHgaHgaHgaHgaHgblxaHgaHgaYjaYkaZRaZSaYqayHayHayHayHaZJayHayHblBaYpaZVbleblebleblebleblebleblebleaZPaZOaZMbhBbjMbmSbjIbhVbjKbjIbjIbjLbjMbjNbjObjPaZPaZTaYtaYtaYtbjQaYtaYtaYtaZTbmTaYpbahbjSaWxbjTbjUbjVaVWbjSbagbjSbjSaVibjSbaSaVbbjSbbebjSbjSbkcaVabkbaUZbkgbkgbkhbkibkjbkkbklbkmbknbkobkpaUvbkrbksbmdbkuaVRbkwbtubkybkzbkAbkBbkCbgXaadaadaadaadaadaadaadaaaaaEaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiTbaBbaCbaBbaDbaBbaBbaDbaBbaCbiUbkDaQNbkEbkFbkGaQNbkHbkHbkIbkHbkJaQNaZcaXYaZdbjZbkVaXZaYbaZebkObkXaYcaYdaXUaYebkXaYWbjJbkObkQaXraZabkVaWAaZsbkXaXUaYIaZybkXbjYblbblcaWJbleaWIaXSaXGbleaXwaXWaXTbtIaPLblnbloblpblqbeoblsaUYblublvblwblrblqblyblzblAaPTaZTblCblDblEbigaPRaYtbljaZTaZQaYpblIbjSbjSbjSbjSbjSbjWbjSaUAbjSbnzblKblfaZIblNaUzaZDblObjSaWBbkdbkdbafbkgbkgblTbkiblUaUvblWblXblYblZbmabmbbmcbksbmdbmeaUdbmgbmhblXbmibmjbmkbmlbkabmnbmobmobmobmobmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTpaWhbmpaSlaSlaSlaSlbmqaWhaTpaaaaQNaZjbmrbkGaQNbmtbtzbmvbmwbmxaQNbooaZvboIboGboFaBwbcBbbEbmEbmCbmFbmGbmCbmCbmCaJCboMbmCbmBbmDaZwbmJbmKbmKbmKbmKbcZbcWbmKboXbBebBfbdcbpHbdLbbfbbfbdbbbfbbfbeUbtIaQYblqbmYbmZbeRbfbbncbndblGbndbnfboPboybnibnjbnkaSCaZTaBxbnnbnobnpbnqaZTaZTaZTaEMbnrbnsbjSbfTbfrbfzbgabgbbjSbnybjSbrnbhDbgxbhRbnAbnAaTCaZAbjSahrbkdbalaZEbgrbkgbnFbnGbnHaZBbnJblXbnKbnLbnMbbSbnObnPbnQbnRaUdbnSbnTbnUbnVbnWbnXbnYbqpboabobbocbodbodbmoaadaaaaRDaaaaRCaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaSgaPBaQNaXFbzWaXFbajbofbogbohaXFbzWboibojaQNaZjbkFbkGaQNbolbombmwbmwbonaQNbpPaZtboqbmVbmUbvhbotbosbvGbzbbySbosbosbosboxaIqbnCbosbosbvGbvhbySbosbosbosbnNboubosbosbnDboAboBbbsblebbpbblbbfbbkbbfbbvbbubtIbtIboJboKboLboLboLbjhboNbndboObjiboLboLboLboQboRaZPaZTaQaboTboUboVboWaZTbnZaXNbaYbpabnsbjSbbwaRvbnAbbBbbIbpgaWybpibpjbnAbnAbnAbpkbnAaTCblObjSbpmbkdbpnbpobcubkgbpqbprbnHaUvaYmbptbpubpvbpwbgXaQibksbmdbpyaYfbpAbpBbpCbpDbpEbpFbpGbfJbmnbpIbpJbodbpKbmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaadaadaQNaULaWhaULaWiaQOaQOaWjaULaWhaULbpLbrsbpNbkFbkGaQNbpObpObkIbpObkJaQNaSvaSubduaKBaKBbovaKBbdgbcXbcSbcJbdgbcXbpYaKBaMjbqabaIbazbaGbaLbaNbaIbazbaGbqabaIbazbaGbqabqgbboaQlaRfaQoaTqaSTaTBaSTaPEaPDaQjaPFaQkbqsbqtbbgbqtbqtbquaTrbqwboLboLbdyboLbqxbqyaZTbqzaRBbqAbdqbqBbqCaZTbdXaYtaEMbqFbqGbjSaUybnAaUxaTYaUabjSaREbjSaSMbnAbnAbqObqPbqQaTCaRabjSbnBbkdbkdaSPbkdbkgbqUbqVbqWbgXaRdaRsbqZbraaRtbgXbrcbrdbrebrfbrgbrhbnUbribrjbrkbrlbrmbeibrobrpbrqbodbodbmoaadaacaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTpaQUbrsbrsbrtaQOaQObrubrsbrsbrvbrwbrxbrybrzaXVaYaaYlbrDbrEbrFaYnaXqaXnbrJbrKaKBbrLbrMaKBaBraAkbrPbrQaUVaUUbpYbrSapvbqabrUbrVbrWbrXbrYbrZbrVbsaaYibscbrVbwFaXcbqgaYpbCxbleaONaOSaOPbleaOOaOoaNwaMVbtIaOJbspboLbsqaZubssbssbssaYRaYQaZnaYUboLbsxbsyaZTbszbsAbsBaZzbsDbsEbsFaYxaYtaEMbqFbsHbjSbjSbjSbjSbjSbjSbjSaDWbjSbjSaPIaRvbnAbnAbnAaPAbsKbjSbsLbsMbkdbkdbkdbkgbsNbsObsPbsQbsQbsQbsSbsQbsQbsTbmcbsVbmjbsWaYraYsaZYaZWaZYaZWaZZaZWbanbmnbmobmobmobmobmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaULaUbaUMaUcaUfaUeaUeaUTaUeaUSbtkbtgbtlbfMaUIbtnaPfbtobqfbqSbpxbpSbfRbrIbrHbtvaKBbtwbrBaKBbrObrNbtAbrQbtBbmubpYaYCaGGbqaaYFbrXbrXbrXbrYbrXbrXbrXbrXbrXbrXaUXbaLbqgaYpbRAaWvaVTaVSaVQbleblebeXbeWaVIblebtNbtObtPbssbndbndbtQbtRbtSbtTbtTbtUbtVbtWbtXbtYbdqbtZbuabgzbucbudaZTbhHaYtaYPbqFbqGbsIaVKaYTaVqaVXbhNaVUaVVaWfbjSbhXbhWbhWbhWbhWbhWbhYbjSavAbnBaQsaQsbrRbuobupbuqburbupbupbusbutaYVbuvbiabuxbuybuzbuAbuAbuBbuCbuDbnVbuEbizbicbibboabobbuIbuJbuJbmoaadaadaWsaadaWuaadaWtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQNaQNaWgaQNaQNbuNbojaQNbuNbojaQNaQNaQQbejbuQbuQbuQbuQbuQbuQbuQbuRbuQaNzaKBaKBaYuaYvaWoaWoaKBaKBaKBbtBbtBbrPbrQbuWbtBbpYbpYaZmbqabuXbrXbrXbuYbuZbvabvabvabvabvabvabvbbeYboAbvdaYwbleaVJaVpaVebleaUHaUHaUHaUGblebvibvjbqtbvkbvlbvmbfdbvobvpbvqbfmbfgboLbvtbvuaZTbvvbvwbdqbvxbdqbvyaZTbeZaYtaEMbqFbqGbsIbulbulbulbulbulbulbvAaTSbvCbvBbvBbvBbvBbvBbvBbvDbvEbvFbowbvHbvHbvIarNbvJbvKaTIbvMaRRbvOaYzaYAbvRbiNbvSbvTbvUblXbvVbvWbvXbvYblXbvZaRVbwbbfJbmnbpIbwcbwdbwebmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfdzWbwgbwhaZjbwibuQbwjbwkbwlbwmbwnbwobwpbuQdzVbrTbwsaWocfMbNCaWobwwbwxbKEbwzbwAbrPbrQbwzbwAbMmbpYaZmbqabwCbwCbwCbrYbtEbwDbwDbwDbwEbwFbwGbwHaXcbqgaYpaZKblebleblebleblecbOcbJcbNcbFblebwPbwQaZPaZPaZPcgVcgWcgWcgWcgXaZPaZPaZPbwUbwPaZTaZTbtYaZTaZTaZTaZUaZTcgSaYtbwWbqFbGOcgUcjRbxbbxbbxbcbPbxbbxdbxebxebxebxebxebxebxebxebxfckoavAaUoaQsaQsbxharNbvJbxibxjbxkcfebxmbxncjTbxpbxqbxrbxsbxtcjVbxvbxwbxxbxyblXbvZcfibxAcegbrobrpbxCbuJbuJbmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbxDbxEbxFaZjbxGbuQbxHbxIbxHbxJbxKbxHbxLbuQbxMbxNbxOaWobKYbKWaWocepaKBbMlbxUbxVbrPbrQbxUbxVbMjbpYaZmbqabxWbxXbxXbxYbtEbrVbrVbrVbxZbyadCzbybbqacjocbhcbkcbAcaPcaOcbacbgcaPcaOcaPcaTcaZbykbylcjIbynbyobypbypbypbyqbypbymbyrbysbytbyubyvbyobyocjJbywbyxbyybyobyAcfLbyCbyDbnsbyEbyFbulbyGbulbyHbulbyIbulbyJbyKbyLbyLbyLbyLbyLbyKbyMavAdCyaQsaQsbxharNbxpbxpbyPbxpbxpbxpbyQbxpbxpbxqbyRdzUbiJbiJbiJbyTblXbvXblXbvZbyUbwbbfJbmnbmobmobmobmobmoaadaaaaaEaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfcjrdzTcjraZjbyVbuQbyWbxHbxHbyXbyYbyYbyZbzadzSbzcbzdaWocfhbRyaWobzgbzhbKEbzibwAbrPbrQbwzbwAbKDbpYaZmbqacffbwCbwEbzkbzlbzmbznbzobzpbrVbrVcjpbqabycbYobZfbXCbzPbZzbZJbZrbZybWbbWcbVXbVYbWkbWHbzHbzGbZObzIbzIbzJbzKbzIbZObzMbzNbzObzPcaDbZWbzPbzSbzTbzUbzEbzPbzVcftbzXcjwcjtcjHcjxbAabAbbAcbyHbAabAdbAcbAebMibAgbAhbAibKFbAjbAfbAkavAavAavAaQsbxhbZjbxpbAlbAmbAnbxpbAobApccQbxpbArbAsbAtbAubiJbAvbxyblXbxwbAwbAxcelcgRbibboabobbAAbABbACbmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbADbAEbxFbAFbAGbAHbAIbAJbxHbAKbxHbxHdCxbuQcerarXagvaWocesaWoaWoaKBaKBbKzbAPbxVbrPbrQbxUbxVbKybpYaZmbqabARbrVbrVbASbtEbrVbrVbrVcjbbAUbrVcjdbqabAWaYpbCxbSAbSAbUNbUSbUXbSAbSAbBqbBqbTDbUhbBqbBjbBibVjbBlbBmbBnbBobBlbVibBibBjbBibBqbVrbVpbBqbBqbBtclQbBvbBqcfVbBqbBxbBybBzcgMbBBbBCbBDbBCbBEbyKbBFbyKbBGbBHcjhbvBbBKbvBbUybBMbBNavAbKCavAaQsbxhaQsbxpbUAbBRbBSccobBUbBVbUzbxpbArbAsbAtbAubBXbAvbBYblXbxwbAwbvZceibwbbfJbmnbpIbCabCbbCcbmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfdzWaULbwhaZjbyVbuQcmJbCebCfbCgbChbxHbCibuQbAMbCjarVarXdAeaKBcjPcljaQZcOZduNduHduRduUduHbKEduMbpYaZmbqabwCbwCbwCbASbtEbCtbCtbCtbqabqabCubqabqabCvbCwcaVbSAcllckrckIcjYbDQcbicNecvGcvOclmbBqaadbCDcPFbBlbBlbCFbBlbBlcPRbCHaadbBicOKcPCcPDcPEbBqbBqbBqbBqbBqchNbBqclnbCObqGbsIbCPbCQbCRbAebulbCSbyFcnhbVtduXbCVbulbulbCWbsIbsIbCXavAavAavAavAbxhaQsbxpbCYcigcidcimbDccmVcmUbupbiPdAfbDgbAubiJbAvbDhblXbDibAwbvZchBbxAcegbrobrpbDkbABbABbmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQNaMLaWgaPBaQNckJaSlbxFaQNaQNaMLdAbaZjckbbuQbxHbxHbCfbDpbDqbxHbDrbuQbAMaKBaKBaKBaKBaKBbDsbDtckcbONchXciAccncgLbVmccgbOObpYdAccoxbrVbrVbrVbASbtEbrVbsacmnbqabDCbDDbDEbqabqgaYpcaVbSAbDQcgscgxcgCbDQcbicgFcgGcgHcgDcgEaadbDPcjiciJciJbDTciJciJcjKbDVaadchAcgIchgchUcicchRchTcjXcjWbBqbCNbBqckKbEhbEibsIbEjbEjbEjcjqchWbEjbEmbEjbEjbAfbEncmGcmHbEpbsIbEqbErcmFbEtbEuavAbxhbEvbxpchYchYchYciabEybVocfwbxpclibmcdAdbiJbiJbiJbECblXbEDbEEbvZbyUbwbbfJbmnbmobmobmobmobmoaadaadaWtaadaWuaadaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTpaQUbrsbrsbrsbrsbrsbrsbrsbrsbrrbrsbpNchrbuQchxbxHbxHbAKbxHbEHaKBaKBbAMaKBbEIcmhbEKbELbEMbENcfObNkbNnbNobNpbNqbNpbNrbNsbpYaZmbqabETbrUbrVbASbtEbEYbEYbEZbqabFacgibFcbqabqgaYpcaVbSAcdGcefceqcdKceecbiceAcetceuceNbBqcfsbFmcfsbFmbFmbFnbFmbFmcfsbFmcfsbBqcgobGKcfucfYcglcgncfrceObBqbCNbBqcmubqFbqGbVvbEjckabFAbFBbFCbFDbFEclYbEjbEjbEjbEjbEjbEjbsIbFGbFHbFIbFJcfZavAbxharNbxpbFLbFMbFLbxpbxpbxpbxpbxpcejdCAbsVbFPbFQbFRbpAbFSbFTbFUbAxchHchIbibboabobbFWbFXbFXbmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaULbwBaUMaUcciMcihbtgcilbtgbtgbtgcgPckqchkbuQbxHbGabxHbAKbGabGbaKBbGcbGdaKBbGebxTbxTbGfbGgbpYbGhchlcfkbGhbGhbGhbGhaKBckRaKBaZmbqabETcgYbwEbASbtEbqabqabqabqabqabqabqabqabGobbFcfNbSAcbRbFvcbScbTcbicbicbUcbXcckccqbBqdzXdzYbGybGzbGAbGBdAaclGcjlbGFdzZbBqcdlbGKcdccdkbBqccxcdycdrbBqbCNbBqcjGbqFbGOcluchebGRbGSbGTbGUbGVbFEchdbEjbMobGYciTbMnbIzbsIbHcbHdbHebHfbHgavAbxhbMUclFbHibHjbHicfpbHlclEbMUbHocejbmcbHpbHqbHqbHqbrhblXblXblXbvZcfobwbbfJbmnbpIbHsbHtbHubmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQNaTpceQaTpaQNbuNbojaQNbuNbojaQNbXfaQNaQNbuQbxIbHybHzbHAbHzbHBaKBbAMaKBaKBbxTccsccPcdbbpYbpYbHFbHGbESbGXbGhbHJbHKaKBcMVbHMaZmbqacfPbrXbrXbASbXybqabHPbHPbXnbXibHRbHSbqabHTaYpcaVbSAbKsbFvbKkbJPbJQcbibJObGMbJjbIpbBqcNNcNObIfcLFbIgbIfcLLbIfbIhcMqcMUbBqbGJbGKbGLbEabGNbHxbHEbHxbBqbEfbBqbXkbqFbqGbVvcdNbFCcwybXlcdQbFBcceccfbEjbEQbIAbERbHacchavAavAavAbIDbIEbIFavAbxhbMUcdVccabIJccacdOccbcdVbMUbINcejcbjbsVblXblXblXblXblXblXbnTbvZccjbxAcegbrobrpbIPbFXbFXbmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXFbeNaXFaadaaaaaaaaaaaaaadaKBcKlcfnajnaKBaKBaKBaKBaKBaKBaKBaKBcJUbWTbEPbENbDAbIZbJabpYbpYbJbbDzbJdbDybGhcdEcdAaKBbJhbJibUrbqabWobrXbrXbASbtEcdIbrVbrVbJmbJnbwFbJpcdFbqgaYpbWgbSAbDQbFvbGCbGIbDQcbibFtbIobFubFtbBqcKqcLEcxwbJDbJEcbnbJGcyvbJHbJIcyWbBqbEebEFbFrbFsbFpbFqbEdbEcbDZbDYbBqbSzbqFbqGbVvcdpbFCcdecdxcducdtbVwcdzbEjbWybIAbKabKbbKbbKcczXavAbKeavAbKfavAbxhbMUcdOcdOcdOcdOcdOcdOcfmbMUbINcejbKnbsVblXblXbKobKpbKoblXblXbvZbyUbKqbfJbmnbmobmobmobmobmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaULceQaULaadaaaaaaaaaaadaadaKBbrTcwPbKtbKtbKtbKtbKtbKtbKtbKtbKtbKxaKBbCrbxTbxTbxTbxTbDvbKBbDwbDxbCsbCUbVcbKHbKIbQHcwQbHMcwHbOSbKNbKObKPbKQbtEccObrVbKRbJmbwFbrZbJpccNbqgaYpbUjbSAbDQbDSbDUbDRbDQcbibDlbCJbCLbBqbBqcwKcwLbLdbLecvFbLgbLhbLicuhcvycwlbBqbCkbCEbBJbBObBqbBqbBqbBqbBqbCGbBqbSJbqFbqGbOibEjccKccDbKMbKJbOgbLCbLybLzbLAceGbJYceFbLEbLFcubbLHctYbSIctXbLLbLMbMUccdcdOcdOcbZcdOcdOcbYbMUbINcejbLQbsVblXbnTbKobLRbKoblXblXbAxcblccLccMbLVbLWbLXbLYbLYbmoaadaadaWsaadaWuaadaWtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaacnwcnwceEcnycnwbMbbMbaKBcaYaKBbMebxObCMaKBbMgbMhbxTbMkbxTbKAbKBbCpbCqbClbCobGhbMpbMqaKBbMrbrTaQWbqabSFbrXbrXbrXbMtcbWctqbMvbMwceCctWbqabqabAWaYpbSDbSAbSAbSAbBpbSAbSAbSAbBqbBqbBqbBqbBqbMEbMFbMGbMEbMHbMHbMHbMFbMIbMEbMFbBqbBqbBqbBqbBqbBqbBqcekbBtbBqbBgbBqbSzbqFbNWbJUbMNbMNbMNbMNbMNcbzbMPbMNbMNbMNbMNbMNbMNbMNbMNavAbMQbMRbLJbMTbLMaQsbMUcbxcdOcdOcbycdOcdOcbwbMUbMYcejbMZbNablXblXblXblXblXblXblXbvZcaQbwbbUibmnbpIbNdbNebNfbmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaadaaaaaacnwcixdzQcoBcnwaKBaKBaKBbNgaKBaKBaKBaKBaKBciybNjbIXbIYbJcbKAbKBbHIbIWbJebJZbGhbNtbMpaKBbMrdCwaQWbqabNubTnbNvbNwbNxbqabNybUabNAciNdzRbqacbQbqgaYpccCccrbTCccrccrccrccrcdoccrccrccrccYccZccrbNDbNJbNKbNKbNKbNLbNKbNMbNNccccfHcfJcfKcfScfUcgzccicccccccclbTzcccccmbqFciechbbMNbNZbOachSchQbOdcJWcipbOfcgBbNZckxbMNbOjbOkbOldzPaQsaUobOmbOnbOobMUbMUcitcdOcisciwcivbMUciubiNcirbOubsVbOvbOwbOxbOyblXbOzbOAbOBcdqbLTcfGbLVbOEbOFbOGbLYbmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaadaaaaaaaaaaaaaULaWhaZhaSlaSlaSlaSlaZiaWhaULaaaaQNaZjaZkaZlaZlaZlaZlaZlaZlaZlaZlaZmaNaaKBaHgaHgaHIaHIaHIaHgaHgaPQaHgaNfaPJaMNaOxaQqaQyaQCaGRaOUaFhaOjayHayHaMUaFBayHayHayHaQSaYpbRAaZNaZNaZNaZNaZNaZLaZLaJFaZLaYgaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXtaXpaZTaZTaZUaZTaZTaZTaZTaZTaZTaEMaYpaRkaVMaYJaSOaSSbbJaXeaVMaXfaXiavAbacbadavAbbMaThaUnavAbkYbkZaXuaXCbaiaXXbakaMZbambaobaobapbaqbarbarbasaZbbatbaubavbawaTmaPCaTmaTmajCajcaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaAbaBbaCbaBbaDbaBbaBbaDbaBbaCbaEbaFaQNaZjaSHbaHaSIbaJbaKaSwbaMaSGaZlaZmbaObaPbktaOvaOwaOvaOvaOMaOvbkxaHgaMxaOLaOzaPyaPzaMXaPxaOTaOUaKWaKYaLyaLzaLvaLwaKZaLgayHaWCaYpaXoaZNaMfaMeaMcaLBaZLaMkaIhaTLaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaZTaDzbbybbzbbAbiebbCaDTaZTaWabbFbbGaVMaOqaYJaStaOrbbKaVMavAaWZavAavAavAavAaUqaQsbbNavAbbOavAaTmaTmaTmaWwbbRaMvbbTaMpbbVaYZbbWbbXbbYbbZbcabcbbbYbccbcdaTmbjjbcfbcgbchbchbciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaAbaEbaBbcjbckbckbclbcmbcnbcobcpbckbckbcqbcraTpaZjbcsaGVaInbcvbcwbcxbcybczbcAbaeaZxaCCaIbaIbaIaaHuaHqaHgaHgaHgaHgaGPaHsaHraGNaGOaGHaGQaFCaFDaHraHfayHaFoaFAaFBayHayHayHbcUbbFaEGaEIaFmaFlaEJaFraZLbbqaEvaEFaadaadbdeaIjbdfbdjaZPbdhbdibdjaZPbdhbdkbdkbdlaadaadaZTaCBbdnbdobdpbdqbdrbdsaZTaIpaYpaHmaVMaVMaJQaHUaHnaVMaVMbkbaGxaGAbdBbdCavAavAaYEavAavAbdEaImaGEaGyaTmaIkaGBaFIbdKaGwaTmaGCbdNaAgbdPbdQbdRbdSbdTbdUbdVbdWaYDaZobdYbdZbeabebaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcqbecbedbeebckbefaEdbefaEdbefaEdbefbckbegbehaXFaZjaFcaZlaFGbekbelbembenaFHaZlaXQaYBberaFQaFPaFXaFWaGdaFOaFKaFEaFMaGjaGzaGvaFjaFkaVYaFgaFnaFpaFhaFiayHayZaxmayFazZaAcayHaWCaYpaCIaZNaElaEHaEcaEmaZLaAEaAjaTLaadaadbeVaKxaEEaDdaBebfaaxlbfcaAYaBmaECaJxbfhaadaadaZTbfiaClbfkbflbdqbbCaDVaZTaEMbfnaFbaDYaCFaDfbfybfwbfAbfAbfAbfybfAbfAbfAaDGbfAbfAaxkayubfwbfxbfAbfxaxpaDRbfAbfBbfCaEKbfEaTmaTmbfFaTmaTmbfGbfHbfIaELbfKbfLbcebcebfNbchbchbfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfPbckbckbaCbckbefaEdbefbfQbefaEdbefbckbegbehaXFaQQaQpaZlbfSaQnbfUbfVbfUbaHbaHarMbfXbfYaHgaKVaKUaKTaReaKNaKFaKDaHgaJgaKyaRcaGNaJwaHgaLGaLxaRKaRzaLEayHayHaIMayHayHayHayHaHjaYpbRAaIDaIBaIlaIiaIAaIzaHiaHpaTLaZPbgyaZPaOEbgsbgwbgubgvbgtbgsbgubgwbgvaNAaZPbgyaZPaZTaYtaYtaYtaNobgAbgBbgCaZTaPlbgEaPjaPPbgJbgIbgJbgKbgJbgJbgLbgMbgMbgNbgMbgMbgMbgMaHoaQmbgObgPbgQbgRbgSaQFaQDaQvbgVaQwbgXbgYbgZbhabhbbgXaTmbhcbhdaQxbfFaQzaQAaQGbhiajCaDZaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcqbhkbedbeebckbefaEdbefaEdbefaEdbefbckbegbehaXFbhlbhmbhnaPfbhpbhqbhqbhraMQaPwbcCbepbhwaHgaIJaILaIKaNPaIoaIIaIwaHgaHcaHtaNNaPgaIfaHgaZqaJPaNSaZqaHgayHaGKaGFaGIaFJaFLayHaWCaYpaHlaZNaHhaIBaIBaHkaZLaGTaGLaKobhUbqxaPHaNhbgubgubgubgubhZbgubgubgubguaCEaBCaMBaZPaLAaJYaMabifbigaKjbiibijaZTaKmbilaKnaLDbiwbiwbiAbixbiAaMYaKXaNtbiwbixbiwbiAbiwaLLaFFaOGaOFbiyaNObiwbiybiAaMoaMybiDaMwbgXbiFbiGbiHbiIbiJbgXbgXbiKbiLbiMbiNbiObiPbiQbiRbiSbgXbgXbgXaadaaaaaaaadaaaaaaaadaadaadaaaaaEaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiTbiUbaBbcjbckbckbiVbckbiWbiXbckbiYbckbcqbiZaULaZjbjabmsblLbmmbjebjfbjgbmMbmRbmPbjkbjlaHgaZraZqaZgbabaHgaHgaHgaHgaHgaHgaHgblxaHgaHgaYjaYkaZRaZSaYqayHayHayHayHaZJayHayHblBaYpaZVaVIaWIaXTaWJbbkaGSaGMbblaTLaZPaZOaZMbhBbjMbmSbjIbhVbjKbjIbjIbjLbjMbjNbjObjPaZPaZTaYtaYtaYtbjQaYtaYtaYtaZTbmTaYpbahbjSaWxbjTbjUbjVaVWbjSbagbjSbjSaVibjSbaSaVbbjSbbebjSbjSbkcaVabkbaUZbkgbkgbkhbkibkjbkkbklbkmbknbkobkpaUvbkrbksbmdbkuaVRbkwbtubkybkzbkAbkBbkCbgXaadaadaadaadaadaadaadaaaaaEaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiTbaBbaCbaBbaDbaBbaBbaDbaBbaCbiUbkDaQNbkEbkFbkGaQNbkHbkHbkIbkHbkJaQNaZcaXYaZdbjZbkVaXZaYbaZebkObkXaYcaYdaXUaYebkXaYWbjJbkObkQaXraZabkVaWAaZsbkXaXUaYIaZybkXbjYblbblcbRAaVIaVIaVIaVIaVIaTLaTLaTLaZLaPLblnbloblpblqbeoblsaUYblublvblwblrblqblyblzblAaPTaZTblCblDblEbigaPRaYtbljaZTaZQaYpblIbjSbjSbjSbjSbjSbjWbjSaUAbjSbnzblKblfaZIblNaUzaZDblObjSaWBbkdbkdbafbkgbkgblTbkiblUaUvblWblXblYblZbmabmbbmcbksbmdbmeaUdbmgbmhblXbmibmjbmkbmlbkabmnbmobmobmobmobmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTpaWhbmpaSlaSlaSlaSlbmqaWhaTpaaaaQNaZjbmrbkGaQNbmtbtzbmvbmwbmxaQNbooaZvboIboGboFaBwbcBbbEbmEbmCbmFbmGbmCbmCbmCaJCboMbmCbmBbmDaZwbmJbmKbmKbmKbmKbcZbcWbmKboXbBebdLbdcbeUbeiaXSaXGbleaXwaXWbpHbtIaQYblqbmYbmZbeRbfbbncbndblGbndbnfboPboybnibnjbnkaSCaZTaBxbnnbnobnpbnqaZTaZTaZTaEMbnrbnsbjSbfTbfrbfzbgabgbbjSbnybjSbrnbhDbgxbhRbnAbnAaTCaZAbjSahrbkdbalaZEbgrbkgbnFbnGbnHaZBbnJblXbnKbnLbnMbbSbnObnPbnQbnRaUdbnSbnTbnUbnVbnWbnXbnYbibboabobbocbodbodbmoaadaaaaRDaaaaRCaaaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaSgaPBaQNaXFbzWaXFbajbofbogbohaXFbzWboibojaQNaZjbkFbkGaQNbolbombmwbmwbonaQNbpPaZtboqbmVbmUbvhbotbosbvGbzbbySbosbosbosboxaIqbnCbosbosbvGbvhbySbosbosbosbnNboubosbosbnDboAboBbbsblebbubbpbbfbdbbbfbbvbbfbtIbtIboJboKboLboLboLbjhboNbndboObjiboLboLboLboQboRaZPaZTaQaboTboUboVboWaZTbnZaXNbaYbpabnsbjSbbwaRvbnAbbBbbIbpgaWybpibpjbnAbnAbnAbpkbnAaTCblObjSbpmbkdbpnbpobcubkgbpqbprbnHaUvaYmbptbpubpvbpwbgXaQibksbmdbpyaYfbpAbpBbpCbpDbpEbpFbpGbfJbmnbpIbpJbodbpKbmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaadaadaQNaULaWhaULaWiaQOaQOaWjaULaWhaULbpLbrsbpNbkFbkGaQNbpObpObkIbpObkJaQNaSvaSubduaKBaKBbovaKBbdgbcXbcSbcJbdgbcXbpYaKBaMjbqabaIbazbaGbaLbaNbaIbazbaGbqabaIbazbaGbqabqgbboaQlaRfaOOaTqaSTaOPaSTaPEaPDaQjaPFaQkbqsbqtbbgbqtbqtbquaTrbqwboLboLbdyboLbqxbqyaZTbqzaRBbqAbdqbqBbqCaZTbdXaYtaEMbqFbqGbjSaUybnAaUxaTYaUabjSaREbjSaSMbnAbnAbqObqPbqQaTCaRabjSbnBbkdbkdaSPbkdbkgbqUbqVbqWbgXaRdaRsbqZbraaRtbgXbrcbrdbrebrfbrgbrhbnUbribrjbrkbrlbrmcegbrobrpbrqbodaPUbmoaadaacaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTpaQUbrsbrsbrtaQOaQObrubrsbrsbrvbrwbrxbrybrzaXVaYaaYlbrDbrEbrFaYnaXqaXnbrJbrKaKBbrLbrMaKBaBraAkbrPbrQaUVaUUbpYbrSapvbqabrUbrVbrWbrXbrYbrZbrVbsaaYibscbrVbwFaXcbqgaYpbCxbleaONaOSaMTbleaMhaOoaNwaMVbtIaOJbspboLbsqaZubssbssbssaYRaYQaZnaYUboLbsxbsyaZTbszbsAbsBaZzbsDbsEbsFaYxaYtaEMbqFbsHbjSbjSbjSbjSbjSbjSbjSaDWbjSbjSaPIaRvbnAbnAbnAaPAbsKbjSbsLbsMbkdbkdbkdbkgbsNbsObsPbsQbsQbsQbsSbsQbsQbsTbmcbsVbmjbsWaYraYsaZYaZWaZYaZWaZZaZWbanbmnbmobmobmobmobmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaULaUbaUMaUcaUfaUeaUeaUTaUeaUSbtkbtgbtlbfMaUIbtnaPfbtobqfbqSbpxbpSbfRbrIbrHbtvaKBbtwbrBaKBbrObrNbtAbrQbtBbmubpYaYCaGGbqaaYFbrXbrXbrXbrYbrXbrXbrXbrXbrXbrXaUXbaLbqgaYpbRAaWvaVTaVSaVQbleblebeXbeWaUGblebtNbtObtPbssbndbndbtQbtRbtSbtTbtTbtUbtVbtWbtXbtYbdqbtZbuabgzbucbudaZTbhHaYtaYPbqFbqGbsIaVKaYTaVqaVXbhNaVUaVVaWfbjSbhXbhWbhWbhWbhWbhWbhYbjSavAbnBaQsaQsbrRbuobupbuqburbupbupbusbutaYVbuvbiabuxbuybuzbuAbuAbuBbuCbuDbnVbuEbizbicbibboabobbuIbuJbuJbmoaadaadaWsaadaWuaadaWtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQNaQNaWgaQNaQNbuNbojaQNbuNbojaQNaQNaQQbejbuQbuQbuQbuQbuQbuQbuQbuRbuQaNzaKBaKBaYuaYvaWoaWoaKBaKBaKBbtBbtBbrPbrQbuWbtBbpYbpYaZmbqabuXbrXbrXbuYbuZbvabvabvabvabvabvabvbbeYboAbvdaYwbleaVJaVpaVebleaSEaUHaUHaQoblebvibvjbqtbvkaTBbvmbfdbvobvpbvqbfmbfgboLbvtbvuaZTbvvbvwbdqbvxbdqbvyaZTbeZaYtaEMbqFbqGbsIbulbulbulbulbulbulbvAaTSbvCbvBbvBbvBbvBbvBbvBbvDbvEbvFbowbvHbvHbvIarNbvJbvKaTIbvMaRRbvOaYzaYAbvRbiNbvSbvTbvUblXbvVbvWbvXbvYblXbvZaRVbwbbfJbmnbpIbwcbwdbwebmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfdzWbwgbwhaZjbwibuQbwjbwkbwlbwmbwnbwobwpbuQdzVbrTbwsaWocfMbNCaWobwwbwxbKEbwzbwAbrPbrQbwzbwAbMmbpYaZmbqabwCbwCbwCbrYbtEbwDbwDbwDbwEbwFbwGbwHaXcbqgaYpaZKblebleblebleblecbOcbJcbNcbFblebwPbwQaZPaZPaZPceOcfrcfrcfrcfuaZPaZPaZPbwUbwPaZTaZTbtYaZTaZTaZTaZUaZTcgSaYtbwWbqFbGOcgUcjRbxbbxbbxbcbPbxbbxdbxebxebxebxebxebxebxebxebxfckoavAaUoaQsaQsbxharNbvJbxibxjbxkcfebxmbxncjTbxpbxqbxrbxsbxtcjVbxvbxwbxxbxyblXbvZcfibxAcegbrobrpbxCbuJcfVbmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbxDbxEbxFaZjbxGbuQbxHbxIbxHbxJbxKbxHbxLbuQbxMbxNbxOaWobKYbKWaWocepaKBbMlbxUbxVbrPbrQbxUbxVbMjbpYaZmbqabxWbxXbxXbxYbtEbrVbrVbrVbxZbyadCzbybbqacekcbhcbkcbAcaPcaOcbacbgcaPcaOcaPcaTcaZbykbylcjIbynbyobypbypbypbyqbypbymbyrbysbytbyubyvbyobyocjJbywbyxbyybyobyAcfLbyCbyDbnsbyEbyFbulbyGbulbyHbulbyIbulbyJbyKbyLbyLbyLbyLbyLbyKbyMavAdCyaQsaQsbxharNbxpbxpbyPbxpbxpbxpbyQbxpbxpbxqbyRdzUbiJbiJbiJbyTblXbvXblXbvZbyUbwbbfJbmnbmobmobmobmobmoaadaaaaaEaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfcjrdzTcjraZjbyVbuQbyWbxHbxHbyXbyYbyYbyZbzadzSbzcbzdaWocfhbRyaWobzgbzhbKEbzibwAbrPbrQbwzbwAbKDbpYaZmbqacffbwCbwEbzkbzlbzmbznbzobzpbrVbrVcjpbqacdKbYobZfbXCbzPbZzbZJbZrbZybWbbWcbVXbVYbWkbWHbzHbzGbZObzIbzIbzJbzKbzIbZObzMbzNbzObzPcaDbWkbzPbzSbzTbzUbzEbzPbzVcftbzXcjwcjtcjHcjxbAabAbbAcbyHbAabAdbAcbAebMibAgbAhbAibKFbAjbAfbAkavAavAavAaQsbxhbZjbxpbAlbAmbAnbxpbAobApccQbxpbArbAsbAtbAubiJbAvbxyblXbxwbAwbAxcelcgRbibboabobbAAbABbACbmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbADbAEbxFbAFbAGbAHbAIbAJbxHbAKbxHbxHdCxbuQcerarXagvaWocesaWoaWoaKBaKBbKzbAPbxVbrPbrQbxUbxVbKybpYaZmbqabARbrVbrVbASbtEbrVbrVbrVcjbbAUbrVcjdbqabAWaYpbCxbSAbSAbUNbSAbUXbSAbSAbBqbBqbTDbUhbBqbBjbBibVjbBlbBmbBnbBobBlbVibBibBjbCGbCGcdkbCGbCGbCGbDRcdycdrbCGcdlbCGbBxbBybBzcgMbBBbBCbBDbBCbBEbyKbBFbyKbBGbBHcjhbvBbBKbvBbUybBMbBNavAbKCavAaQsbxhaQsbxpbUAbBRbBSccobBUbBVbUzbxpbArbAsbAtbAubBXbAvbBYblXbxwbAwbvZceibwbbfJbmnbpIbCabCbbCcbmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfdzWaULbwhaZjbyVbuQcmJbCebCfbCgbChbxHbCibuQbAMbCjarVarXdAeaKBcjPcljaQZcOZduNduHduRduUduHbKEduMbpYaZmbqabwCbwCbwCbASbtEbCtbCtbCtbqabqabCubqabqabCvbCwcaVbSAcllckrckIcjYbDQcbicNecvGcvOclmbBqaadbCDcPFbBlbBlbCFbBlbBlcPRbCHaadbCGdvMdvNdvOdvTbCGbCGbCGbCGbCGcPEbCGclnbCObqGbsIbCPbCQbCRbAebulbCSbyFcnhbVtduXbCVbulbulbCWbsIbsIbCXavAavAavAavAbxhaQsbxpbCYcigcidcimbDccmVcmUbupbiPdAfbDgbAubiJbAvbDhblXbDibAwbvZchBbxAcegbrobrpbDkbABcPDbmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQNaMLaWgaPBaQNckJaSlbxFaQNaQNaMLdAbaZjckbbuQbxHbxHbCfbDpbDqbxHbDrbuQbAMaKBaKBaKBaKBaKBbDsbDtckcbONchXciAccncgLbVmccgbOObpYdAccoxbrVbrVbrVbASbtEbrVbsacmnbqabDCbDDbDEbqabqgaYpcaVbSAbDQcgscgxcgCbDQcbicgFcgGcgHcgDcgEaadbDPcjiciJciJbDTciJciJcjKbDVaadckDcjWcjXcDccJWclQcvxcPCcOKbCGcgVbCGckKbEhbEibsIbEjbEjbEjcjqchWbEjbEmbEjbEjbAfbEncmGcmHbEpbsIbEqbErcmFbEtbEuavAbxhbEvbxpchYchYchYciabEybVocfwbxpclibmcdAdbiJbiJbiJbECblXbEDbEEbvZbyUbwbbfJbmnbmobmobmobmobmoaadaadaWtaadaWuaadaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTpaQUbrsbrsbrsbrsbrsbrsbrsbrsbrrbrsbpNchrbuQchxbxHbxHbAKbxHbEHaKBaKBbAMaKBbEIcmhbEKbELbEMbENcfObNkbNnbNobNpbNqbNpbNrbNsbpYaZmbqabETbrUbrVbASbtEbEYbEYbEZbqabFacgibFcbqabqgaYpcaVbSAcdGcefceqchgceecbiceAcetceuceNbBqcfsbFmcfsbFmbFmbFnbFmbFmcfsbFmcfsbCGcjobJPchRchTchUcicchNchAbCGcgVbCGcmubqFbqGbVvbEjckabFAbFBbFCbFDbFEclYbEjbEjbEjbEjbEjbEjbsIbFGbFHbFIbFJcfZavAbxharNbxpbFLbFMbFLbxpbxpbxpbxpbxpcejdCAbsVbFPbFQbFRbpAbFSbFTbFUbAxchHchIbibboabobbFWbFXbFXbmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaULbwBaUMaUcciMcihbtgcilbtgbtgbtgcgPckqchkbuQbxHbGabxHbAKbGabGbaKBbGcbGdaKBbGebxTbxTbGfbGgbpYbGhchlcfkbGhbGhbGhbGhaKBckRaKBaZmbqabETcgYbwEbASbtEbqabqabqabqabqabqabqabqabGobbFcfNbSAcbRbFvcbScfYcbicbicbUcbXcckccqbBqdzXdzYbGybGzbGAbGBdAaclGcjlbGFdzZbCGcgIbJPcgncgobCGcglcgXcgWbCGcgVbCGcjGbqFbGOcluchebGRbGSbGTbGUbGVbFEchdbEjbMobGYciTbMnbIzbsIbHcbHdbHebHfbHgavAbxhbMUclFbHibHjbHicfpbHlclEbMUbHocejbmcbHpbHqbHqbHqbrhblXblXblXbvZcfobwbbfJbmnbpIbHsbHtbHubmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQNaTpceQaTpaQNbuNbojaQNbuNbojaQNbXfaQNaQNbuQbxIbHybHzbHAbHzbHBaKBbAMaKBaKBbxTccsccPcdbbpYbpYbHFbHGbESbGXbGhbHJbHKaKBcMVbHMaZmbqacfPbrXbrXbASbXybqabHPbHPbXnbXibHRbHSbqabHTaYpcaVbSAbKsbFvbKkbVpbJQcbibJObGMbJjbIpbBqcNNcNObIfcLFbIgbIfcLLbIfbIhcMqcMUbCGbHEbJPbLubLDbOdbOWbPibOWbCGbQWbCGbXkbqFbqGbVvcdNbFCcwybXlcdQbFBcceccfbEjbEQbIAbERbHacchavAavAavAbIDbIEbIFavAbxhbMUcdVccabIJccacdOccbcdVbMUbINcejcbjbsVblXblXblXblXblXblXbnTbvZccjbxAcegbrobrpbIPbFXbUSbmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXFbeNaXFaadaaaaaaaaaaaaaadaKBcKlcfnajnaKBaKBaKBaKBaKBaKBaKBaKBcJUbWTbEPbENbDAbIZbJabpYbpYbJbbDzbJdbDybGhcdEcdAaKBbJhbJibUrbqabWobrXbrXbASbtEcdIbrVbrVbJmbJnbwFbJpcdFbqgaYpbWgbSAbDQbFvbGCbHxbDQcbibFtbIobFubFtbBqcKqcLEcxwbJDbJEcbnbJGcyvbJHbJIcyWbCGbFsbGIbGLbGNbGJbGKbFrbFqbFpbEFbCGbSzbqFbqGbVvcdpbFCcdecdxcducdtbVwcdzbEjbWybIAbKabKbbKbbKcczXavAbKeavAbKfavAbxhbMUcdOcdOcdOcdOcdOcdOcfmbMUbINcejbKnbsVblXblXbKobKpbKoblXblXbvZbyUbKqbfJbmnbmobmobmobmobmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaULceQaULaadaaaaaaaaaaadaadaKBbrTcwPbKtbKtbKtbKtbKtbKtbKtbKtbKtbKxaKBbCrbxTbxTbxTbxTbDvbKBbDwbDxbCsbCUbVcbKHbKIbQHcwQbHMcwHbOSbKNbKObKPbKQbtEccObrVbKRbJmbwFbrZbJpccNbqgaYpbUjbSAbDQbDSbEfbEebDQcbibDlbCJbCLbBqbBqcwKcwLbLdbLecvFbLgbLhbLicuhcvycwlbCGbEabEcbDYbDZbCGbCGbCGbCGbCGbEdbCGbSJbqFbqGbOibEjccKccDbKMbKJbOgbLCbLybLzbLAceGbJYceFbLEbLFcubbLHctYbSIctXbLLbLMbMUccdcdOcdOcbZcdOcdOcbYbMUbINcejbLQbsVblXbnTbKobLRbKoblXblXbAxcblccLccMbLVbLWbLXbLYbLYbmoaadaadaWsaadaWuaadaWtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaacnwcnwceEcnycnwbMbbMbaKBcaYaKBbMebxObCMaKBbMgbMhbxTbMkbxTbKAbKBbCpbCqbClbCobGhbMpbMqaKBbMrbrTaQWbqabSFbrXbrXbrXbMtcbWctqbMvbMwceCctWbqabqabAWaYpbSDbSAbSAbSAbSAbSAbSAbSAbBqbBqbBqbBqbBqbMEbMFbMGbMEbMHbMHbMHbMFbMIbMEbMFbCGbCGbCGbCGbCGbCGbCGbDUbDRbCGbCNbCGbSzbqFbNWbJUbMNbMNbMNbMNbMNcbzbMPbMNbMNbMNbMNbMNbMNbMNbMNavAbMQbMRbLJbMTbLMaQsbMUcbxcdOcdOcbycdOcdOcbwbMUbMYcejbMZbNablXblXblXblXblXblXblXbvZcaQbwbbUibmnbpIbNdbNebNfbmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaadaaaaaacnwcixdzQcoBcnwaKBaKBaKBbNgaKBaKBaKBaKBaKBciybNjbIXbIYbJcbKAbKBbHIbIWbJebJZbGhbNtbMpaKBbMrdCwaQWbqabNubTnbNvbNwbNxbqabNybUabNAciNdzRbqacbQbqgaYpccCccrbTCccrccrccrccrcdoccrccrccrccYccZccrbNDbNJbNKbNKbNKbNLbNKbNMbNNccccfHcfJcfKcfScfUcgzccicccccccclbTzcccccmbqFciechbbMNbNZbOachSchQcdcccxcipbOfcgBbNZckxbMNbOjbOkbOldzPaQsaUobOmbOnbOobMUbMUcitcdOcisciwcivbMUciubiNcirbOubsVbOvbOwbOxbOyblXbOzbOAbOBcdqbLTcfGbLVbOEbOFbOGcbTbmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaaaaaaaaacnwcfFcptcifcnwaadaadaadaaaaadaadaaaaaabpYbOLbpYbOMbHHbOMbpYbpYbGhbOQbORbGhbGhbGhbGhaKBbMrbHMaQWbqabqabqabqabqabqabqabqabqacgcbqabqabqacijbqgbOUbOVaWKaWKaWKaWKaWKaWKaWVaWKbPjbOXaWXaWWaWKaWKbOYbOZbPabPbbPcbPdbPebPfaWKaWKbPgbPhaWKaWKaWKaWVaWKaWKaWKbSRaWKbPjchPcfzcfycfxbPmbPobPnbPnbPpbPqbPrbPnbPnbPscgbbMNbPvbPwavAatJaQsaUoaUoaUoaUobMUbMUcfAcfCbYzcfEcfDbMUbIMbPCcxTbPEbPFbOvbPGbxwbAwblXbPHbPIbAxbPJceHbTPbPLbmobmobmobmobmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaacnwcqedzMceBcnwaadaaaaadaaaaaaaaaaaaaaaaadaaaaadaadaadaadaadaadaadaadaadaadaadaadaqXaKBcdmcdnbPTaVfaVfaVfcdjaVfaVfbPUbPVbPWcPtaVfcQFcdJcQabPZbQabQdbQcbQebQdbQdbQdbQdchGbQdbQgaVCbQhbQiaVCaVCbQjbQkbQlbQmbQnbQobQpbQqaVCaVCchccgZcgZcgZchacdUchachibQtbRhchfceXchhcfjceVceUceWbQEbQDbQDbQEbQDbQFbQDbQDbQGcdPbMNbQIbQJbMNatJaQsaQsaQsbOobQMbMUceTceSceRbYzceKceJceIcgQbQTbQUbQVbTmbQXcgObQZbRabTmbRbbRcbOBcdiceHbTPbRebobbRfbRgbRgbmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaadaaaaaaaaaaaaaaacnwcqZcracrbcnwaadaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaadaadcgNaadaadaadaKBaKBaKBbSraKBaKBaKBaKBcdfbMbbHMbRjcxncdgbHMbMeaKBaKBaKBaZLaZLaZLaZLaZLaZLaZLaZLbhQaZLceybRwbRwcezceDbRwbRwbRwcbKcbDbqFcbBcbCbRDbRDbRDbRDcexbRDbRDbRDcewaZLcbocbdcbbaZLcaebMNcevcfTcevbMNbQWbPibQDbQDbOWbQDbLubQDbQDbLDbRObMNbRPbRQbMNatJaQsaQsaQsaQsaQsbMUcdOcdOcdOcfRcfQcdOcfmbMUbPCbRXbRYbiJbgXbRZbRZbgXboSbSabSbbvZcddbwbbUibmnbpIbSdbSebSfbmoaadaadaWtaadaWuaadaWtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaacsccoMcscaadaadaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbYtbYsbYrbYqbYrbSkbSlbRKbVdbREbSpbSqbTsbRCbTsbTsbTybHMaKBaKBaKBaKBaKBaKBbRzbXVbRxbRpbRnbRmbRlbRkbRibYIbUIbXObUIbXRbXQbUIbXObUIbYIbMzbSKbMSbRLbRRbSNbRRbNibYKbRRbSNbRRbRLbSgbSgbSgbSgbSgcpcbMNbYFbYGbPnbPnbYHbQEbQDbQDbQEbQDbSZbQDbQDbTabTbbMNbQIbTcbMNatJaQsaUoaQsbTdaQsbMUbVsbsYbsXbYzbVEbWebVsbMUbTjbRXbRYboDborbtebsZboDboSbtFbsWbvZbScbxAbWnbrobrpbTqbRgbRgbmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaadaaaaaaaaaaaaaaacnwcqZcracrbcnwaadaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaadaaaaaaaadaadcgNaadaadaadaKBaKBaKBbSraKBaKBaKBaKBcdfbMbbHMbRjcxncdgbHMbMeaKBaKBaKBaZLaZLaZLaZLaZLaZLaZLaZLbhQaZLceybRwbRwcezceDbRwbRwbRwcbKcbDbqFcbBcbCbRDbRDbRDbRDcexbRDbRDbRDcewaZLcbocbdcbbaZLcaebMNcevcfTcevbMNbZWbQEbQDbQDbVubQDbQFbQDbQDbVrbRObMNbRPbRQbMNatJaQsaQsaQsaQsaQsbMUcdOcdOcdOcfRcfQcdOcfmbMUbPCbRXbRYbiJbgXbRZbRZbgXboSbSabSbbvZcddbwbbUibmnbpIbSdbSebSfbmoaadaadaWtaadaWuaadaWtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaacsccoMcscaadaadaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbYtbYsbYrbYqbYrbSkbSlbRKbVdbREbSpbSqbTsbRCbTsbTsbTybHMaKBaKBaKBaKBaKBaKBbRzbXVbRxbRpbRnbRmbRlbRkbRibYIbUIbXObUIbXRbXQbUIbXObUIbYIbMzbSKbMSbRLbRRbSNbRRbNibYKbRRbSNbRRbRLbSgbSgbSgbSgbSgcpcbMNbYFbYGbPnbPnbYHbQEbQDbQDbQEbQDbSZbQDbQDbTabTbbMNbQIbTcbMNatJaQsaUoaQsbTdaQsbMUbVsbsYbsXbYzbVEbWebVsbMUbTjbRXbRYboDborbtebsZboDboSbtFbsWbvZbScbxAbWnbrobrpbTqbRgbCkbmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaadaadaadaadctacractaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcZYbTsbTsbTsbTsbTsbTtbTubTvbTwbTwbTxbTsbSsbSubTsbTybrTaKBbMbbSobWqbShbSmbSnbXxbXxbXxbXxbSCbSBaZLbePbYIbWsbSxbYWbNYbPQbYWbYTbSGbXObTLbTSbTTbSNbPSbTVbTWbVfbZIbTWbTVbTZbSMbSgbZLcpubZKbSgbWwbMNbZSbZUbZYbUlbZVbQEbUkbUlbUlbUlbUmbUlbUlbUlbUnbUobUpbUpbNccpjaQsaUobUsbyOcrCbMUbZsbMUbZtbZubZFbMUbZGbMUbTjbRXbRYbiJbuLbyNboDbzebgXbBQbUBbUCbyUbwbbUibmnbmobmobmobmobmoaadaaaaaEaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaaaadaaaaaaaadaadcvTaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcZYbUEbUFbUGbUHbUGbLZbUJbUKbULbULbUMbTsbNEbNFbNmbNzbMDbuSbMybMCbNbbNlaKBbMXcqRbXxbSObXxbMxbMcbYIbYIbYIbTIbMabWdbWjbWibWhbKGbXsbXEbTLbTSbTTbVebVfbVgbVhbKZbWSbVkbVkbVlbWGccAcmMbWAbWCbSgbWwbMNbWxbEJbWDbWEbTJbUlbVubFxbIBbVxbVybJSbIVbVBbWUbMNbVDbICbMNatJaQsaUoaUoaUoaUobMUbMUbMUbMUbMUbMUbMUbMUbMUbgXbRXbRYboSboDboEborboDbiJbVGbVHbVIbNIbTObTPboabobbVKbVLbVLbmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaaaaadaaaaaaaadaadcvTaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcZYbUEbUFbUGbUHbUGbLZbUJbUKbULbULbUMbTsbNEbNFbNmbNzbMDbuSbMybMCbNbbNlaKBbMXcqRbXxbSObXxbMxbMcbYIbYIbYIbTIbMabWdbWjbWibWhbKGbXsbXEbTLbTSbTTbVebVfbVgbVhbKZbWSbVkbVkbVlbWGccAcmMbWAbWCbSgbWwbMNbWxbEJbWDbWEbTJbUlbBObFxbIBbVxbVybJSbIVbVBbWUbMNbVDbICbMNatJaQsaUoaUoaUoaUobMUbMUbMUbMUbMUbMUbMUbMUbMUbgXbRXbRYboSboDboEborboDbiJbVGbVHbVIbNIbTObTPboabobbVKbVLbVLbmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaAXaAXaAXaSgaadaadaadaadcvTaadaadaadaadaadaaEaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcZYbUEbVObVPbVQbVRbTvbVSbNRbOqbOCbTQbTsbQfbQsbTsbTybrTaKBbMebtwbNSbObaKBbOcbQNbQubXxbXxbQRbYIbYIbQSbYIbTRbVCbXobXobXqbXsbXrbXsbXEbTLbWrbTUbVebVfbVfbVfbWtbUfbTYbWvcgTbXJbXIbXMbXNbXLbSgbWwbMNbMNbMNbMNbMNbMNbBwbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNatJaQsaUobEvaQsbWIaUoaQsaQsaQsaQsaQsaQsaUobOoarNbRXbWJbiRbpZbqobqXbsJbsJbWLbWMblXbQYbwbbUibmnbpIbWObWPbWQbmoaadaadaWsaadaWuaadaWtaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaAXaaaaadaaaaadaaaaaaaaactSaaaaaaaadaaaaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaacaaaaadaadaadcZYbUEbWVbWWbWXbWWbWYbWZbZCbXbbXcbXdbTsbZdbZebTscsrbZwaKBbxzbxzbxzbxzbxzbxzbZbbZabYYbYXbYSbYIbYRbYQbZcccwccvbSEccubSEcctcctcctbUIbTLbTSbTTbRRbZBbUYbTGbTpcbcccHbXGbXHccIbSgccycczccBbSgbRBbXXbXXbXXbXXbXXctrctubXXbXXbXXbXXbXXbXXbXXbXXbXXbXZctpbDOctcbDubYbbYbbYbbYbbYbcaXbYbbYbbYbbYbbYcbYbbYbcsLbCIbYebYfbRUbTkbTlbZEbYkbRSbYmblXblXbZDbxAcaWbrobrpbYpbVLbVLbmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaAXaaaaadaaaaadaaaaaaaaactSaaaaaaaadaaaaaaaaaaaaaSgaaaaaaaaaaaaaaaaaaaacaaaaadaadaadcZYbUEbWVbWWbWXbWWbWYbWZbZCbXbbXcbXdbTsbZdbZebTscsrbZwaKBbxzbxzbxzbxzbxzbxzbZbbZabYYbYXbYSbYIbYRbYQbZcccwccvbSEccubSEcctcctcctbUIbTLbTSbTTbRRbZBbUYbTGbTpcbcccHbXGbXHccIbSgccycczccBbSgbRBbXXbXXbXXbXXbXXctrctubXXbXXbXXbXXbXXbXXbXXbXXbXXbXZctpbDOctcbDubYbbYbbYbbYbbYbcaXbYbbYbbYbbYbbYcbYbbYbcsLbCIbYebYfbRUbTkbTlbZEbYkbRSbYmblXblXbZDbxAcaWbrobrpbYpbVLbCEbmoaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadcuLaadbSjbSjbSjbSjbSjaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaadbYtcWRcdvbTsbTsbTsbTsbTsbYwbYwcaMbYwbYwbYwbYvbZXcaccacbPucaibYwcazcaBcafcagcbmbxzcaHcaGcaJcaIcaCbYIcaFcaEcaLbStcdsbZNbZNchVbGicbqbGicdHcbvbTSbYNbYObYPbCnbCnbYPbCncdCbYPbYUbYVbSgcdMcaNcdLbSgctVcizbWBbWBbWBbWBbUqbWBbWBbYvbYvbYvbYvbYvbYvbYvbYvbZgbZhavAbWIbZiavAavAavAavAavAcaravAbWIbZjaUoaUnaQsaQsaQsarNbZkbZlbZmbZlcdDbZnbZobZobZlbZpbZnbZqbwbbgXbmnbmobmobmobmobmoaadaaaaRDaaaaaEaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadcuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaadaAXaadaaaaaaaaaaaaaaaaaaaaaaadbZZaaeckwbPlbTobPlbTockBckBbTibThbZxbZxbZxbZxbZxbZxcpHcpTbVzbVJbUObUUbVUbVVbVTbxzbWfbCTbBZbBWbWfbYIbXebXabYIbXzbXgbZNbXAbZPbZQbZRbYjbZNbYMbTSbZTbYPbXUcdBcdBbXFbXPbXKbYPbWmbQrcadbWlcadbSgbSgbNPbYwbWBbJfbDNbElccGbFdbWBcakcalcalcqBcancbecaocajbZgbZhavAavAavAavAbYubAObzRavAcsgavAavAavAavAcasbTdcrCavAarNbgXbgXbgXbgXbgXcatcaucavbgXbgXbgXbgXbgXbgXaadaadaadaadaadaadaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadbPNbPNbPNbPNbPNaaacuLaaabPNbPNbPNbPNbPNaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaebYwbYwbYwbYwbYwbYwbYwbQKbYwbYwbXhbXjbXjbXjbXjbXmbXjbXjbXjbXpbXtbXubXvbXwbXBbNObKrbXTbNQbOsbYBbXYbXSbNUbNTbYabNVbPybPxbYDbYCcapbZNbYMbTScdwbYPcahcaabZHbIubDFbSPbYPbYJbOJbOtcsdbWBcuScmzcrTcjvbWBccEccEbunbYybQwbWBcbVcalcbrcbsbBbcalcbtcajbZgcbuavAbAXbAVbAZbEbcdScaKavAbWIcaUavAaadavAavAcgaavAavAaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaadaaaaaaaadaaaaRDaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaaaadaaaaadaadaadaaacabaaaaadaaaaadaaaaadaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbYwbYvcawcaxbAQbYwcgKbQKbYwbzQcbGcbHcbIbzLcaAbEgcbLcbMbYwbHrbHvbHkbHnbGGbGHbHCbRHbHwbRqbRobRrbRobRqbRobFhbJxbGibJucfvbJqbJkbIrbGibYMbTSbYNbCnbItbIsbIvbIubIxbIwbIQbIHbJgaXDaYHbWBcaqbaZbbtckTbWBbGuccGbUdccGbQPbWBcakcalbQQcalcalcalccJcajbZgcizavAbHXcdSaQsaQsbTdaQsavAavAaVOavAaadaadaadaadaadaadaadaaaaadaaaaaaaadaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaadaaaaRCaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadcuLaadbSjbSjbSjbSjbSjaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbYwcbEbZhbZhbZhbYwbIObQKbYwccTccUccVccWccXbGqbGrcdabIIbYwbIKbILbIkbIlbImbLBbLwbIcbYLbLxbGpbSEbSEbSEbLtbFzbGjbLvbLocfvbLqbJkbJKbZNciWbTSbYNbYPbKSbKhbKhbLfbDFbJXbYPbZAbZvbWzbVNbWBbdObYvctVbfDbWBcpGbJVbJWbkSceLbWBcajbRMbQQcalcdRbRMcajcajbZgbQLavAbJTaQsbJTaQsbEbcdTaYNaQsbJRcgaaadaaaaaaaadaadaaaaaaaaaaadaaaaaaaadaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaRCaRCaRCaaEaRCaWuaRCaWuaadaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadcuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaadaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbYwbBTcbuccRdAIccSbZMbQKbYwcdZceacebceccedcaAbyzbAYbyzbYwbxzbExbyBbEAbxzbxzbEXcyUbEWcemcemcenceobBscemcemcshbZNbEVcfvbEUbEGbZNbZNbDbbTSbCZbYPbYPbDacdBcfIbBubAqbYPbPXbQrbRLbRLbWBaUJbYvbzAbWBbWBbRLbDGbxobRLbRLbRLceMbMAbMBcePbMLbMKceMcajbZgcgJavAbEwaVdbEkaUKbDIbDHavAaUoavAavAaadaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaRCaRCaaaaaaaaaaaaaadaaaaadaaaaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaAXaadbPNbPNbPNbPNbPNaaacuLaadbPNbPNbPNbPNbPNaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdWbQLcdXbZhcdYbYwbQLbQKbYwcfacfbcfccfdbFNcaAbCBbDnbDXbYwbHQbEObFlcflbGmbHUbPPbNYbPQcembDebCKcfqbDjbCAcemctGbZNbGWcfvbHLbHDbGibFVbFycfBbFwbFobFkbFgbGPbGnbDFbFbbCnbGlbQAbQyaWbaWObVfaVwbBcbOraVrbOpbFebFfbVkbPkbRLaXsbOHbOIcfWcfXbGQbCzbCybRIbZhavAavAavAavAcgaavAavAavAavAavAaadaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaadaadaadaRCaRCaRCaWuaadaadaRDaRDaRDaaEaRDaWtaRDaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaAXaadbPNbPNbPNbPNbPNaaacuLaadbPNbPNbPNbPNbPNaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdWbQLcdXbZhcdYbYwbQLbQKbYwcfacfbcfccfdbFNcaAbCBbDnbDXbYwbHQbEObFlcflbGmbHUbPPbNYbPQcembDebCKcfqbDjbCAcemctGbZNbGWcfvbHLbHDbGibFVbFycfBbFwbFobFkbFgbGPbGnbDFbFbbBJbGlbQAbQyaWbaWObVfaVwbBcbOraVrbOpbFebFfbVkbPkbRLaXsbOHbOIcfWcfXbGQbCzbCybRIbZhavAavAavAavAcgaavAavAavAavAavAaadaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaadaadaadaRCaRCaRCaWuaadaadaRDaRDaRDaaEaRDaWtaRDaRDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSgaaaaadaaaaadaaaaadaaabUWaaaaadaaaaadaadaadaadaSgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYwceYbQLbZhbZhbYwbQLceZbYwcgdcgecgfcggcghcaAcjEcgjcgkbRTcgmbLnbLmcgpcgqcgrbUVbNYbPQcgtcgucgvcgwbLpcgycembQLbZNbMJcgAbRWbRVbRtbRsbRubTSbRFbRvbRNbRGbQvbQbbQzbQxbQObQCbRdbUgbLlbJsbURcgTbJtbUTbUTbUTbJlbUtbUubUvbUwbUxbUPbUQbUecjybUcbUbcajbZgbQLchmbYwaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaadaaaaadaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadbVZaadbSjbSjbSjbSjbSjaadaAXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbYwbBTbQLbQLcdYbYwbQLclTbLSchscgechtcggchuchvchwbTFchychzbLObLPchCchDchEchFbVAbLNbVCchJchKchLchMbLschMchObTBbZNbOPbOKbTAbTrbGibRsbRubTSbRFbRvbCnbSLbSwbSvchZbQBbCnbSyclkbzybLrbJzciicikbVnbVkbVkbVkbSibVbciobVabWBbnmcjsbJybJwbJvbUZbUZcajbZgcotcizbYwaadchnaaaaadaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaabSjbSjbSjbSjbSjaadbVZaadbSjbSjbSjbSjbSjaadaAXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbYwbBTbQLbQLcdYbYwbQLclTbLSchscgechtcggchuchvchwbTFchychzbLObLPchCchDchEchFbVAbLNbVCchJchKchLchMbLschMchObTBbZNbOPbOKbTAbTrbGibRsbRubTSbRFbRvbCnbSLbSwbSvchZbQBbBJbSyclkbzybLrbJzciicikbVnbVkbVkbVkbSibVbciobVabWBbnmcjsbJybJwbJvbUZbUZcajbZgcotcizbYwaadchnaaaaadaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaadcuHcuIcuIcuIcuIbTebTfbTebMMbMMbMMbMMbMVaadaAXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYwbYwchochpchqbYwbQLbQKbYwciBciCciDciEciFcaAciGcfgciHbYwbJMbJNbKiciLbTgbHUbSHbNYbKTcemciOciPbKUciRciScembMubZNbZNbZNbMObZNbZNbZNbMfciXbMdbYPbYPbYPbYPbYPciZbLUbYPbWBbWBbSQbSTbSUcjgbSVbSSbLkbLkbJLbLjbGvbGEbGZbGvcktcktbGtbSYbSXbSWbSWcajbZgbQLcjubYwaadaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaAXaadbPNbPNbPNbPNbPNaaacvTaaabPNbPNbPNbPNbPNaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaKBaKBbYwbYwbYwbQLbQKbYwcjzcjAcjBcjCcjDcaAbKXcjFbIqbYwbPYcehcehcehcehcehbPtbTKbTMbIbbKVcjMbMscjObTNcembPAbPzbPKbPzbPObPMbNhbokbIabHZbHYblQbOTbNGbNGbODbOhbNXbNGbNhbhebHOckfckgckhckickjckkcklckmckncjkbTHckpcaScbfbTEbHNcktckvcajcajcajbZgbYwbYwbYwcxdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAXaaaaaaaadaadaadaaaaaacvTaadaaaaaaaadaadaaaaaaaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaebYvchjbYwcLZbQKbYwbYwbYwbYwbYwbYwbYwbYwcshbYwbYwbYAbYwcxZcxYcyfcyebVAcukcuDcemcuAcyGcxPcoCcoCcoCcoCcoCcoCcoCcxJcwDcxJcxJcyncrncyqbRLbRLbRLbRLcyrbRLbYwbRLbRLbWBcysckYckZckhclaclbclccldclecylcjkclgclhcxBcxzcvEbYvcuVcuXbYvbYlcpXdBpcwsdBqcxKaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -9754,17 +9762,17 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaAXaadcBBaadaAXaaaaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaeaaebYwdBhbYwbQLcltcAnbXXbXXbXXbXXbXXbXXbXXcwtbQLbQLczwbYwczYczRcAiczRczEczIcyYctjczJczKczLcoCclBcztcqxcpxcpxbYnczuczycAMcPScALbTSbYNcAKcPTcAJcCCcCMcBOcBQcANcxjcxHcmWcmXcmYcmZcnacnbcnccnccndcxycjkcnfcmlcngcnicJRbYvcwEcwNcMLbZMbZgbYwcABcjvaKBaaeaadaadaadaadaaaaadaadaadaadaadaaaaadaadaaaaadcnncnocnocnpcnqcnqcnrcnrcnrcnrcnsaadaadaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaAXaaaaadaaaaAXaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbYwbYwbYwbYwbYwcdYbYwcnvbYwbYwbYwcizbQLcpZbZhbQKbQLbQLclwbYwcyDcMDcyzcytcyZczjcyXctjczmczoczlcoCckecpxckdcpBcyRcoCcxJcwDcxJcxJcbvbTSbYNcjccjccjccjccjccjcckVcjccjcckUcpecjeczqbLkczrcnZcoacobcoccodcjkcoecofcogcxXcoibYvcvacwkbYvbQLbZgbYwbQLbQLcAIaaeaaaaaaaadaaaaaaaaaaaaaadaaaaaaaaaaaaaadaadaadcomconcoocopcnqcnrcnrcoqcorcoqcnrcnraadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaAXaAXaAXaAXaAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbYwbYwcLMcLucLAbYwbYwbYwcLtcNRcNLbYwbYwbYwbYwbYwcnzbZhcuScmzbYwcOecNScOycOucMIcMJcMKcNjcLNcMmcMpcMGcNmcNDcNJcNKcqucoCcNkcpccssbYwcOzbWrcOGclRclSdBlclUdBmclWclXdBndBKckUcpJcjecpfbLkbLkbLkbLkbLkbLkbLkcjkcjkcjkcpkcjkcrSbYvbYvcAybYvbQLdBCcnvbZMcpZbYwaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaecpmbYEconcopcnrcnrcoqcoqcpocoqcoqcnrcnraadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYwbQLcotbQLbQLcprcDBbYwbYwbYwcozbYwcDLcDIcDGbYwcpWbYwbYwbYwbYwcDTcDScDMcDMcJZcKccJQcJScJOcJPcDYcEbcKTcKUcKOcKSckWcoCcKjbWwcLicLlbYMbTScLmcmPcmQcmRcmScmScmSclXcmTcJTcDcbTXcKNcKJckDcpMcpNdCqcKfcKddCNcpSdBwcpUcpVcNncrSbQLdBxcyEclpclpcpYbYwbYwbYwbYwaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaacqacnrcpmcnrcnrcoqcoqcoqcoqcoqcoqcoqcnrcnraadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbYwbQLdBrduYdBodBDctgbYwdBsdBabQLbYwbYwbYwbYwbYwcpWcizcjvbYwdzOckFdAvdBjcxLdALdAPdARctjdASdATdAUcoCdAVcuJcsjdAWcNhcoCcvRdAZcmzbYwcqAbTSdBMcjcdBLcnQcnRcxScnScwwdCsdCtcDcdBJcqGcqHdBIcqJcqKcqKcqKcqKcqKcqLcqMcqNcqOdCrcrSctKcqQcsactKctKctKctKdCudCvaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadcnqcnrcqScqTcqTcoqcoqcoqcoqcoqcoqcoqcoqcnrcnraadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdWbQLcpqcpqcpqcpqcpqbQLbQLbQLbQLbYwaadaadaadbYwcpWbQLdAIcrgcLwclAcLxclCdBicLzcONcOMctjdAkdAmdzNcoCcqzcqIdApcMTdABcoCdAudAxdAHbYwcrtbTSbYNcpbcmTcmScmScmSdBydBzcmTdADdAEdAGcrEcrFdAKcrHcrIcrJcrKcrLcrMcrNcNCcqocNBdCpcrSdBFcrUcrVcrWcNbcrYcMYcKycMXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaacnrcnrcsbcoqcoqcoqcoqcoqcoqcoqcoqcoqcoqcoqcnrcnraadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadbYwbQLbQLcoybQLbQLbQLbQLbQLcpqcrubYwaadaadaadbYwcpWbZhbQLbYwcrqcmBckGckLcxLcrAcrBcrOctjctjcryctjctbctbctecsEcsEcsEcsEcrvckQckSbYwcrmcrncrocjccKwclUcKpclWdBtdBudBvcKvckUcrpcjecqlckDcsFcsFcsGcsHdCFcqncsKcqmcsMcsNcqocsPcsQcsRcsScsTcsUcsVdCGcrZcsWaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadcnrcoqcoqcoqcoqcoqcoqcsYcoqcsZcoqcoqcoqcoqcoqcnrcnraadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYwbQLcotbQLbQLcprcDBbYwbYwbYwcozbYwcDLcDIcDGbYwcpWbYwbYwbYwbYwcDTcDScDMcDMcJZcKccJQcJScJOcJPcDYcEbcKTcKUcKOcKSckWcoCcKjbWwcLicLlbYMbTScLmcmPcmQcmRcmScmScmSclXcmTcJTdwFbTXcKNcKJcrfcpMcpNdCqcKfcKddCNcpSdBwcpUcpVcNncrSbQLdBxcyEclpclpcpYbYwbYwbYwbYwaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaacqacnrcpmcnrcnrcoqcoqcoqcoqcoqcoqcoqcnrcnraadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbYwbQLdBrduYdBodBDctgbYwdBsdBabQLbYwbYwbYwbYwbYwcpWcizcjvbYwdzOckFdAvdBjcxLdALdAPdARctjdASdATdAUcoCdAVcuJcsjdAWcNhcoCcvRdAZcmzbYwcqAbTSdBMcjcdBLcnQcnRcxScnScwwdCsdCtdAhdBJcqGcqHdBIcqJcqKcqKcqKcqKcqKcqLcqMcqNcqOdCrcrSctKcqQcsactKctKctKctKdCudCvaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadcnqcnrcqScqTcqTcoqcoqcoqcoqcoqcoqcoqcoqcnrcnraadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdWbQLcpqcpqcpqcpqcpqbQLbQLbQLbQLbYwaadaadaadbYwcpWbQLdAIcrgcLwclAcLxclCdBicLzcONcOMctjdAkdAmdzNcoCcqzcqIdApcMTdABcoCdAudAxdAHbYwcrtbTSbYNcpbcmTcmScmScmSdBydBzcmTdADdAgdAGcrEcrFdAKcrHcrIcrJcrKcrLcrMcrNcNCcqocNBdCpcrSdBFcrUcrVcrWcNbcrYcMYcKycMXaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaacnrcnrcsbcoqcoqcoqcoqcoqcoqcoqcoqcoqcoqcoqcnrcnraadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaadbYwbQLbQLcoybQLbQLbQLbQLbQLcpqcrubYwaadaadaadbYwcpWbZhbQLbYwcrqcmBckGckLcxLcrAcrBcrOctjctjcryctjctbctbctecsEcsEcsEcsEcrvckQckSbYwcrmcrncrocjccKwclUcKpclWdBtdBudBvcKvckUcrpcjecqlcrfcsFcsFcsGcsHdCFcqncsKcqmcsMcsNcqocsPcsQcsRcsScsTcsUcsVdCGcrZcsWaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadcnrcoqcoqcoqcoqcoqcoqcsYcoqcsZcoqcoqcoqcoqcoqcnrcnraadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYwcqVbQLbQLbQLcizcqccpqcpqbQLcrkbYwaadaaaaadbYwcpWbYwbYwbYwcxLcxLcxLcxLcxLcricrjcrectvcqYcrdcqXckOclIcwCclIclKclIcwBclMcwAclOclPbYMbTSbTTcjcckUckUckUcOAdBGckUckUckUckUcqUbSTcqDctBcrScrScrScrScrSctCcrScpicphcpncqPcrSctHctIctJctKctLctMctNctKaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaacnrctOctOctOctOctOctOctPcoqctQctOcsZcoqcoqcoqcoqcnraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYwbYwcpqctgcpqbQLcthcqWcvAcpqbYwbYwaadaadaadbYwcpWcpEbYwbWFcpKcLscLrbWKctvcqicsDcsOczvcsXctdctfckOcDPcwCclIcmLclIclKctxcDRclOcszbYMbTSbRFbRvcjScstcsCcvbdBEcvzcttcuncvJbTXcjecswcrScuqcurcuscutcuucuvcuucuwcuxcuycrScrSctKcqQcsactKcuzcskcuBcuCaaeaaeaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacuEconconconconconconconcuFcorcoqcoqcoqcoqcuGcorcnraadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbYwbYwbYwbYwcdWbYwbYwbYwbYwbYwaadaadaaaaadbYwcpWdAIcshcLPcJYcpDcpCcpzcpycnFcoAcsmcLkcspctncsncsocoScybcoScxNcyOcyTcwGcyIcnKcsBcnMcnNczGbRvcsfcsicrzcrzdAycrxdAzctocvJcpJcjecrQcrfcuqcurcvfcvfcvgcvhcvicvjcvkcvlcrScvmbQLdACcvpctKctKctKctKctKaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaacnrcqTcqTcqTcqTcqTcqTcvqcoqcqScqTcvrcoqcoqcoqcoqcnraadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaaaaaaaadaadaadaadaadaadbYwcpWcizbYwcuecqqdCIcOccrGcrDcrPcrRcrXctvcufcugcujckOcnGcmKclIclKclIcumcLjcLocLvcLCctUcfBctZcsecsecvCcuicuidAwcwOcqEcvBcvJdBJcuacudcrScuqcurcvfcvMcuucvNcuudCHcvPcvQcrScuScdXcvocvRcvSbYwaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadcnrcoqcoqcoqcoqcoqcoqcsYcoqcvrcoqcoqcoqcoqcoqcnrcnraadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaadaadbYwbYwbYwcpWbQLbYwbYgbXWcqqbXDbWNctvcqrcojcqpbYwbYwbYwbYwckOclIclKclIcKnclIctDctAcKkckOcJVbYMbTSctscsectzcpAcsucsvctyctFctRcupcjScuRcjectibYZbYZbYZbYZbYZbYZctkbYZctldAMctmcrSbZhbZhcwncwocvSbYwaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaacnrcnrcsbcoqcoqcoqcoqcoqcoqcoqcoqcoqcoqcoqcnrcnraadaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaadaadbYwbYwbYwcpWbQLbYwbYgbXWcqqbXDbWNctvcqrcojcqpbYwbYwbYwbYwckOclIclKclIcKnclIctDctAcKkckOcJVbYMbTSctscsectzcpAcsucsvctyctFctRcupdwtcuRcjectibYZbYZbYZbYZbYZbYZctkbYZctldAMctmcrSbZhbZhcwncwocvSbYwaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaacnrcnrcsbcoqcoqcoqcoqcoqcoqcoqcoqcoqcoqcoqcnrcnraadaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcwscxRcwscAmbYwbYwbYwbYwbYwbYwbYwctTctwcnlctvbYwdCLbQLcvUbYwbYwbYwbYwbYwbYwbYwcvWbYwbYwbYwciWbTSbYNcsecvHcpAcuicuicLQcxrcGhcLOcxFcyCcMhcvIcwgcwdcwccwacvZcvYcvXbRJbYidBeckBckBckBckBcwIcwJbYwbYwbYwaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadcnqcnrctQctOctOcoqcoqcoqcoqcoqcoqcoqcoqcnrcnraadaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbYwbYwbYwcvubZxbZxbZxbZxbZxbZxdBfcvVcwjcolcwmcvvdBgbZxbZxbZxcvebZxbZxbZxbZxcvscvnclpdBdcoTcuZcwebYNcsecuYcrhcsycsycsycxmcvLcwRcvxcxkcuTdCJcmjcuUcuOcuNcuQcuPcuMbRJclwcmxbZhcxabQLbQLcwbcxbcxccwpbYwbYwbYwaaeaaaaadaaaaaaaaacxdcxdcxdaadaaaaaaaadaaaaaaaadaaaaaacqacnrcpmcnrcnrcoqcoqcoqcoqcoqcoqcoqcnrcnraadaadaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbYwbYwbYwcvubZxbZxbZxbZxbZxbZxdBfcvVcwjcolcwmcvvdBgbZxbZxbZxcvebZxbZxbZxbZxcvscvnclpdBdcoTcuZcwebYNcsecuYcrhcsycsycsycxmcvLcwRdwycxkcuTdCJcmjcuUcuOcuNcuQcuPcuMbRJclwcmxbZhcxabQLbQLcwbcxbcxccwpbYwbYwbYwaaeaaaaadaaaaaaaaacxdcxdcxdaadaaaaaaaadaaaaaaaadaaaaaacqacnrcpmcnrcnrcoqcoqcoqcoqcoqcoqcoqcnrcnraadaadaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbYwclfckXbZhcuScizbZhbQLdCCbYwcvtcvwcqhbYwbYwbYwcnCbQLckNcwTcwTcwTcwTbYwcwTcwTcwTcwTclscohclHcsecnmdBccsJcplcuictEcslcnLcvJbWacvdclqcmjcnIcnTcnUcnOcnPcnVbRJbQLcmxbYwbYwbYwbYvbYwbZhcxsdAibPldAjbPlcnEcnEcnEcnEcnEcnEcnEcnEcnEcnEcnEcnEcnEcnEcnEcnEcnEcnEcxxbVFbVWcnHcnrcnrcoqcoqcxAcoqcoqcnrcnraadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbYwbYwbYwbZhcdYcnCbZhbYwbYwbYwcwvclJcwxbYwaadbYwclrbYwckNcwTcmrcmrcwTcmpclZcoFcmscwTcwUcwVcwWcsecokcvccsqcsAcuicsxcsedAYcsecvKcmvbWBbRJbRJbRJbRJbRJbRJbRJbRJbQLcmxbYwcmIcmwcaybYwbZhdAldCDbYwbYwbYwaaeaaaaadaaaaaaaaacxdcxdcxdaadaaaaaaaadaaaaaaaadaadaadcxUcxVcoocopcnqcnrcnrcoqcorcoqcnrcnraadaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadbYwbYwbYwclrbYwbYwaaaaadcwMclLcwMaaaaadaadaaabYwckNcwTcmycmycmCcmAcmDcmDcmDcnecmOcmNcmEcsecsecsecsecsecnkcsecsecnjckzcoQcoKcoLckzbWpckBckBckBckBckBckBckBdAocnvdAncbucuScygcygcyhcyicygaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcyjcnocnocnpcnqcnqcnrcnrcnrcnrcnsaadaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaacCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIcCIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/tgstation.dme b/tgstation.dme
index 1db918ed388..117d42bdf40 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -34,6 +34,24 @@
#include "code\__HELPERS\time.dm"
#include "code\__HELPERS\type2type.dm"
#include "code\__HELPERS\unsorted.dm"
+#include "code\_onclick\adjacent.dm"
+#include "code\_onclick\ai.dm"
+#include "code\_onclick\click.dm"
+#include "code\_onclick\cyborg.dm"
+#include "code\_onclick\drag_drop.dm"
+#include "code\_onclick\item_attack.dm"
+#include "code\_onclick\observer.dm"
+#include "code\_onclick\other_mobs.dm"
+#include "code\_onclick\telekinesis.dm"
+#include "code\_onclick\hud\_defines.dm"
+#include "code\_onclick\hud\alien.dm"
+#include "code\_onclick\hud\alien_larva.dm"
+#include "code\_onclick\hud\hud.dm"
+#include "code\_onclick\hud\human.dm"
+#include "code\_onclick\hud\monkey.dm"
+#include "code\_onclick\hud\other_mobs.dm"
+#include "code\_onclick\hud\robot.dm"
+#include "code\_onclick\hud\screen_objects.dm"
#include "code\ATMOSPHERICS\atmospherics.dm"
#include "code\ATMOSPHERICS\datum_pipe_network.dm"
#include "code\ATMOSPHERICS\datum_pipeline.dm"
@@ -73,7 +91,6 @@
#include "code\datums\datacore.dm"
#include "code\datums\datumvars.dm"
#include "code\datums\disease.dm"
-#include "code\datums\hud.dm"
#include "code\datums\limbs.dm"
#include "code\datums\mind.dm"
#include "code\datums\mixed.dm"
@@ -194,7 +211,6 @@
#include "code\game\gamemodes\blob\blob.dm"
#include "code\game\gamemodes\blob\blob_finish.dm"
#include "code\game\gamemodes\blob\blob_report.dm"
-#include "code\game\gamemodes\blob\hud.dm"
#include "code\game\gamemodes\blob\overmind.dm"
#include "code\game\gamemodes\blob\powers.dm"
#include "code\game\gamemodes\blob\theblob.dm"
@@ -429,7 +445,6 @@
#include "code\game\objects\items\crayons.dm"
#include "code\game\objects\items\latexballoon.dm"
#include "code\game\objects\items\shooting_range.dm"
-#include "code\game\objects\items\tk_grab.dm"
#include "code\game\objects\items\toys.dm"
#include "code\game\objects\items\trash.dm"
#include "code\game\objects\items\devices\aicard.dm"
@@ -699,6 +714,7 @@
#include "code\modules\clothing\gloves\boxing.dm"
#include "code\modules\clothing\gloves\color.dm"
#include "code\modules\clothing\gloves\miscellaneous.dm"
+#include "code\modules\clothing\gloves\ninja.dm"
#include "code\modules\clothing\head\collectable.dm"
#include "code\modules\clothing\head\hardhat.dm"
#include "code\modules\clothing\head\helmet.dm"
@@ -803,12 +819,10 @@
#include "code\modules\mob\mob_movement.dm"
#include "code\modules\mob\mob_transformation_simple.dm"
#include "code\modules\mob\say.dm"
-#include "code\modules\mob\screen.dm"
#include "code\modules\mob\transform_procs.dm"
#include "code\modules\mob\update_icons.dm"
#include "code\modules\mob\camera\camera.dm"
#include "code\modules\mob\dead\death.dm"
-#include "code\modules\mob\dead\observer\hud.dm"
#include "code\modules\mob\dead\observer\login.dm"
#include "code\modules\mob\dead\observer\logout.dm"
#include "code\modules\mob\dead\observer\observer.dm"
@@ -837,7 +851,6 @@
#include "code\modules\mob\living\carbon\alien\humanoid\alien_powers.dm"
#include "code\modules\mob\living\carbon\alien\humanoid\death.dm"
#include "code\modules\mob\living\carbon\alien\humanoid\emote.dm"
-#include "code\modules\mob\living\carbon\alien\humanoid\hud.dm"
#include "code\modules\mob\living\carbon\alien\humanoid\humanoid.dm"
#include "code\modules\mob\living\carbon\alien\humanoid\inventory.dm"
#include "code\modules\mob\living\carbon\alien\humanoid\life.dm"
@@ -849,7 +862,6 @@
#include "code\modules\mob\living\carbon\alien\humanoid\caste\sentinel.dm"
#include "code\modules\mob\living\carbon\alien\larva\death.dm"
#include "code\modules\mob\living\carbon\alien\larva\emote.dm"
-#include "code\modules\mob\living\carbon\alien\larva\hud.dm"
#include "code\modules\mob\living\carbon\alien\larva\inventory.dm"
#include "code\modules\mob\living\carbon\alien\larva\larva.dm"
#include "code\modules\mob\living\carbon\alien\larva\life.dm"
@@ -861,14 +873,12 @@
#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\hud.dm"
#include "code\modules\mob\living\carbon\brain\life.dm"
#include "code\modules\mob\living\carbon\brain\MMI.dm"
#include "code\modules\mob\living\carbon\brain\say.dm"
#include "code\modules\mob\living\carbon\human\death.dm"
#include "code\modules\mob\living\carbon\human\emote.dm"
#include "code\modules\mob\living\carbon\human\examine.dm"
-#include "code\modules\mob\living\carbon\human\hud.dm"
#include "code\modules\mob\living\carbon\human\human.dm"
#include "code\modules\mob\living\carbon\human\human_attackalien.dm"
#include "code\modules\mob\living\carbon\human\human_attackhand.dm"
@@ -898,7 +908,6 @@
#include "code\modules\mob\living\carbon\monkey\death.dm"
#include "code\modules\mob\living\carbon\monkey\emote.dm"
#include "code\modules\mob\living\carbon\monkey\examine.dm"
-#include "code\modules\mob\living\carbon\monkey\hud.dm"
#include "code\modules\mob\living\carbon\monkey\inventory.dm"
#include "code\modules\mob\living\carbon\monkey\life.dm"
#include "code\modules\mob\living\carbon\monkey\login.dm"
@@ -914,7 +923,6 @@
#include "code\modules\mob\living\silicon\ai\ai.dm"
#include "code\modules\mob\living\silicon\ai\death.dm"
#include "code\modules\mob\living\silicon\ai\examine.dm"
-#include "code\modules\mob\living\silicon\ai\hud.dm"
#include "code\modules\mob\living\silicon\ai\laws.dm"
#include "code\modules\mob\living\silicon\ai\life.dm"
#include "code\modules\mob\living\silicon\ai\login.dm"
@@ -940,7 +948,6 @@
#include "code\modules\mob\living\silicon\robot\death.dm"
#include "code\modules\mob\living\silicon\robot\emote.dm"
#include "code\modules\mob\living\silicon\robot\examine.dm"
-#include "code\modules\mob\living\silicon\robot\hud.dm"
#include "code\modules\mob\living\silicon\robot\inventory.dm"
#include "code\modules\mob\living\silicon\robot\laws.dm"
#include "code\modules\mob\living\silicon\robot\life.dm"
@@ -980,7 +987,6 @@
#include "code\modules\mob\living\simple_animal\hostile\tree.dm"
#include "code\modules\mob\living\simple_animal\hostile\retaliate\clown.dm"
#include "code\modules\mob\living\simple_animal\hostile\retaliate\retaliate.dm"
-#include "code\modules\mob\new_player\hud.dm"
#include "code\modules\mob\new_player\login.dm"
#include "code\modules\mob\new_player\logout.dm"
#include "code\modules\mob\new_player\new_player.dm"