diff --git a/baystation12.dme b/baystation12.dme
index f367650640a..d19f8bd2669 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -730,10 +730,6 @@
#include "code\modules\awaymissions\pamphlet.dm"
#include "code\modules\awaymissions\trigger.dm"
#include "code\modules\awaymissions\zlevel.dm"
-#include "code\modules\awaymissions\maploader\dmm_suite.dm"
-#include "code\modules\awaymissions\maploader\reader.dm"
-#include "code\modules\awaymissions\maploader\swapmaps.dm"
-#include "code\modules\awaymissions\maploader\writer.dm"
#include "code\modules\client\client defines.dm"
#include "code\modules\client\client procs.dm"
#include "code\modules\client\preferences.dm"
@@ -831,6 +827,10 @@
#include "code\modules\library\lib_machines.dm"
#include "code\modules\library\lib_readme.dm"
#include "code\modules\liquid\splash_simulation.dm"
+#include "code\modules\maps\dmm_suite.dm"
+#include "code\modules\maps\reader.dm"
+#include "code\modules\maps\swapmaps.dm"
+#include "code\modules\maps\writer.dm"
#include "code\modules\mining\machine_input_output_plates.dm"
#include "code\modules\mining\machine_processing.dm"
#include "code\modules\mining\machine_stacking.dm"
diff --git a/code/WorkInProgress/Mini/atmos_control.dm b/code/WorkInProgress/Mini/atmos_control.dm
index 15dd1c7fe95..f9986d50e72 100644
--- a/code/WorkInProgress/Mini/atmos_control.dm
+++ b/code/WorkInProgress/Mini/atmos_control.dm
@@ -1,6 +1,6 @@
/obj/item/weapon/circuitboard/atmoscontrol
name = "\improper Central Atmospherics Computer Circuitboard"
- build_path = "/obj/machinery/computer/security/atmoscontrol"
+ build_path = /obj/machinery/computer/atmoscontrol
/obj/machinery/computer/atmoscontrol
name = "\improper Central Atmospherics Computer"
diff --git a/code/controllers/master_controller.dm b/code/controllers/master_controller.dm
index 3633cda3748..b252163b03d 100644
--- a/code/controllers/master_controller.dm
+++ b/code/controllers/master_controller.dm
@@ -51,7 +51,8 @@ datum/controller/game_controller/New()
datum/controller/game_controller/proc/setup()
world.tick_lag = config.Ticklag
- createRandomZlevel()
+ spawn(20)
+ createRandomZlevel()
if(!air_master)
air_master = new /datum/controller/air_system()
diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm
index cfb61b50424..db320be2935 100644
--- a/code/game/machinery/computer/HolodeckControl.dm
+++ b/code/game/machinery/computer/HolodeckControl.dm
@@ -96,6 +96,36 @@
if(target)
loadProgram(target)
+ else if(href_list["desert"])
+ target = locate(/area/holodeck/source_desert)
+ if(target)
+ loadProgram(target)
+
+ else if(href_list["space"])
+ target = locate(/area/holodeck/source_space)
+ if(target)
+ loadProgram(target)
+
+ else if(href_list["picnicarea"])
+ target = locate(/area/holodeck/source_picnicarea)
+ if(target)
+ loadProgram(target)
+
+ else if(href_list["snowfield"])
+ target = locate(/area/holodeck/source_snowfield)
+ if(target)
+ loadProgram(target)
+
+ else if(href_list["theatre"])
+ target = locate(/area/holodeck/source_theatre)
+ if(target)
+ loadProgram(target)
+
+ else if(href_list["meetinghall"])
+ target = locate(/area/holodeck/source_meetinghall)
+ if(target)
+ loadProgram(target)
+
else if(href_list["turnoff"])
target = locate(/area/holodeck/source_plating)
if(target)
diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm
index 0cb83e5ac55..81243486139 100644
--- a/code/game/mecha/equipment/tools/tools.dm
+++ b/code/game/mecha/equipment/tools/tools.dm
@@ -1053,4 +1053,16 @@
set_ready_state(0)
chassis.use_power(energy_drain)
do_after_cooldown()
- return 1
\ No newline at end of file
+ return 1
+
+/obj/item/weapon/paintkit //Please don't use this for anything, it's a base type for custom mech paintjobs.
+ name = "mecha customisation kit"
+ desc = "A generic kit containing all the needed tools and parts to turn a mech into another mech."
+ icon = 'custom_items.dmi'
+ icon_state = "royce_kit"
+
+ var/new_name = "mech" //What is the variant called?
+ var/new_desc = "A mech." //How is the new mech described?
+ var/new_icon = "ripley" //What base icon will the new mech use?
+ var/removable = null //Can the kit be removed?
+ var/list/allowed_types = list() //Types of mech that the kit will work on.
\ No newline at end of file
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index 9d8291733cb..c94c38c6c32 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -759,6 +759,34 @@
user.visible_message("[user] attaches [W] to [src].", "You attach [W] to [src]")
return
+ else if(istype(W, /obj/item/weapon/paintkit))
+
+ if(occupant)
+ user << "You can't customize a mech while someone is piloting it - that would be unsafe!"
+ return
+
+ var/obj/item/weapon/paintkit/P = W
+ var/found = null
+
+ for(var/type in P.allowed_types)
+ if(type==src.initial_icon)
+ found = 1
+ break
+
+ if(!found)
+ user << "That kit isn't meant for use on this class of exosuit."
+ return
+
+ user.visible_message("[user] opens [P] and spends some quality time customising [src].")
+
+ src.name = P.new_name
+ src.desc = P.new_desc
+ src.initial_icon = P.new_icon
+ src.reset_icon()
+
+ user.drop_item()
+ del(P)
+
else
call((proc_res["dynattackby"]||src), "dynattackby")(W,user)
/*
diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm
index 84bff5cffc4..d7e6a00fdbf 100644
--- a/code/game/mecha/working/ripley.dm
+++ b/code/game/mecha/working/ripley.dm
@@ -2,6 +2,7 @@
desc = "Autonomous Power Loader Unit. The workhorse of the exosuit world."
name = "APLU \"Ripley\""
icon_state = "ripley"
+ initial_icon = "ripley"
step_in = 6
max_temperature = 20000
health = 200
@@ -19,6 +20,7 @@
desc = "Standart APLU chassis was refitted with additional thermal protection and cistern."
name = "APLU \"Firefighter\""
icon_state = "firefighter"
+ initial_icon = "firefighter"
max_temperature = 65000
health = 250
lights_power = 8
@@ -107,18 +109,4 @@
T.Entered(A)
step_rand(A)
..()
- return
-
-
-/obj/mecha/working/ripley/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/fluff/sven_fjeltson_1))//this shit broke ripleys
- src.icon_state = "earth"
- src.initial_icon = "earth"
- src.name = "APLU \"Strike the Earth!\""
- src.desc = "Looks like an over worked, under maintained Ripley with some horrific damage."
- user << "You pick up your old \"Strike the Earth!\" APLU."
- user.drop_item()
- del(W)
- return
- else
- ..()
+ return
\ No newline at end of file
diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/effects/aliens.dm
index 523e0ff72eb..1e762e68b3f 100644
--- a/code/game/objects/effects/aliens.dm
+++ b/code/game/objects/effects/aliens.dm
@@ -110,6 +110,11 @@
for(var/mob/O in oviewers(src))
O.show_message("\red [usr] destroys the [name]!", 1)
health = 0
+ else
+ usr << "\blue You claw at the [name]."
+ for(var/mob/O in oviewers(src))
+ O.show_message("\red [usr] claws at the [name]!", 1)
+ health -= rand(5,10)
healthcheck()
return
diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index 07f7443fc85..8e533cf37b2 100755
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -850,7 +850,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
P.overlays.Cut()
P.overlays += image('icons/obj/pda.dmi', "pda-r")
else
- U << "ERROR: Server isn't responding."
+ U << "ERROR: Messaging server is not responding."
/obj/item/device/pda/verb/verb_remove_id()
@@ -1162,7 +1162,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
plist[text("[name]")] = P
return plist
-
+
//Some spare PDAs in a box
/obj/item/weapon/storage/box/PDAs
diff --git a/code/modules/awaymissions/maploader/reader.dm b/code/modules/awaymissions/maploader/reader.dm
deleted file mode 100644
index 0fc8004787a..00000000000
--- a/code/modules/awaymissions/maploader/reader.dm
+++ /dev/null
@@ -1,251 +0,0 @@
-//
-dmm_suite{
- load_map(var/dmm_file as file, var/z_offset as num){
- if(!z_offset){
- z_offset = world.maxz+1
- }
- var/quote = ascii2text(34)
- var/tfile = file2text(dmm_file)
- var/tfile_len = length(tfile)
- var/list/grid_models[0]
- var/key_len = length(copytext(tfile,2,findtext(tfile,quote,2,0)))
- for(var/lpos=1;lposlength(zgrid)){break}
- sleep(-1)
- }
- if(findtext(tfile,quote+"}",zpos,0)+2>=tfile_len){break}
- sleep(-1)
- }
- }
- proc{
- parse_grid(var/model as text,var/xcrd as num,var/ycrd as num,var/zcrd as num){
- /*Method parse_grid()
- - Accepts a text string containing a comma separated list of type paths of the
- same construction as those contained in a .dmm file, and instantiates them.
- */
- var/list/text_strings[0]
- for(var/index=1;findtext(model,quote);index++){
- /*Loop: Stores quoted portions of text in text_strings, and replaces them with an
- index to that list.
- - Each iteration represents one quoted section of text.
- */
- text_strings.len=index
- text_strings[index] = copytext(model,findtext(model,quote)+1,findtext(model,quote,findtext(model,quote)+1,0))
- model = copytext(model,1,findtext(model,quote))+"~[index]"+copytext(model,findtext(model,quote,findtext(model,quote)+1,0)+1,0)
- sleep(-1)
- }
- var/list/old_turf_underlays[0]
- var/old_turf_density
- var/old_turf_opacity
- /*The old_turf variables store information about turfs instantiated in this location/iteration.
- This is done to approximate the layered turf effect of DM's map editor.
- An image of each turf is stored in old_turf_underlays[], and is later added to the new turf's underlays.
- */
- for(var/dpos=1;dpos!=0;dpos=findtext(model,",",dpos,0)+1){
- /*Loop: Identifies each object's data, instantiates it, and reconstitues it's fields.
- - Each iteration represents one object's data, including type path and field values.
- */
- var/full_def = copytext(model,dpos,findtext(model,",",dpos,0))
- var/atom_def = text2path(copytext(full_def,1,findtext(full_def,"{")))
- var/list/attributes[0]
- if(findtext(full_def,"{")){
- full_def = copytext(full_def,1,length(full_def))
- for(var/apos=findtext(full_def,"{")+1;apos!=0;apos=findtext(full_def,";",apos,0)+1){
- //Loop: Identifies each attribute/value pair, and stores it in attributes[].
- attributes.Add(copytext(full_def,apos,findtext(full_def,";",apos,0)))
- if(!findtext(copytext(full_def,apos,0),";")){break}
- sleep(-1)
- }
- }
- //Construct attributes associative list
- var/list/fields = new(0)
- for(var/index=1;index<=attributes.len;index++){
- var/trim_left = trim_text(copytext(attributes[index],1,findtext(attributes[index],"=")))
- var/trim_right = trim_text(copytext(attributes[index],findtext(attributes[index],"=")+1,0))
- //Check for string
- if(findtext(trim_right,"~")){
- var/reference_index = copytext(trim_right,findtext(trim_right,"~")+1,0)
- trim_right=text_strings[text2num(reference_index)]
- }
- //Check for number
- else if(isnum(text2num(trim_right))){
- trim_right = text2num(trim_right)
- }
- //Check for file
- else if(copytext(trim_right,1,2) == "'"){
- trim_right = file(copytext(trim_right,2,length(trim_right)))
- }
- fields[trim_left] = trim_right
- }
- //End construction
-
-
- //Begin Instanciation
- var/atom/instance
- var/dmm_suite/preloader/_preloader = new(fields)
- if(ispath(atom_def,/area)){
- instance = locate(atom_def)
- instance.contents.Add(locate(xcrd,ycrd,zcrd))
- }
- else if(ispath(atom_def,/turf)){
- var/turf/old_turf = locate(xcrd,ycrd,zcrd)
- if(old_turf.density){old_turf_density = 1}
- if(old_turf.opacity){old_turf_opacity = 1}
- if(old_turf.icon){
- var/image/old_turf_image = image(old_turf.icon,null,old_turf.icon_state,old_turf.layer,old_turf.dir)
- old_turf_underlays.Add(old_turf_image)
- }
- instance = new atom_def(old_turf, _preloader)
- for(var/inverse_index=old_turf_underlays.len;inverse_index;inverse_index--){
- var/image/image_underlay = old_turf_underlays[inverse_index]
- image_underlay.loc = instance
- instance.underlays.Add(image_underlay)
- }
- if(!instance.density){instance.density = old_turf_density}
- if(!instance.opacity){instance.opacity = old_turf_opacity}
- }
-
- if(_preloader && instance){
- _preloader.load(instance)
- }
- //End Instanciation
- if(!findtext(copytext(model,dpos,0),",")){break}
- sleep(-1)
- }
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
- for(var/dpos=1;dpos!=0;dpos=findtext(model,",",dpos,0)+1)
- {
- /*Loop: Identifies each object's data, instantiates it, and reconstitues it's fields.
- - Each iteration represents one object's data, including type path and field values.
- */
- var/full_def = copytext(model,dpos,findtext(model,",",dpos,0))
- var/atom_def = text2path(copytext(full_def,1,findtext(full_def,"{")))
- var/list/attributes[0]
- if(findtext(full_def,"{")){
- full_def = copytext(full_def,1,length(full_def))
- for(var/apos=findtext(full_def,"{")+1;apos!=0;apos=findtext(full_def,";",apos,0)+1){
- //Loop: Identifies each attribute/value pair, and stores it in attributes[].
- attributes.Add(copytext(full_def,apos,findtext(full_def,";",apos,0)))
- if(!findtext(copytext(full_def,apos,0),";")){break}
- sleep(-1)
- }
- }
- //Construct attributes associative list
- var/list/fields = new(0)
- for(var/index=1;index<=attributes.len;index++){
- var/trim_left = trim_text(copytext(attributes[index],1,findtext(attributes[index],"=")))
- var/trim_right = trim_text(copytext(attributes[index],findtext(attributes[index],"=")+1,0))
- //Check for string
- if(findtext(trim_right,"~")){
- var/reference_index = copytext(trim_right,findtext(trim_right,"~")+1,0)
- trim_right=text_strings[text2num(reference_index)]
- }
- //Check for number
- else if(isnum(text2num(trim_right))){
- trim_right = text2num(trim_right)
- }
- //Check for file
- else if(copytext(trim_right,1,2) == "'"){
- trim_right = file(copytext(trim_right,2,length(trim_right)))
- }
- fields[trim_left] = trim_right
- }
- //End construction
-
-
- //Begin Instanciation
- var/atom/instance
- var/dmm_suite/preloader/_preloader = new(fields)
- if(!ispath(atom_def,/area) && !ispath(atom_def,/turf))
- {
- instance = new atom_def(locate(xcrd,ycrd,zcrd), _preloader)
- }
-
-
- if(_preloader && instance)
- {
- _preloader.load(instance)
- }
- //End Instanciation
- if(!findtext(copytext(model,dpos,0),",")){break}
- sleep(-1)
- }
-
-
-
-
- }
- trim_text(var/what as text){
- while(length(what) && findtext(what," ",1,2)){
- what=copytext(what,2,0)
- }
- while(length(what) && findtext(what," ",length(what),0)){
- what=copytext(what,1,length(what))
- }
- return what
- }
- }
- }
-atom/New(atom/loc, dmm_suite/preloader/_dmm_preloader){
- if(istype(_dmm_preloader, /dmm_suite/preloader)){
- _dmm_preloader.load(src)
- }
- . = ..()
- }
-dmm_suite{
- preloader{
- parent_type = /datum
- var{
- list/attributes
- }
- New(list/the_attributes){
- .=..()
- if(!the_attributes.len){ Del()}
- attributes = the_attributes
- }
- proc{
- load(atom/what){
- for(var/attribute in attributes){
- what.vars[attribute] = attributes[attribute]
- }
- Del()
- }
- }
- }
- }
-
diff --git a/code/modules/awaymissions/zlevel.dm b/code/modules/awaymissions/zlevel.dm
index 75454872bf4..d76d9d676b3 100644
--- a/code/modules/awaymissions/zlevel.dm
+++ b/code/modules/awaymissions/zlevel.dm
@@ -40,7 +40,7 @@ proc/createRandomZlevel()
var/map = pick(potentialRandomZlevels)
var/file = file(map)
if(isfile(file))
- maploader.load_map(file)
+ maploader.load_map(file, load_speed = 100)
for(var/obj/effect/landmark/L in landmarks_list)
if (L.name != "awaystart")
diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm
index 893c8f47e54..14f250ebafa 100644
--- a/code/modules/clothing/head/jobs.dm
+++ b/code/modules/clothing/head/jobs.dm
@@ -63,18 +63,18 @@
//Medical
/obj/item/clothing/head/surgery
name = "surgical cap"
- desc = "A cap surgeons wear during operations. Keeps thier hair from tickling your internal organs."
+ desc = "A cap surgeons wear during operations. Keeps their hair from tickling your internal organs."
icon_state = "surgcap_blue"
- flags = FPRINT | TABLEPASS | BLOCKHAIR
+ flags = FPRINT | TABLEPASS | BLOCKHEADHAIR
/obj/item/clothing/head/surgery/purple
- desc = "A cap surgeons wear during operations. Keeps thier hair from tickling your internal organs. This one is deep purple."
+ desc = "A cap surgeons wear during operations. Keeps their hair from tickling your internal organs. This one is deep purple."
icon_state = "surgcap_purple"
/obj/item/clothing/head/surgery/blue
- desc = "A cap surgeons wear during operations. Keeps thier hair from tickling your internal organs. This one is baby blue"
+ desc = "A cap surgeons wear during operations. Keeps their hair from tickling your internal organs. This one is baby blue."
icon_state = "surgcap_blue"
/obj/item/clothing/head/surgery/green
- desc = "A cap surgeons wear during operations. Keeps thier hair from tickling your internal organs. This one is dark green"
+ desc = "A cap surgeons wear during operations. Keeps their hair from tickling your internal organs. This one is dark green."
icon_state = "surgcap_green"
diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm
index 086f04efa0f..33c1aafbb4c 100644
--- a/code/modules/customitems/item_defines.dm
+++ b/code/modules/customitems/item_defines.dm
@@ -1,4 +1,3 @@
-hi
// Add custom items you give to people here, and put their icons in custom_items.dmi
// Remember to change 'icon = 'custom_items.dmi'' for items not using /obj/item/fluff as a base
// Clothing item_state doesn't use custom_items.dmi. Just add them to the normal clothing files.
@@ -359,19 +358,29 @@ hi
////// Ripley customisation kit - Butchery Royce - MayeDay
-/obj/item/weapon/fluff/butcher_royce_1
+/obj/item/weapon/paintkit/fluff/butcher_royce_1
name = "Ripley customisation kit"
desc = "A kit containing all the needed tools and parts to turn an APLU Ripley into a Titan's Fist worker mech."
icon = 'custom_items.dmi'
icon_state = "royce_kit"
+ new_name = "APLU \"Titan's Fist\""
+ new_desc = "This ordinary mining Ripley has been customized to look like a unit of the Titans Fist."
+ new_icon = "titan"
+ allowed_types = list("ripley","firefighter")
+
////// Ripley customisation kit - Sven Fjeltson - Mordeth221
-/obj/item/weapon/fluff/sven_fjeltson_1
- name = "Mercenary APLU kit"
- desc = "A kit containing all the needed tools and parts to turn an APLU Ripley into an old Mercenaries APLU."
- icon = 'custom_items.dmi'
- icon_state = "sven_kit"
+/obj/item/weapon/paintkit/fluff/sven_fjeltson_1
+ name = "Mercenary APLU kit"
+ desc = "A kit containing all the needed tools and parts to turn an APLU Ripley into an old Mercenaries APLU."
+ icon = 'custom_items.dmi'
+ icon_state = "sven_kit"
+
+ new_name = "APLU \"Strike the Earth!\""
+ new_desc = "Looks like an over worked, under maintained Ripley with some horrific damage."
+ new_icon = "earth"
+ allowed_types = list("ripley","firefighter")
//////////////////////////////////
//////////// Clothing ////////////
diff --git a/code/modules/awaymissions/maploader/dmm_suite.dm b/code/modules/maps/dmm_suite.dm
similarity index 94%
rename from code/modules/awaymissions/maploader/dmm_suite.dm
rename to code/modules/maps/dmm_suite.dm
index e2311ed7eee..87de0e758e5 100644
--- a/code/modules/awaymissions/maploader/dmm_suite.dm
+++ b/code/modules/maps/dmm_suite.dm
@@ -53,10 +53,11 @@ dmm_suite{
*/
- verb/load_map(var/dmm_file as file, var/z_offset as num){
+ verb/load_map(var/dmm_file as file, var/z_offset as num, var/load_speed as num)
// dmm_file: A .dmm file to load (Required).
// z_offset: A number representing the z-level on which to start loading the map (Optional).
- }
+ // load_speed: How many tiles should be loaded per second, defaults to no pause (Optional)
+
verb/write_map(var/turf/t1 as turf, var/turf/t2 as turf, var/flags as num){
// t1: A turf representing one corner of a three dimensional grid (Required).
// t2: Another turf representing the other corner of the same grid (Required).
diff --git a/code/modules/maps/reader.dm b/code/modules/maps/reader.dm
new file mode 100644
index 00000000000..cc107abd04f
--- /dev/null
+++ b/code/modules/maps/reader.dm
@@ -0,0 +1,325 @@
+dmm_suite
+
+ var/debug_file = file("maploader_debug.txt")
+
+ load_map(var/dmm_file as file, var/z_offset as num, var/y_offset as num, var/x_offset as num, var/load_speed = 0 as num)
+ if(!z_offset)
+ z_offset = world.maxz + 1
+
+ //Ensure values are sane.
+ else if(z_offset < 0)
+ z_offset = abs(z_offset)
+ else if(!isnum(z_offset))
+ z_offset = 0
+
+ if(x_offset < 0)
+ x_offset = abs(x_offset)
+ else if(!isnum(x_offset))
+ x_offset = 0
+
+ if(y_offset < 0)
+ y_offset = abs(y_offset)
+ else if(!isnum(y_offset))
+ y_offset = 0
+
+ debug_file << "Starting Map Load @ ([x_offset], [y_offset], [z_offset]), [load_speed] tiles per second."
+
+ //Handle slowed loading.
+ var/delay_chance = 0
+ if(load_speed > 0)
+ //Chance out of 100 every tenth of a second.
+ delay_chance = 1000 / load_speed
+
+ //String holding a quotation mark.
+ var/quote = ascii2text(34)
+
+ var/input_file = file2text(dmm_file)
+ var/input_file_len = length(input_file)
+
+ //Stores the contents of each tile model in the map
+ var/list/grid_models = list()
+ //Length of the tile model code. e.g. "aaa" is 3 long.
+ var/key_len = length(copytext(input_file, 2 ,findtext(input_file, quote, 2)))
+ //The key of the default tile model. (In SS13 this is: "/turf/space,/area")
+ var/default_key
+
+ debug_file << " Building turf array."
+
+ //Iterates through the mapfile to build the model tiles for the map.
+ for(var/line_position = 1; line_position < input_file_len; line_position = findtext(input_file,"\n", line_position) + 1)
+ var/next_line = copytext(input_file, line_position, findtext(input_file,"\n", line_position) - 1)
+
+ //If the first character in the line is not a quote, the model tiles are all defined.
+ if(copytext(next_line, 1, 2) != quote)
+ break
+
+ //Copy contents of the model into the grid_models list.
+ var/model_key = copytext(next_line, 2, findtext(input_file, quote, 2))
+ var/model_contents = copytext(next_line, findtext(next_line, "=" ) + 3)
+ if(!default_key && model_contents == "[world.turf],[world.area]")
+ default_key = model_key
+ grid_models[model_key] = model_contents
+ if(prob(delay_chance))
+ sleep(1)
+
+ //Co-ordinates of the tile being loaded.
+ var/z_coordinate = -1
+ var/y_coordinate = 0
+ var/x_coordinate = 0
+
+ //Store the
+ var/y_depth = 0
+
+ //Iterate through all z-levels to load the tiles.
+ for(var/z_position = findtext(input_file, "\n(1,1,"); TRUE; z_position = findtext(input_file, "\n(1,1,", z_position + 1))
+ //break when there are no more z-levels.
+ if(z_position == 0)
+ break
+
+ //Increment the z_coordinate and update the world's borders
+ z_coordinate++
+ world.maxz = max(world.maxz, z_coordinate + z_offset)
+
+ //Here we go!
+ y_coordinate = 0
+ y_depth = 0
+ var/z_level = copytext(input_file, \
+ findtext(input_file, quote + "\n", z_position) + 2,\
+ findtext(input_file, "\n" + quote, z_position) + 1)
+
+ //Iterate through each line, increasing the y_coordinate.
+ for(var/grid_position = 1; grid_position != 0; grid_position = findtext(z_level, "\n", grid_position) + 1)
+ //Grab this line of data.
+ var/grid_line = copytext(z_level, grid_position, findtext(z_level, "\n", grid_position))
+
+ //Compute the size of the z-levels y axis.
+ if(!y_depth)
+ y_depth = length(z_level) / (length(grid_line) + 1)
+ y_depth += y_offset
+ if(y_depth != round(y_depth, 1))
+ debug_file << " Warning: y_depth is not a round number"
+
+ //And update the worlds variables.
+ if(world.maxy < y_depth)
+ world.maxy = y_depth
+ //The top of the map is the highest "y" co-ordinate, so we start there and iterate downwards
+ if(!y_coordinate)
+ y_coordinate = y_depth + 1
+
+ //Decrement and load this line of the map.
+ y_coordinate--
+ x_coordinate = x_offset
+
+ //Iterate through the line loading the model tile data.
+ for(var/model_position = 1; model_position <= length(grid_line); model_position += key_len)
+ x_coordinate++
+
+ //Find the model key and load that model.
+ var/model_key = copytext(grid_line, model_position, model_position + key_len)
+ //If the key is the default one, skip it and save the computation time.
+ if(model_key == default_key)
+ continue
+
+ if(world.maxx < x_coordinate)
+ world.maxx = x_coordinate
+ parse_grid(grid_models[model_key], x_coordinate, y_coordinate, z_coordinate + z_offset)
+
+ if(prob(delay_chance))
+ sleep(1)
+
+ //If we hit the last tile in this z-level, we should break out of the loop.
+ if(grid_position + length(grid_line) + 1 > length(z_level))
+ break
+
+ //Break out of the loop when we hit the end of the file.
+ if(findtext(input_file, quote + "}", z_position) + 2 >= input_file_len)
+ break
+
+
+ proc/parse_grid(var/model as text, var/x_coordinate as num, var/y_coordinate as num, var/z_coordinate as num)
+ //Accepts a text string containing a comma separated list of type paths of the
+ // same construction as those contained in a .dmm file, and instantiates them.
+
+ var/list/text_strings = list()
+ for(var/index = 1; findtext(model, quote); index++)
+ /*Loop: Stores quoted portions of text in text_strings, and replaces them with an
+ index to that list.
+ - Each iteration represents one quoted section of text.
+ */
+ //Add the next section of quoted text to the list
+ var/first_quote = findtext(model, quote)
+ var/second_quote = findtext(model, quote, first_quote + 1)
+ var/quoted_chunk = copytext(model, first_quote + 1, second_quote)
+ text_strings += quoted_chunk
+ //Then remove the quoted section.
+ model = copytext(model, 1, first_quote) + "~[index]" + copytext(model, second_quote + 1)
+
+ var/debug_output = 0
+ //if(x_coordinate == 86 && y_coordinate == 88 && z_coordinate == 7)
+ // debug_output = 1
+
+ if(debug_output)
+ debug_file << " Now debugging turf: [model] ([x_coordinate], [y_coordinate], [z_coordinate])"
+
+ var/next_position = 1
+ for(var/data_position = 1, next_position || data_position != 1, data_position = next_position + 1)
+ next_position = findtext(model, ",/", data_position)
+
+ var/full_def = copytext(model, data_position, next_position)
+
+ if(debug_output)
+ debug_file << " Current Line: [full_def] -- ([data_position] - [next_position])"
+
+ /*Loop: Identifies each object's data, instantiates it, and reconstitues it's fields.
+ - Each iteration represents one object's data, including type path and field values.
+ */
+
+ //Load the attribute data.
+ var/attribute_position = findtext(full_def,"{")
+ var/atom_def = text2path(copytext(full_def, 1, attribute_position))
+
+ var/list/attributes = list()
+ if(attribute_position)
+ full_def = copytext(full_def, attribute_position + 1)
+ if(debug_output)
+ debug_file << " Atom Def: [atom_def]"
+ debug_file << " Parameters: [full_def]"
+
+ var/next_attribute = 1
+ for(attribute_position = 1, next_attribute || attribute_position != 1, attribute_position = next_attribute + 1)
+ next_attribute = findtext(full_def, ";", attribute_position)
+
+ //Loop: Identifies each attribute/value pair, and stores it in attributes[].
+ attributes += copytext(full_def, attribute_position, next_attribute)
+
+ //Construct attributes associative list
+ var/list/fields = list()
+ for(var/attribute in attributes)
+ var/trim_left = trim_text(copytext(attribute, 1, findtext(attribute, "=")))
+ var/trim_right = trim_text(copytext(attribute, findtext(attribute, "=") + 1))
+
+ if(findtext(trim_right, "list("))
+ trim_right = get_list(trim_right, text_strings)
+
+ else if(findtext(trim_right, "~"))//Check for strings
+ while(findtext(trim_right,"~"))
+ var/reference_index = copytext(trim_right, findtext(trim_right, "~") + 1)
+ trim_right = text_strings[text2num(reference_index)]
+
+ //Check for numbers
+ else if(isnum(text2num(trim_right)))
+ trim_right = text2num(trim_right)
+
+ //Check for file
+ else if(copytext(trim_right,1,2) == "'")
+ trim_right = file(copytext(trim_right, 2, length(trim_right)))
+
+ fields[trim_left] = trim_right
+ sleep(-1)
+
+
+ if(debug_output)
+ var/return_data = " Debug Fields:"
+ for(var/item in fields)
+ return_data += " [item] = [fields[item]];"
+ debug_file << return_data
+
+ //Begin Instanciation
+ var/atom/instance
+
+ if(ispath(atom_def,/area))
+ instance = locate(atom_def)
+ if(!istype(instance, atom_def))
+ instance = new atom_def
+ instance.contents.Add(locate(x_coordinate,y_coordinate,z_coordinate))
+
+ else
+ instance = new atom_def(locate(x_coordinate,y_coordinate,z_coordinate))
+ if(instance)
+ for(var/item in fields)
+ instance.vars[item] = fields[item]
+ else if(!(atom_def in borked_paths))
+ borked_paths += atom_def
+ var/return_data = " Failure [atom_def] @ ([x_coordinate], [y_coordinate], [z_coordinate]) fields:"
+ for(var/item in fields)
+ return_data += " [item] = [fields[item]];"
+ debug_file << return_data
+
+ sleep(-1)
+ return 1
+
+ var/list/borked_paths = list()
+
+ proc/trim_text(var/what as text)
+ while(length(what) && findtext(what, " ", 1, 2))
+ what = copytext(what, 2)
+
+ while(length(what) && findtext(what, " ", length(what)))
+ what = copytext(what, 1, length(what))
+
+ return what
+
+ proc/get_list(var/text, var/list/text_strings)
+ //First, trim the data to just the list contents
+ var/list_start = findtext(text, "(") + 1
+ var/list_end = findtext(text, ")", list_start)
+ var/list_contents = copytext(text, list_start, list_end)
+
+ //Then, we seperate it into the individual entries
+
+ var/list/entries = list()
+ var/entry_end = 1
+
+ for(var/entry_start = 1, entry_end || entry_start != 1, entry_start = entry_end + 1)
+ entry_end = findtext(list_contents, ",", entry_start)
+ entries += copytext(list_contents, entry_start, entry_end)
+
+ //Finally, we assemble the completed list.
+ var/list/final_list = list()
+ for(var/entry in entries)
+ var/equals_position = findtext(entry, "=")
+
+ if(equals_position)
+ var/trim_left = trim_text(copytext(entry, 1, equals_position))
+ var/trim_right = trim_text(copytext(entry, equals_position + 1))
+
+ if(findtext(trim_right, "list("))
+ trim_right = get_list(trim_right, text_strings)
+
+ else if(findtext(trim_right, "~"))//Check for strings
+ while(findtext(trim_right,"~"))
+ var/reference_index = copytext(trim_right, findtext(trim_right, "~") + 1)
+ trim_right = text_strings[text2num(reference_index)]
+
+ //Check for numbers
+ else if(isnum(text2num(trim_right)))
+ trim_right = text2num(trim_right)
+
+ //Check for file
+ else if(copytext(trim_right,1,2) == "'")
+ trim_right = file(copytext(trim_right, 2, length(trim_right)))
+
+ if(findtext(trim_left, "~"))//Check for strings
+ while(findtext(trim_left,"~"))
+ var/reference_index = copytext(trim_left, findtext(trim_left, "~") + 1)
+ trim_left = text_strings[text2num(reference_index)]
+
+ final_list[trim_left] = trim_right
+
+ else
+ if(findtext(entry, "~"))//Check for strings
+ while(findtext(entry, "~"))
+ var/reference_index = copytext(entry, findtext(entry, "~") + 1)
+ entry = text_strings[text2num(reference_index)]
+
+ //Check for numbers
+ else if(isnum(text2num(entry)))
+ entry = text2num(entry)
+
+ //Check for file
+ else if(copytext(entry, 1, 2) == "'")
+ entry = file(copytext(entry, 2, length(entry)))
+
+ final_list += entry
+
+ return final_list
\ No newline at end of file
diff --git a/code/modules/awaymissions/maploader/swapmaps.dm b/code/modules/maps/swapmaps.dm
similarity index 100%
rename from code/modules/awaymissions/maploader/swapmaps.dm
rename to code/modules/maps/swapmaps.dm
diff --git a/code/modules/awaymissions/maploader/writer.dm b/code/modules/maps/writer.dm
similarity index 100%
rename from code/modules/awaymissions/maploader/writer.dm
rename to code/modules/maps/writer.dm
diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm
index 1fa82e5778d..3bdf798a6bd 100644
--- a/code/modules/mob/living/carbon/human/inventory.dm
+++ b/code/modules/mob/living/carbon/human/inventory.dm
@@ -88,7 +88,7 @@
update_inv_glasses()
else if (W == head)
head = null
- if(W.flags & BLOCKHAIR)
+ if((W.flags & BLOCKHAIR) || (W.flags & BLOCKHEADHAIR))
update_hair(0) //rebuild hair
success = 1
update_inv_head()
@@ -107,7 +107,7 @@
else if (W == wear_mask)
wear_mask = null
success = 1
- if(W.flags & BLOCKHAIR)
+ if((W.flags & BLOCKHAIR) || (W.flags & BLOCKHEADHAIR))
update_hair(0) //rebuild hair
if(internal)
if(internals)
@@ -188,7 +188,7 @@
update_inv_back(redraw_mob)
if(slot_wear_mask)
src.wear_mask = W
- if(wear_mask.flags & BLOCKHAIR)
+ if((wear_mask.flags & BLOCKHAIR) || (wear_mask.flags & BLOCKHEADHAIR))
update_hair(redraw_mob) //rebuild hair
W.equipped(src, slot)
update_inv_wear_mask(redraw_mob)
@@ -229,7 +229,7 @@
update_inv_gloves(redraw_mob)
if(slot_head)
src.head = W
- if(head.flags & BLOCKHAIR)
+ if((head.flags & BLOCKHAIR) || (head.flags & BLOCKHEADHAIR))
update_hair(redraw_mob) //rebuild hair
if(istype(W,/obj/item/clothing/head/kitty))
W.update_icon(src)
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index f10120d66c6..811ffb2fb8d 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -350,7 +350,6 @@ proc/get_damage_icon_part(damage_state, body_part)
//masks and helmets can obscure our hair.
if( (head && (head.flags & BLOCKHAIR)) || (wear_mask && (wear_mask.flags & BLOCKHAIR)))
if(update_icons) update_icons()
-
return
//base icons
@@ -367,7 +366,7 @@ proc/get_damage_icon_part(damage_state, body_part)
face_standing.Blend(facial_s, ICON_OVERLAY)
face_lying.Blend(facial_l, ICON_OVERLAY)
- if(h_style)
+ if(h_style && !(head && (head.flags & BLOCKHEADHAIR)))
var/datum/sprite_accessory/hair_style = hair_styles_list[h_style]
if(hair_style)
var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s")
diff --git a/code/modules/mob/living/silicon/robot/emote.dm b/code/modules/mob/living/silicon/robot/emote.dm
index 4fa8a543b98..6b94c52c6da 100644
--- a/code/modules/mob/living/silicon/robot/emote.dm
+++ b/code/modules/mob/living/silicon/robot/emote.dm
@@ -10,7 +10,18 @@
switch(act)
if ("me")
- return custom_emote(m_type, message)
+ if (src.client)
+ if(client.prefs.muted & MUTE_IC)
+ src << "You cannot send IC messages (muted)."
+ return
+ if (src.client.handle_spam_prevention(message,MUTE_IC))
+ return
+ if (stat)
+ return
+ if(!(message))
+ return
+ else
+ return custom_emote(m_type, message)
if ("custom")
return custom_emote(m_type, message)
@@ -62,20 +73,6 @@
message = "[src] flaps his wings ANGRILY!"
m_type = 2
- if ("me")
- if (src.client)
- if(client.prefs.muted & MUTE_IC)
- src << "You cannot send IC messages (muted)."
- return
- if (src.client.handle_spam_prevention(message,MUTE_IC))
- return
- if (stat)
- return
- if(!(message))
- return
- else
- message = "[src] [message]"
-
if ("twitch")
message = "[src] twitches violently."
m_type = 1
@@ -207,8 +204,12 @@
m_type = 2
else
src << "You are not security."
+
+ if ("help")
+ src << "salute, bow-(none)/mob, clap, flap, aflap, twitch, twitch_s, nod, deathgasp, glare-(none)/mob, stare-(none)/mob, look, beep, ping, \nbuzz, law, halt"
else
- src << text("Invalid Emote: []", act)
+ src << "\blue Unusable emote '[act]'. Say *help for a list."
+
if ((message && src.stat == 0))
if (m_type & 1)
for(var/mob/O in viewers(src, null))
diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm
index 55c255d42dd..cfeb4e9de48 100644
--- a/code/modules/reagents/Chemistry-Reagents.dm
+++ b/code/modules/reagents/Chemistry-Reagents.dm
@@ -2788,7 +2788,7 @@ datum
// make all the beverages work together
for(var/datum/reagent/ethanol/A in holder.reagent_list)
- if(A.data) d += A.data
+ if(isnum(A.data)) d += A.data
M.dizziness +=dizzy_adj.
if(d >= slur_start && d < pass_out)
@@ -3449,14 +3449,14 @@ datum
nutriment_factor = 1 * FOOD_METABOLISM
color = "#2E6671" // rgb: 46, 102, 113
- on_mob_life(var/mob/living/M as mob)
- if(!data) data = 1
- data++
- M.dizziness +=10
- if(data >= 55 && data <115)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 10
- else if(data >= 115 && prob(33))
- M.confused = max(M.confused+15,15)
- ..()
- return
\ No newline at end of file
+ on_mob_life(var/mob/living/M as mob)
+ if(!data) data = 1
+ data++
+ M.dizziness +=10
+ if(data >= 55 && data <115)
+ if (!M.stuttering) M.stuttering = 1
+ M.stuttering += 10
+ else if(data >= 115 && prob(33))
+ M.confused = max(M.confused+15,15)
+ ..()
+ return
\ No newline at end of file
diff --git a/code/setup.dm b/code/setup.dm
index c72f57f8805..f4b8d35e2ff 100644
--- a/code/setup.dm
+++ b/code/setup.dm
@@ -175,8 +175,7 @@ var/MAX_EXPLOSION_RANGE = 14
//FLAGS BITMASK
#define STOPSPRESSUREDMAGE 1 //This flag is used on the flags variable for SUIT and HEAD items which stop pressure damage. Note that the flag 1 was previous used as ONBACK, so it is possible for some code to use (flags & 1) when checking if something can be put on your back. Replace this code with (inv_flags & SLOT_BACK) if you see it anywhere
-//To successfully stop you taking all pressure damage you must have both a suit and head item with this flag.
-
+ //To successfully stop you taking all pressure damage you must have both a suit and head item with this flag.
#define TABLEPASS 2 // can pass by a table or rack
#define MASKINTERNALS 8 // mask allows internals
@@ -205,7 +204,8 @@ var/MAX_EXPLOSION_RANGE = 14
#define NOREACT 16384 //Reagents dont' react inside this container.
-#define BLOCKHAIR 32768 // temporarily removes the user's hair icon
+#define BLOCKHEADHAIR 4 // temporarily removes the user's hair overlay. Leaves facial hair.
+#define BLOCKHAIR 32768 // temporarily removes the user's hair, facial and otherwise.
//flags for pass_flags
#define PASSTABLE 1
diff --git a/maps/RandomZLevels/beach.dmm b/maps/RandomZLevels/beach.dmm
index 3e286400946..470a068cbdf 100644
--- a/maps/RandomZLevels/beach.dmm
+++ b/maps/RandomZLevels/beach.dmm
@@ -1,8 +1,8 @@
"a" = (/turf/unsimulated/beach/sand{density = 1; opacity = 1},/area/awaymission/beach)
-"b" = (/turf/unsimulated/beach/sand,/area/awaymission/beach)
-"c" = (/obj/machinery/gateway{dir = 9},/turf/unsimulated/beach/sand,/area/awaymission/beach)
-"d" = (/obj/machinery/gateway{dir = 1},/turf/unsimulated/beach/sand,/area/awaymission/beach)
-"e" = (/obj/machinery/gateway{dir = 5},/turf/unsimulated/beach/sand,/area/awaymission/beach)
+"b" = (/obj/machinery/gateway{dir = 9},/turf/unsimulated/beach/sand,/area/awaymission/beach)
+"c" = (/obj/machinery/gateway{dir = 1},/turf/unsimulated/beach/sand,/area/awaymission/beach)
+"d" = (/obj/machinery/gateway{dir = 5},/turf/unsimulated/beach/sand,/area/awaymission/beach)
+"e" = (/turf/unsimulated/beach/sand,/area/awaymission/beach)
"f" = (/obj/effect/overlay/palmtree_r,/turf/unsimulated/beach/sand,/area/awaymission/beach)
"g" = (/obj/machinery/gateway{dir = 8},/turf/unsimulated/beach/sand,/area/awaymission/beach)
"h" = (/obj/machinery/gateway/centeraway,/turf/unsimulated/beach/sand,/area/awaymission/beach)
@@ -39,35 +39,35 @@
"M" = (/obj/effect/overlay/coconut,/turf/unsimulated/beach/sand,/area/awaymission/beach)
"N" = (/mob/living/simple_animal/crab/Coffee,/turf/unsimulated/beach/sand,/area/awaymission/beach)
"O" = (/obj/structure/stool/bed/chair,/turf/unsimulated/beach/sand,/area/awaymission/beach)
-"P" = (/turf/unsimulated/beach/coastline,/area/awaymission/beach)
-"Q" = (/turf/unsimulated/beach/coastline{density = 1; opacity = 1},/area/awaymission/beach)
-"R" = (/turf/unsimulated/beach/water,/area/awaymission/beach)
-"S" = (/turf/unsimulated/beach/water{density = 1; opacity = 1},/area/awaymission/beach)
+"P" = (/turf/unsimulated/beach/coastline{density = 1; opacity = 1},/area/awaymission/beach)
+"Q" = (/turf/unsimulated/beach/coastline,/area/awaymission/beach)
+"R" = (/turf/unsimulated/beach/water{density = 1; opacity = 1},/area/awaymission/beach)
+"S" = (/turf/unsimulated/beach/water,/area/awaymission/beach)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-bcdebbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbfba
-bghibbbbjbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-bklmbbbbbbbbnoooooooooopbbqrqrqrqrqrqrqa
-bbbbbbbbbbbbstuvwxyzABCsbbbbbbbbbbbbbbba
-bbbbbbbbbbbbDEEEEEEEEEEsbbbbbbbbbbbbbbba
-bbbbbbbbbbbbFEEEEEEEEEEsbbbbbbbbbGbbbbba
-bbfbbbbbbbbbHxIxxxxxxxxDbbbGbbJbbbbbbbba
-bbbbbbbbbbbbbKKKKKKKKKKbbbbbbbbbbbbbbbba
-bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-bbbLbbbbbbbbbbbbbbbbbbbbbbbbbbbfbbbbbbba
-bbbbbbGMbbbbbbbbbbbbbbGbbbbbNbbbMbbbbbfa
-bbbJbbbbbbLbbObObObObObObbbbbbbbbbObObba
-bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQ
-RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRS
-RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRS
-RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRS
-RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRS
-RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRS
-RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRS
-RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRS
-RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRS
-RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRS
-RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRS
+abcdeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeefea
+aghieeeejeeeeeeeeeeeeeeeeeeeeeeeeeeeeeea
+aklmeeeeeeeenoooooooooopeeqrqrqrqrqrqrqa
+aeeeeeeeeeeestuvwxyzABCseeeeeeeeeeeeeeea
+aeeeeeeeeeeeDEEEEEEEEEEseeeeeeeeeeeeeeea
+aeeeeeeeeeeeFEEEEEEEEEEseeeeeeeeeGeeeeea
+aefeeeeeeeeeHxIxxxxxxxxDeeeGeeJeeeeeeeea
+aeeeeeeeeeeeeKKKKKKKKKKeeeeeeeeeeeeeeeea
+aeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeea
+aeeLeeeeeeeeeeeeeeeeeeeeeeeeeeefeeeeeeea
+aeeeeeGMeeeeeeeeeeeeeeGeeeeeNeeeMeeeeefa
+aeeJeeeeeeLeeOeOeOeOeOeOeeeeeeeeeeOeOeea
+aeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeea
+PQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQP
+RSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSR
+RSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSR
+RSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSR
+RSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSR
+RSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSR
+RSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSR
+RSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSR
+RSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSR
+RSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSR
+RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
"}
diff --git a/maps/oldstation.dmm b/maps/oldstation.dmm
index cdc5f7da48f..df3b736578d 100644
--- a/maps/oldstation.dmm
+++ b/maps/oldstation.dmm
@@ -395,7 +395,7 @@
"hE" = (/turf/simulated/floor,/area)
"hF" = (/obj/structure/table,/obj/structure/bedsheetbin,/turf/simulated/floor,/area/derelict/storage/equipment)
"hG" = (/obj/structure/table,/obj/item/weapon/paper_bin,/obj/item/weapon/packageWrap,/obj/item/device/flashlight,/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/derelict/storage/equipment)
-"hH" = (/obj/structure/table,/obj/item/weapon/storage/gl_kit,/obj/item/device/t_scanner,/turf/simulated/floor,/area/derelict/storage/equipment)
+"hH" = (/obj/structure/table,/obj/item/device/t_scanner,/turf/simulated/floor,/area/derelict/storage/equipment)
"hI" = (/obj/item/stack/sheet/metal{amount = 50},/obj/item/weapon/clipboard,/obj/item/weapon/clipboard,/obj/item/weapon/clipboard,/turf/simulated/floor,/area/derelict/storage/equipment)
"hJ" = (/obj/item/stack/sheet/metal{amount = 50},/obj/item/weapon/cable_coil,/turf/simulated/floor,/area/derelict/storage/equipment)
"hK" = (/obj/item/stack/sheet/metal{amount = 50},/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/derelict/storage/equipment)
@@ -404,7 +404,7 @@
"hN" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor,/area/crew_quarters/captain)
"hO" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/crew_quarters/captain)
"hP" = (/obj/structure/cable{tag = ""; icon_state = "4-8"; step_x = 0; pixel_x = 0; d1 = 4; d2 = 8},/turf/simulated/floor,/area/crew_quarters/captain)
-"hQ" = (/obj/item/weapon/storage/handcuff_kit,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; pixel_x = 24},/turf/simulated/floor,/area/crew_quarters/captain)
+"hQ" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; pixel_x = 24},/turf/simulated/floor,/area/crew_quarters/captain)
"hR" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor,/area/derelict/arrival)
"hS" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor,/area/derelict/storage/equipment)
"hT" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/weapon/crowbar,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor,/area/derelict/storage/equipment)
@@ -559,7 +559,7 @@
"kM" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/computer/scan_consolenew,/turf/simulated/floor,/area/medical/genetics)
"kN" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/dna_scannernew,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/medical/genetics)
"kO" = (/obj/machinery/computer/scan_consolenew,/turf/simulated/floor,/area/medical/genetics)
-"kP" = (/obj/structure/table,/obj/item/weapon/storage/diskbox,/turf/simulated/floor,/area/medical/genetics)
+"kP" = (/obj/structure/table,/turf/simulated/floor,/area/medical/genetics)
"kQ" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/derelict/storage/equipment)
"kR" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor,/area/derelict/arrival)
"kS" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area)
@@ -818,254 +818,253 @@
"pL" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/atmos)
"pM" = (/obj/machinery/computer/secure_data,/turf/simulated/floor,/area/security/brig)
"pN" = (/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/mask/muzzle,/obj/item/clothing/mask/muzzle,/obj/item/clothing/mask/muzzle,/obj/item/clothing/mask/muzzle,/turf/simulated/floor,/area/security/brig)
-"pO" = (/obj/item/weapon/storage/trackimp_kit,/turf/simulated/floor,/area/security/brig)
-"pP" = (/obj/item/weapon/paper_bin,/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor,/area/security/brig)
-"pQ" = (/obj/item/device/flashlight,/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor,/area/security/brig)
-"pR" = (/obj/item/weapon/storage/toolbox/mechanical,/obj/item/clothing/ears/earmuffs,/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor,/area/security/brig)
-"pS" = (/obj/structure/window/reinforced{dir = 4},/obj/effect/landmark/start{name = "Warden"},/turf/simulated/floor,/area/security/brig)
-"pT" = (/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor,/area/toxins/lab)
-"pU" = (/obj/structure/grille,/turf/simulated/floor,/area/toxins/lab)
-"pV" = (/obj/machinery/door/window/eastright,/obj/machinery/door/firedoor/border_only{dir = 4},/turf/simulated/floor,/area/crew_quarters)
-"pW" = (/obj/structure/stool/bed,/obj/effect/landmark/start{name = "Shaft Miner"},/turf/simulated/floor,/area/crew_quarters)
-"pX" = (/obj/structure/stool/bed,/obj/effect/landmark/start{name = "Quartermaster"},/turf/simulated/floor,/area/crew_quarters)
-"pY" = (/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor,/area/crew_quarters)
-"pZ" = (/obj/item/clothing/suit/fire/firefighter,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/oxygen,/obj/item/weapon/weldingtool,/obj/item/clothing/gloves/black,/turf/simulated/floor,/area/crew_quarters)
-"qa" = (/obj/structure/stool,/obj/effect/landmark/start{name = "Chef"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/crew_quarters)
-"qb" = (/obj/item/weapon/storage/backpack,/turf/simulated/floor,/area/crew_quarters)
-"qc" = (/obj/structure/grille,/obj/machinery/atmospherics/unary/outlet_injector{dir = 2; icon_state = "on"; on = 1; pixel_y = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor,/area/atmos)
-"qd" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor,/area/atmos)
-"qe" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 4; pixel_x = 24},/turf/simulated/floor,/area/atmos)
-"qf" = (/obj/structure/table,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/clothing/mask/muzzle,/obj/item/clothing/mask/muzzle,/obj/item/weapon/clipboard,/obj/item/weapon/crowbar,/turf/simulated/floor,/area/security/brig)
-"qg" = (/obj/structure/table,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/clothing/mask/muzzle,/obj/item/clothing/mask/muzzle,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor,/area/security/brig)
-"qh" = (/obj/structure/table,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/clothing/mask/muzzle,/obj/item/clothing/mask/muzzle,/obj/item/weapon/storage/firstaid/regular,/obj/machinery/light,/turf/simulated/floor,/area/security/brig)
-"qi" = (/obj/machinery/computer/security,/turf/simulated/floor,/area/security/brig)
-"qj" = (/obj/machinery/computer/card,/turf/simulated/floor,/area/security/brig)
-"qk" = (/obj/structure/closet/wardrobe/red,/turf/simulated/floor,/area/security/brig)
-"ql" = (/obj/structure/closet/wardrobe/orange,/obj/machinery/light,/turf/simulated/floor,/area/security/brig)
-"qm" = (/obj/machinery/door/poddoor{id = "bd1"; name = "Vent"},/turf/simulated/floor{icon_state = "shiny"},/area/toxins/lab)
-"qn" = (/obj/structure/window/reinforced{dir = 5},/turf/simulated/floor/plating,/area/derelict/arrival)
-"qo" = (/obj/machinery/door/airlock,/turf/simulated/floor,/area/derelict/arrival)
-"qp" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/derelict/arrival)
-"qq" = (/obj/machinery/door/window/eastleft,/turf/simulated/floor,/area/crew_quarters)
-"qr" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/general/visible,/turf/simulated/floor,/area/atmos)
-"qs" = (/obj/structure/grille,/turf/simulated/floor,/area/atmos)
-"qt" = (/obj/machinery/door/poddoor{id = "vent1"; name = "Vent Hatch"},/turf/simulated/floor,/area/atmos)
-"qu" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/turf/simulated/floor,/area/atmos)
-"qv" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/atmos)
-"qw" = (/turf/simulated/wall/r_wall,/area/derelict/hallway/secondary)
-"qx" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/airless,/area/derelict/arrival)
-"qy" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/derelict/arrival)
-"qz" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/airless,/area/derelict/arrival)
-"qA" = (/obj/structure/grille,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless,/area)
-"qB" = (/obj/structure/grille,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area)
-"qC" = (/obj/machinery/door/window/southleft,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/crew_quarters)
-"qD" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 5},/turf/simulated/floor,/area/atmos)
-"qE" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 10},/turf/simulated/floor,/area/atmos)
-"qF" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/general/visible,/turf/simulated/floor,/area/atmos)
-"qG" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/unary/outlet_injector{dir = 2; icon_state = "on"; on = 1; pixel_y = 1},/turf/simulated/floor,/area/atmos)
-"qH" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor,/area/atmos)
-"qI" = (/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/atmos)
-"qJ" = (/obj/machinery/power/monitor,/turf/simulated/floor,/area/atmos)
-"qK" = (/turf/simulated/wall/r_wall,/area/atmos)
-"qL" = (/obj/machinery/portable_atmospherics/canister/toxins,/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/atmos)
-"qM" = (/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/floor,/area/atmos)
-"qN" = (/obj/item/weapon/extinguisher,/turf/simulated/floor,/area/derelict/hallway/secondary)
-"qO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/derelict/hallway/secondary)
-"qP" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/derelict/hallway/secondary)
-"qQ" = (/obj/structure/closet/secure_closet/security,/turf/simulated/floor,/area/derelict/storage/storage_access)
-"qR" = (/turf/simulated/floor,/area/derelict/storage/storage_access)
-"qS" = (/obj/machinery/computer/security,/turf/simulated/floor,/area/derelict/storage/storage_access)
-"qT" = (/turf/simulated/wall,/area/derelict/storage/storage_access)
-"qU" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/derelict/storage/storage_access)
-"qV" = (/obj/structure/rack,/obj/item/clothing/suit/fire/firefighter,/obj/item/clothing/under/color/black,/obj/item/clothing/mask/gas,/obj/item/device/radio/headset,/obj/item/clothing/gloves/black,/obj/item/clothing/shoes/black,/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor,/area/derelict/storage/storage_access)
-"qW" = (/obj/item/weapon/extinguisher,/turf/simulated/floor,/area/derelict/storage/storage_access)
-"qX" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/derelict/storage/storage_access)
-"qY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/derelict/storage/storage_access)
-"qZ" = (/obj/item/stack/sheet/glass,/obj/item/stack/sheet/glass,/obj/item/stack/sheet/glass,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; pixel_x = 24},/turf/simulated/floor,/area/derelict/storage/storage_access)
-"ra" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/computer/atmos_alert,/turf/simulated/floor,/area/atmos)
-"rb" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor,/area/atmos)
-"rc" = (/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor,/area/atmos)
-"rd" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor,/area/atmos)
-"re" = (/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/derelict/hallway/secondary)
-"rf" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless,/area)
-"rg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/derelict/hallway/secondary)
-"rh" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor,/area/derelict/hallway/secondary)
-"ri" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/turf/simulated/floor,/area/derelict/storage/storage_access)
-"rj" = (/obj/structure/table,/obj/item/weapon/paper_bin,/obj/item/weapon/clipboard,/turf/simulated/floor,/area/derelict/storage/storage_access)
-"rk" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/door_control{id = "vent1"; pixel_x = -24},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor,/area/atmos)
-"rl" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor,/area/atmos)
-"rm" = (/obj/effect/landmark/start{name = "Atmospheric Technician"},/turf/simulated/floor,/area/atmos)
-"rn" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor,/area/atmos)
-"ro" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor,/area/atmos)
-"rp" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/turf/simulated/floor,/area/atmos)
-"rq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/derelict/hallway/secondary)
-"rr" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/turf/simulated/floor/plating/airless,/area)
-"rs" = (/obj/machinery/power/monitor,/turf/simulated/floor,/area/derelict/hallway/secondary)
-"rt" = (/obj/machinery/door/window/eastleft{req_access_txt = "1"},/turf/simulated/floor,/area/derelict/hallway/secondary)
-"ru" = (/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor,/area/derelict/storage/storage_access)
-"rv" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor,/area/derelict/storage/storage_access)
-"rw" = (/obj/item/weapon/storage/toolbox/electrical,/turf/simulated/floor,/area/derelict/storage/storage_access)
-"rx" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/weapon/crowbar,/turf/simulated/floor,/area/derelict/storage/storage_access)
-"ry" = (/obj/machinery/door_control{id = "ventintake"; pixel_x = -24},/turf/simulated/floor,/area/atmos)
-"rz" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor,/area/atmos)
-"rA" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor,/area/atmos)
-"rB" = (/obj/structure/window/reinforced{dir = 1},/obj/item/clothing/mask/gas,/turf/simulated/floor,/area/atmos)
-"rC" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor,/area/atmos)
-"rD" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/turf/simulated/floor,/area/atmos)
-"rE" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/derelict/hallway/secondary)
-"rF" = (/obj/machinery/door/window/eastleft,/obj/machinery/door/firedoor/border_only{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/derelict/hallway/secondary)
-"rG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/derelict/hallway/secondary)
-"rH" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor,/area/derelict/hallway/secondary)
-"rI" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/light,/turf/simulated/floor,/area/derelict/hallway/secondary)
-"rJ" = (/obj/structure/table,/obj/item/weapon/handcuffs,/obj/item/device/multitool,/turf/simulated/floor,/area/derelict/storage/storage_access)
-"rK" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor,/area/derelict/storage/storage_access)
-"rL" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/light,/turf/simulated/floor,/area/derelict/storage/storage_access)
-"rM" = (/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/floor,/area/derelict/storage/storage_access)
-"rN" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/turf/simulated/floor,/area/derelict/storage/storage_access)
-"rO" = (/obj/structure/closet/emcloset/legacy,/obj/machinery/light,/turf/simulated/floor,/area/derelict/storage/storage_access)
-"rP" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/atmos)
-"rQ" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/atmos)
-"rR" = (/obj/item/clothing/shoes/brown,/obj/item/clothing/under/rank/atmospheric_technician,/obj/item/clothing/gloves/yellow,/turf/simulated/floor,/area/atmos)
-"rS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/derelict/hallway/secondary)
-"rT" = (/obj/machinery/door/airlock{req_access_txt = "12"},/turf/simulated/floor,/area/derelict/storage/storage_access)
-"rU" = (/obj/machinery/door/airlock,/turf/simulated/floor,/area/derelict/storage/storage_access)
-"rV" = (/obj/machinery/door/window/eastleft,/turf/simulated/floor,/area/atmos)
-"rW" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor,/area/atmos)
-"rX" = (/obj/item/weapon/paper_bin,/turf/simulated/floor,/area/atmos)
-"rY" = (/obj/item/weapon/clipboard,/turf/simulated/floor,/area/atmos)
-"rZ" = (/obj/structure/table,/obj/item/device/multitool,/obj/item/device/multitool,/obj/item/device/multitool,/obj/item/device/multitool,/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/atmos)
-"sa" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor,/area/atmos)
-"sb" = (/obj/machinery/portable_atmospherics/scrubber,/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/atmos)
-"sc" = (/obj/structure/grille,/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless,/area)
-"sd" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless,/area)
-"se" = (/obj/machinery/door/airlock{req_access_txt = "10;13"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor,/area/derelict/hallway/secondary)
-"sf" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/turf/simulated/floor,/area/derelict/hallway/secondary)
-"sg" = (/obj/machinery/door/window/eastleft{req_access_txt = "10"},/turf/simulated/floor,/area/derelict/hallway/secondary)
-"sh" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/electrical,/obj/item/clothing/gloves/yellow,/turf/simulated/floor,/area/derelict/storage/storage_access)
-"si" = (/obj/structure/table,/obj/machinery/cell_charger,/turf/simulated/floor,/area/derelict/storage/storage_access)
-"sj" = (/obj/structure/closet/emcloset/legacy,/turf/simulated/floor,/area/derelict/storage/storage_access)
-"sk" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/light,/turf/simulated/floor,/area/atmos)
-"sl" = (/obj/machinery/atmospherics/valve,/turf/simulated/floor,/area/atmos)
-"sm" = (/obj/structure/table,/obj/machinery/cell_charger,/turf/simulated/floor,/area/atmos)
-"sn" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table,/obj/item/weapon/storage/toolbox/electrical,/turf/simulated/floor,/area/atmos)
-"so" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/item/device/analyzer,/obj/item/device/radio,/obj/item/weapon/screwdriver,/obj/item/weapon/crowbar,/turf/simulated/floor,/area/atmos)
-"sp" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/item/device/analyzer,/obj/item/weapon/screwdriver,/obj/item/weapon/extinguisher,/obj/item/weapon/crowbar,/obj/item/weapon/storage/firstaid/regular,/turf/simulated/floor,/area/atmos)
-"sq" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/light,/turf/simulated/floor,/area/atmos)
-"sr" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/item/device/analyzer,/obj/item/weapon/screwdriver,/obj/item/device/t_scanner,/obj/item/device/assembly/signaler,/turf/simulated/floor,/area/atmos)
-"ss" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/item/device/analyzer,/obj/item/weapon/screwdriver,/obj/item/weapon/extinguisher,/turf/simulated/floor,/area/atmos)
-"st" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/derelict/hallway/secondary)
-"su" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/derelict/hallway/secondary)
-"sv" = (/obj/machinery/power/solar_control,/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor,/area/derelict/hallway/secondary)
-"sw" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc{dir = 4; pixel_x = 24},/turf/simulated/floor,/area/derelict/hallway/secondary)
-"sx" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor,/area/derelict/storage/storage_access)
-"sy" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular,/turf/simulated/floor,/area/derelict/storage/storage_access)
-"sz" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor,/area/derelict/storage/storage_access)
-"sA" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 8},/turf/simulated/floor,/area/atmos)
-"sB" = (/obj/machinery/atmospherics/valve{dir = 4},/turf/simulated/floor,/area/atmos)
-"sC" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/turf/simulated/floor,/area/atmos)
-"sD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/space,/area/derelict/hallway/secondary)
-"sE" = (/obj/machinery/power/terminal,/obj/structure/cable,/turf/simulated/floor,/area/derelict/hallway/secondary)
-"sF" = (/obj/structure/rack,/obj/item/clothing/suit/fire/firefighter,/obj/item/clothing/under/color/black,/obj/item/clothing/mask/gas,/obj/item/device/radio/headset,/obj/item/clothing/gloves/black,/obj/item/clothing/shoes/black,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor,/area/derelict/storage/storage_access)
-"sG" = (/obj/structure/rack,/obj/item/clothing/suit/fire/firefighter,/obj/item/clothing/under/color/black,/obj/item/clothing/mask/gas,/obj/item/device/radio/headset,/obj/item/clothing/gloves/black,/obj/item/clothing/shoes/black,/obj/item/clothing/glasses/sunglasses,/obj/machinery/light,/turf/simulated/floor,/area/derelict/storage/storage_access)
-"sH" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/device/multitool,/obj/machinery/light,/turf/simulated/floor,/area/derelict/storage/storage_access)
-"sI" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/device/t_scanner,/turf/simulated/floor,/area/derelict/storage/storage_access)
-"sJ" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/toxin,/turf/simulated/floor,/area/derelict/storage/storage_access)
-"sK" = (/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor,/area/derelict/storage/storage_access)
-"sL" = (/obj/machinery/light,/turf/simulated/floor,/area/derelict/storage/storage_access)
-"sM" = (/obj/structure/table,/obj/item/clothing/mask/gas,/turf/simulated/floor,/area/derelict/storage/storage_access)
-"sN" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/turf/simulated/floor,/area/atmos)
-"sO" = (/obj/machinery/atmospherics/pipe/manifold/general/visible,/obj/machinery/light,/turf/simulated/floor,/area/atmos)
-"sP" = (/obj/structure/table,/obj/item/weapon/cell,/obj/item/weapon/cell,/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/obj/item/device/flashlight,/turf/simulated/floor,/area/atmos)
-"sQ" = (/obj/structure/table,/obj/item/weapon/cell,/obj/item/weapon/cell,/obj/item/weapon/cell,/obj/item/weapon/cell,/obj/item/weapon/storage/toolbox/electrical,/turf/simulated/floor,/area/atmos)
-"sR" = (/obj/structure/window/reinforced{dir = 5},/turf/space,/area)
-"sS" = (/obj/machinery/door/airlock,/turf/simulated/floor,/area/derelict/hallway/secondary)
-"sT" = (/obj/machinery/power/smes,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor,/area/derelict/hallway/secondary)
-"sU" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{tag = ""; icon_state = "4-8"; step_x = 0; pixel_x = 0; d1 = 4; d2 = 8},/turf/simulated/floor,/area/derelict/hallway/secondary)
-"sV" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable,/turf/simulated/floor,/area/derelict/hallway/secondary)
-"sW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/derelict/hallway/secondary)
-"sX" = (/obj/structure/window/reinforced{dir = 4},/turf/space,/area)
-"sY" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/derelict/hallway/secondary)
-"sZ" = (/obj/structure/window/reinforced{dir = 8},/turf/space,/area)
-"ta" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable,/turf/simulated/floor/plating/airless,/area)
-"tb" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/derelict/hallway/secondary)
-"tc" = (/obj/machinery/door/firedoor/border_only{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/derelict/hallway/secondary)
-"td" = (/obj/machinery/light{dir = 1},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/derelict/hallway/secondary)
-"te" = (/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/derelict/hallway/secondary)
-"tf" = (/obj/machinery/door/firedoor/border_only{dir = 4},/turf/simulated/floor,/area/derelict/hallway/secondary)
-"tg" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor,/area/derelict/hallway/secondary)
-"th" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/derelict/hallway/secondary)
-"ti" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor,/area/derelict/hallway/secondary)
-"tj" = (/obj/structure/grille,/obj/structure/cable,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless,/area)
-"tk" = (/obj/machinery/door/airlock{req_access_txt = "17"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/derelict/teleporter)
-"tl" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/derelict/hallway/secondary)
-"tm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/derelict/hallway/secondary)
-"tn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/derelict/hallway/secondary)
-"to" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/derelict/hallway/secondary)
-"tp" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/space,/area)
-"tq" = (/turf/simulated/wall/r_wall,/area/derelict/teleporter)
-"tr" = (/turf/simulated/floor,/area/derelict/teleporter)
-"ts" = (/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/derelict/teleporter)
-"tt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/derelict/teleporter)
-"tu" = (/obj/machinery/light,/turf/simulated/floor,/area/derelict/hallway/secondary)
-"tv" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/derelict/teleporter)
-"tw" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/derelict/teleporter)
-"tx" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/derelict/teleporter)
-"ty" = (/turf/simulated/wall/r_wall,/area/derelict/bridge/ai_upload)
-"tz" = (/obj/machinery/door/airlock{req_access_txt = "16"},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
-"tA" = (/obj/structure/closet/emcloset/legacy,/turf/simulated/floor,/area/derelict/hallway/secondary)
-"tB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless,/area)
-"tC" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/wall/r_wall,/area)
-"tD" = (/obj/machinery/computer/teleporter,/turf/simulated/floor{icon_state = "floorgrime"},/area/derelict/teleporter)
-"tE" = (/obj/machinery/teleport/station,/turf/simulated/floor{icon_state = "floorgrime"},/area/derelict/teleporter)
-"tF" = (/obj/machinery/teleport/hub,/turf/simulated/floor{icon_state = "floorgrime"},/area/derelict/teleporter)
-"tG" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 4; pixel_x = 24},/turf/simulated/floor,/area/derelict/teleporter)
-"tH" = (/turf/simulated/floor,/area/derelict/bridge/ai_upload)
-"tI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/derelict/bridge/ai_upload)
-"tJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/derelict/bridge/ai_upload)
-"tK" = (/obj/structure/grille,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/turf/simulated/floor/plating/airless,/area)
-"tL" = (/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/floor,/area/derelict/teleporter)
-"tM" = (/obj/effect/landmark{name = "tripai"},/turf/simulated/floor/bluegrid,/area/derelict/bridge/ai_upload)
-"tN" = (/obj/machinery/turret,/turf/simulated/floor/bluegrid,/area/derelict/bridge/ai_upload)
-"tO" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/bluegrid,/area/derelict/bridge/ai_upload)
-"tP" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/bluegrid,/area/derelict/bridge/ai_upload)
-"tQ" = (/obj/structure/cable{tag = ""; icon_state = "4-8"; step_x = 0; pixel_x = 0; d1 = 4; d2 = 8},/turf/simulated/wall/r_wall,/area/derelict/bridge/ai_upload)
-"tR" = (/obj/structure/rack,/obj/item/weapon/aiModule/freeform,/obj/item/weapon/aiModule/prototypeEngineOffline,/obj/item/weapon/aiModule/safeguard,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
-"tS" = (/obj/structure/rack,/obj/item/weapon/aiModule/oneHuman,/obj/item/weapon/aiModule/purge,/obj/item/weapon/aiModule/teleporterOffline,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
-"tT" = (/obj/structure/rack,/obj/item/weapon/aiModule/oxygen,/obj/item/weapon/aiModule/quarantine,/obj/machinery/light{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
-"tU" = (/obj/structure/rack,/obj/item/weapon/aiModule/protectStation,/obj/item/weapon/aiModule/reset,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
-"tV" = (/obj/machinery/turret,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
-"tW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/wall/r_wall,/area/derelict/bridge/ai_upload)
-"tX" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
-"tY" = (/obj/machinery/turret{dir = 8},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
-"tZ" = (/obj/structure/table,/obj/item/device/radio,/turf/simulated/floor,/area/derelict/teleporter)
-"ua" = (/obj/machinery/light,/turf/simulated/floor,/area/derelict/teleporter)
-"ub" = (/turf/simulated/floor/bluegrid,/area/derelict/bridge/ai_upload)
-"uc" = (/obj/machinery/power/apc{pixel_x = 24},/obj/structure/cable,/turf/simulated/floor/bluegrid,/area/derelict/bridge/ai_upload)
-"ud" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
-"ue" = (/obj/effect/landmark/start{name = "Cyborg"},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
-"uf" = (/obj/effect/landmark/start{name = "AI"},/turf/simulated/floor/bluegrid,/area/derelict/bridge/ai_upload)
-"ug" = (/obj/machinery/computer/aiupload,/turf/simulated/floor,/area/derelict/bridge/ai_upload)
-"uh" = (/obj/machinery/door/window/eastleft{req_access_txt = "16"},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
-"ui" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
-"uj" = (/obj/machinery/power/solar_control,/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
-"uk" = (/obj/machinery/turret{dir = 8},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
-"ul" = (/obj/machinery/door/window/eastleft{req_access_txt = "16"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
-"um" = (/obj/machinery/turret{dir = 1},/turf/simulated/floor/bluegrid,/area/derelict/bridge/ai_upload)
-"un" = (/obj/machinery/light,/turf/simulated/floor/bluegrid,/area/derelict/bridge/ai_upload)
-"uo" = (/obj/structure/rack,/obj/item/weapon/aiModule/asimov,/obj/item/weapon/aiModule/freeformcore,/turf/simulated/floor,/area/derelict/bridge/ai_upload)
-"up" = (/obj/machinery/door/airlock{req_access_txt = "16"},/obj/machinery/door/window/eastleft{req_access_txt = "16"},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
-"uq" = (/obj/machinery/light,/turf/simulated/floor,/area/derelict/bridge/ai_upload)
-"ur" = (/obj/machinery/turret{dir = 1},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
-"us" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/wall/r_wall,/area/derelict/bridge/ai_upload)
-"ut" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/cable,/turf/simulated/floor/plating/airless,/area)
-"uu" = (/obj/structure/grille,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless,/area)
-"uv" = (/obj/machinery/power/solar{id = "starboardsolar"; name = "Starboard Solar Array"},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/airless{icon_state = "solarpanel"},/area)
-"uw" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless,/area)
-"ux" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area)
-"uy" = (/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area)
-"uz" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area)
-"uA" = (/obj/machinery/power/solar{id = "starboardsolar"; name = "Starboard Solar Array"},/obj/structure/cable,/turf/simulated/floor/airless{icon_state = "solarpanel"},/area)
-"uB" = (/obj/structure/grille,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable,/turf/simulated/floor/plating/airless,/area)
+"pO" = (/obj/item/weapon/paper_bin,/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor,/area/security/brig)
+"pP" = (/obj/item/device/flashlight,/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor,/area/security/brig)
+"pQ" = (/obj/item/weapon/storage/toolbox/mechanical,/obj/item/clothing/ears/earmuffs,/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor,/area/security/brig)
+"pR" = (/obj/structure/window/reinforced{dir = 4},/obj/effect/landmark/start{name = "Warden"},/turf/simulated/floor,/area/security/brig)
+"pS" = (/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor,/area/toxins/lab)
+"pT" = (/obj/structure/grille,/turf/simulated/floor,/area/toxins/lab)
+"pU" = (/obj/machinery/door/window/eastright,/obj/machinery/door/firedoor/border_only{dir = 4},/turf/simulated/floor,/area/crew_quarters)
+"pV" = (/obj/structure/stool/bed,/obj/effect/landmark/start{name = "Shaft Miner"},/turf/simulated/floor,/area/crew_quarters)
+"pW" = (/obj/structure/stool/bed,/obj/effect/landmark/start{name = "Quartermaster"},/turf/simulated/floor,/area/crew_quarters)
+"pX" = (/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor,/area/crew_quarters)
+"pY" = (/obj/item/clothing/suit/fire/firefighter,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/oxygen,/obj/item/weapon/weldingtool,/obj/item/clothing/gloves/black,/turf/simulated/floor,/area/crew_quarters)
+"pZ" = (/obj/structure/stool,/obj/effect/landmark/start{name = "Chef"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/crew_quarters)
+"qa" = (/obj/item/weapon/storage/backpack,/turf/simulated/floor,/area/crew_quarters)
+"qb" = (/obj/structure/grille,/obj/machinery/atmospherics/unary/outlet_injector{dir = 2; icon_state = "on"; on = 1; pixel_y = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor,/area/atmos)
+"qc" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor,/area/atmos)
+"qd" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 4; pixel_x = 24},/turf/simulated/floor,/area/atmos)
+"qe" = (/obj/structure/table,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/clothing/mask/muzzle,/obj/item/clothing/mask/muzzle,/obj/item/weapon/clipboard,/obj/item/weapon/crowbar,/turf/simulated/floor,/area/security/brig)
+"qf" = (/obj/structure/table,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/clothing/mask/muzzle,/obj/item/clothing/mask/muzzle,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor,/area/security/brig)
+"qg" = (/obj/structure/table,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/clothing/mask/muzzle,/obj/item/clothing/mask/muzzle,/obj/item/weapon/storage/firstaid/regular,/obj/machinery/light,/turf/simulated/floor,/area/security/brig)
+"qh" = (/obj/machinery/computer/security,/turf/simulated/floor,/area/security/brig)
+"qi" = (/obj/machinery/computer/card,/turf/simulated/floor,/area/security/brig)
+"qj" = (/obj/structure/closet/wardrobe/red,/turf/simulated/floor,/area/security/brig)
+"qk" = (/obj/structure/closet/wardrobe/orange,/obj/machinery/light,/turf/simulated/floor,/area/security/brig)
+"ql" = (/obj/machinery/door/poddoor{id = "bd1"; name = "Vent"},/turf/simulated/floor{icon_state = "shiny"},/area/toxins/lab)
+"qm" = (/obj/structure/window/reinforced{dir = 5},/turf/simulated/floor/plating,/area/derelict/arrival)
+"qn" = (/obj/machinery/door/airlock,/turf/simulated/floor,/area/derelict/arrival)
+"qo" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/derelict/arrival)
+"qp" = (/obj/machinery/door/window/eastleft,/turf/simulated/floor,/area/crew_quarters)
+"qq" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/general/visible,/turf/simulated/floor,/area/atmos)
+"qr" = (/obj/structure/grille,/turf/simulated/floor,/area/atmos)
+"qs" = (/obj/machinery/door/poddoor{id = "vent1"; name = "Vent Hatch"},/turf/simulated/floor,/area/atmos)
+"qt" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/turf/simulated/floor,/area/atmos)
+"qu" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/atmos)
+"qv" = (/turf/simulated/wall/r_wall,/area/derelict/hallway/secondary)
+"qw" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/airless,/area/derelict/arrival)
+"qx" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/derelict/arrival)
+"qy" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/airless,/area/derelict/arrival)
+"qz" = (/obj/structure/grille,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless,/area)
+"qA" = (/obj/structure/grille,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area)
+"qB" = (/obj/machinery/door/window/southleft,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/crew_quarters)
+"qC" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 5},/turf/simulated/floor,/area/atmos)
+"qD" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 10},/turf/simulated/floor,/area/atmos)
+"qE" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/general/visible,/turf/simulated/floor,/area/atmos)
+"qF" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/unary/outlet_injector{dir = 2; icon_state = "on"; on = 1; pixel_y = 1},/turf/simulated/floor,/area/atmos)
+"qG" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor,/area/atmos)
+"qH" = (/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/atmos)
+"qI" = (/obj/machinery/power/monitor,/turf/simulated/floor,/area/atmos)
+"qJ" = (/turf/simulated/wall/r_wall,/area/atmos)
+"qK" = (/obj/machinery/portable_atmospherics/canister/toxins,/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/atmos)
+"qL" = (/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/floor,/area/atmos)
+"qM" = (/obj/item/weapon/extinguisher,/turf/simulated/floor,/area/derelict/hallway/secondary)
+"qN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/derelict/hallway/secondary)
+"qO" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/derelict/hallway/secondary)
+"qP" = (/obj/structure/closet/secure_closet/security,/turf/simulated/floor,/area/derelict/storage/storage_access)
+"qQ" = (/turf/simulated/floor,/area/derelict/storage/storage_access)
+"qR" = (/obj/machinery/computer/security,/turf/simulated/floor,/area/derelict/storage/storage_access)
+"qS" = (/turf/simulated/wall,/area/derelict/storage/storage_access)
+"qT" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/derelict/storage/storage_access)
+"qU" = (/obj/structure/rack,/obj/item/clothing/suit/fire/firefighter,/obj/item/clothing/under/color/black,/obj/item/clothing/mask/gas,/obj/item/device/radio/headset,/obj/item/clothing/gloves/black,/obj/item/clothing/shoes/black,/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor,/area/derelict/storage/storage_access)
+"qV" = (/obj/item/weapon/extinguisher,/turf/simulated/floor,/area/derelict/storage/storage_access)
+"qW" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/derelict/storage/storage_access)
+"qX" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/derelict/storage/storage_access)
+"qY" = (/obj/item/stack/sheet/glass,/obj/item/stack/sheet/glass,/obj/item/stack/sheet/glass,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; pixel_x = 24},/turf/simulated/floor,/area/derelict/storage/storage_access)
+"qZ" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/computer/atmos_alert,/turf/simulated/floor,/area/atmos)
+"ra" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor,/area/atmos)
+"rb" = (/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor,/area/atmos)
+"rc" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor,/area/atmos)
+"rd" = (/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/derelict/hallway/secondary)
+"re" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless,/area)
+"rf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/derelict/hallway/secondary)
+"rg" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor,/area/derelict/hallway/secondary)
+"rh" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/turf/simulated/floor,/area/derelict/storage/storage_access)
+"ri" = (/obj/structure/table,/obj/item/weapon/paper_bin,/obj/item/weapon/clipboard,/turf/simulated/floor,/area/derelict/storage/storage_access)
+"rj" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/door_control{id = "vent1"; pixel_x = -24},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor,/area/atmos)
+"rk" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor,/area/atmos)
+"rl" = (/obj/effect/landmark/start{name = "Atmospheric Technician"},/turf/simulated/floor,/area/atmos)
+"rm" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor,/area/atmos)
+"rn" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor,/area/atmos)
+"ro" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/turf/simulated/floor,/area/atmos)
+"rp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/derelict/hallway/secondary)
+"rq" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/turf/simulated/floor/plating/airless,/area)
+"rr" = (/obj/machinery/power/monitor,/turf/simulated/floor,/area/derelict/hallway/secondary)
+"rs" = (/obj/machinery/door/window/eastleft{req_access_txt = "1"},/turf/simulated/floor,/area/derelict/hallway/secondary)
+"rt" = (/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor,/area/derelict/storage/storage_access)
+"ru" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor,/area/derelict/storage/storage_access)
+"rv" = (/obj/item/weapon/storage/toolbox/electrical,/turf/simulated/floor,/area/derelict/storage/storage_access)
+"rw" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/weapon/crowbar,/turf/simulated/floor,/area/derelict/storage/storage_access)
+"rx" = (/obj/machinery/door_control{id = "ventintake"; pixel_x = -24},/turf/simulated/floor,/area/atmos)
+"ry" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor,/area/atmos)
+"rz" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor,/area/atmos)
+"rA" = (/obj/structure/window/reinforced{dir = 1},/obj/item/clothing/mask/gas,/turf/simulated/floor,/area/atmos)
+"rB" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor,/area/atmos)
+"rC" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/turf/simulated/floor,/area/atmos)
+"rD" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/derelict/hallway/secondary)
+"rE" = (/obj/machinery/door/window/eastleft,/obj/machinery/door/firedoor/border_only{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/derelict/hallway/secondary)
+"rF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/derelict/hallway/secondary)
+"rG" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor,/area/derelict/hallway/secondary)
+"rH" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/light,/turf/simulated/floor,/area/derelict/hallway/secondary)
+"rI" = (/obj/structure/table,/obj/item/weapon/handcuffs,/obj/item/device/multitool,/turf/simulated/floor,/area/derelict/storage/storage_access)
+"rJ" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor,/area/derelict/storage/storage_access)
+"rK" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/light,/turf/simulated/floor,/area/derelict/storage/storage_access)
+"rL" = (/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/floor,/area/derelict/storage/storage_access)
+"rM" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/turf/simulated/floor,/area/derelict/storage/storage_access)
+"rN" = (/obj/structure/closet/emcloset/legacy,/obj/machinery/light,/turf/simulated/floor,/area/derelict/storage/storage_access)
+"rO" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/atmos)
+"rP" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/atmos)
+"rQ" = (/obj/item/clothing/shoes/brown,/obj/item/clothing/under/rank/atmospheric_technician,/obj/item/clothing/gloves/yellow,/turf/simulated/floor,/area/atmos)
+"rR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/derelict/hallway/secondary)
+"rS" = (/obj/machinery/door/airlock{req_access_txt = "12"},/turf/simulated/floor,/area/derelict/storage/storage_access)
+"rT" = (/obj/machinery/door/airlock,/turf/simulated/floor,/area/derelict/storage/storage_access)
+"rU" = (/obj/machinery/door/window/eastleft,/turf/simulated/floor,/area/atmos)
+"rV" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor,/area/atmos)
+"rW" = (/obj/item/weapon/paper_bin,/turf/simulated/floor,/area/atmos)
+"rX" = (/obj/item/weapon/clipboard,/turf/simulated/floor,/area/atmos)
+"rY" = (/obj/structure/table,/obj/item/device/multitool,/obj/item/device/multitool,/obj/item/device/multitool,/obj/item/device/multitool,/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/atmos)
+"rZ" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor,/area/atmos)
+"sa" = (/obj/machinery/portable_atmospherics/scrubber,/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/atmos)
+"sb" = (/obj/structure/grille,/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless,/area)
+"sc" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless,/area)
+"sd" = (/obj/machinery/door/airlock{req_access_txt = "10;13"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor,/area/derelict/hallway/secondary)
+"se" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/turf/simulated/floor,/area/derelict/hallway/secondary)
+"sf" = (/obj/machinery/door/window/eastleft{req_access_txt = "10"},/turf/simulated/floor,/area/derelict/hallway/secondary)
+"sg" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/electrical,/obj/item/clothing/gloves/yellow,/turf/simulated/floor,/area/derelict/storage/storage_access)
+"sh" = (/obj/structure/table,/obj/machinery/cell_charger,/turf/simulated/floor,/area/derelict/storage/storage_access)
+"si" = (/obj/structure/closet/emcloset/legacy,/turf/simulated/floor,/area/derelict/storage/storage_access)
+"sj" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/light,/turf/simulated/floor,/area/atmos)
+"sk" = (/obj/machinery/atmospherics/valve,/turf/simulated/floor,/area/atmos)
+"sl" = (/obj/structure/table,/obj/machinery/cell_charger,/turf/simulated/floor,/area/atmos)
+"sm" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table,/obj/item/weapon/storage/toolbox/electrical,/turf/simulated/floor,/area/atmos)
+"sn" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/item/device/analyzer,/obj/item/device/radio,/obj/item/weapon/screwdriver,/obj/item/weapon/crowbar,/turf/simulated/floor,/area/atmos)
+"so" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/item/device/analyzer,/obj/item/weapon/screwdriver,/obj/item/weapon/extinguisher,/obj/item/weapon/crowbar,/obj/item/weapon/storage/firstaid/regular,/turf/simulated/floor,/area/atmos)
+"sp" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/light,/turf/simulated/floor,/area/atmos)
+"sq" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/item/device/analyzer,/obj/item/weapon/screwdriver,/obj/item/device/t_scanner,/obj/item/device/assembly/signaler,/turf/simulated/floor,/area/atmos)
+"sr" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/item/device/analyzer,/obj/item/weapon/screwdriver,/obj/item/weapon/extinguisher,/turf/simulated/floor,/area/atmos)
+"ss" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/derelict/hallway/secondary)
+"st" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/derelict/hallway/secondary)
+"su" = (/obj/machinery/power/solar_control,/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor,/area/derelict/hallway/secondary)
+"sv" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc{dir = 4; pixel_x = 24},/turf/simulated/floor,/area/derelict/hallway/secondary)
+"sw" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor,/area/derelict/storage/storage_access)
+"sx" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular,/turf/simulated/floor,/area/derelict/storage/storage_access)
+"sy" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor,/area/derelict/storage/storage_access)
+"sz" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 8},/turf/simulated/floor,/area/atmos)
+"sA" = (/obj/machinery/atmospherics/valve{dir = 4},/turf/simulated/floor,/area/atmos)
+"sB" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/turf/simulated/floor,/area/atmos)
+"sC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/space,/area/derelict/hallway/secondary)
+"sD" = (/obj/machinery/power/terminal,/obj/structure/cable,/turf/simulated/floor,/area/derelict/hallway/secondary)
+"sE" = (/obj/structure/rack,/obj/item/clothing/suit/fire/firefighter,/obj/item/clothing/under/color/black,/obj/item/clothing/mask/gas,/obj/item/device/radio/headset,/obj/item/clothing/gloves/black,/obj/item/clothing/shoes/black,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor,/area/derelict/storage/storage_access)
+"sF" = (/obj/structure/rack,/obj/item/clothing/suit/fire/firefighter,/obj/item/clothing/under/color/black,/obj/item/clothing/mask/gas,/obj/item/device/radio/headset,/obj/item/clothing/gloves/black,/obj/item/clothing/shoes/black,/obj/item/clothing/glasses/sunglasses,/obj/machinery/light,/turf/simulated/floor,/area/derelict/storage/storage_access)
+"sG" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/device/multitool,/obj/machinery/light,/turf/simulated/floor,/area/derelict/storage/storage_access)
+"sH" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/device/t_scanner,/turf/simulated/floor,/area/derelict/storage/storage_access)
+"sI" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/toxin,/turf/simulated/floor,/area/derelict/storage/storage_access)
+"sJ" = (/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor,/area/derelict/storage/storage_access)
+"sK" = (/obj/machinery/light,/turf/simulated/floor,/area/derelict/storage/storage_access)
+"sL" = (/obj/structure/table,/obj/item/clothing/mask/gas,/turf/simulated/floor,/area/derelict/storage/storage_access)
+"sM" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/turf/simulated/floor,/area/atmos)
+"sN" = (/obj/machinery/atmospherics/pipe/manifold/general/visible,/obj/machinery/light,/turf/simulated/floor,/area/atmos)
+"sO" = (/obj/structure/table,/obj/item/weapon/cell,/obj/item/weapon/cell,/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/obj/item/device/flashlight,/turf/simulated/floor,/area/atmos)
+"sP" = (/obj/structure/table,/obj/item/weapon/cell,/obj/item/weapon/cell,/obj/item/weapon/cell,/obj/item/weapon/cell,/obj/item/weapon/storage/toolbox/electrical,/turf/simulated/floor,/area/atmos)
+"sQ" = (/obj/structure/window/reinforced{dir = 5},/turf/space,/area)
+"sR" = (/obj/machinery/door/airlock,/turf/simulated/floor,/area/derelict/hallway/secondary)
+"sS" = (/obj/machinery/power/smes,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor,/area/derelict/hallway/secondary)
+"sT" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{tag = ""; icon_state = "4-8"; step_x = 0; pixel_x = 0; d1 = 4; d2 = 8},/turf/simulated/floor,/area/derelict/hallway/secondary)
+"sU" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable,/turf/simulated/floor,/area/derelict/hallway/secondary)
+"sV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/derelict/hallway/secondary)
+"sW" = (/obj/structure/window/reinforced{dir = 4},/turf/space,/area)
+"sX" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/derelict/hallway/secondary)
+"sY" = (/obj/structure/window/reinforced{dir = 8},/turf/space,/area)
+"sZ" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable,/turf/simulated/floor/plating/airless,/area)
+"ta" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/derelict/hallway/secondary)
+"tb" = (/obj/machinery/door/firedoor/border_only{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/derelict/hallway/secondary)
+"tc" = (/obj/machinery/light{dir = 1},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/derelict/hallway/secondary)
+"td" = (/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/derelict/hallway/secondary)
+"te" = (/obj/machinery/door/firedoor/border_only{dir = 4},/turf/simulated/floor,/area/derelict/hallway/secondary)
+"tf" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor,/area/derelict/hallway/secondary)
+"tg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/derelict/hallway/secondary)
+"th" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor,/area/derelict/hallway/secondary)
+"ti" = (/obj/structure/grille,/obj/structure/cable,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless,/area)
+"tj" = (/obj/machinery/door/airlock{req_access_txt = "17"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/derelict/teleporter)
+"tk" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/derelict/hallway/secondary)
+"tl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/derelict/hallway/secondary)
+"tm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/derelict/hallway/secondary)
+"tn" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/derelict/hallway/secondary)
+"to" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/space,/area)
+"tp" = (/turf/simulated/wall/r_wall,/area/derelict/teleporter)
+"tq" = (/turf/simulated/floor,/area/derelict/teleporter)
+"tr" = (/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/derelict/teleporter)
+"ts" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/derelict/teleporter)
+"tt" = (/obj/machinery/light,/turf/simulated/floor,/area/derelict/hallway/secondary)
+"tu" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/derelict/teleporter)
+"tv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/derelict/teleporter)
+"tw" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/derelict/teleporter)
+"tx" = (/turf/simulated/wall/r_wall,/area/derelict/bridge/ai_upload)
+"ty" = (/obj/machinery/door/airlock{req_access_txt = "16"},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
+"tz" = (/obj/structure/closet/emcloset/legacy,/turf/simulated/floor,/area/derelict/hallway/secondary)
+"tA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless,/area)
+"tB" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/wall/r_wall,/area)
+"tC" = (/obj/machinery/computer/teleporter,/turf/simulated/floor{icon_state = "floorgrime"},/area/derelict/teleporter)
+"tD" = (/obj/machinery/teleport/station,/turf/simulated/floor{icon_state = "floorgrime"},/area/derelict/teleporter)
+"tE" = (/obj/machinery/teleport/hub,/turf/simulated/floor{icon_state = "floorgrime"},/area/derelict/teleporter)
+"tF" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 4; pixel_x = 24},/turf/simulated/floor,/area/derelict/teleporter)
+"tG" = (/turf/simulated/floor,/area/derelict/bridge/ai_upload)
+"tH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/derelict/bridge/ai_upload)
+"tI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/derelict/bridge/ai_upload)
+"tJ" = (/obj/structure/grille,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/turf/simulated/floor/plating/airless,/area)
+"tK" = (/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/floor,/area/derelict/teleporter)
+"tL" = (/obj/effect/landmark{name = "tripai"},/turf/simulated/floor/bluegrid,/area/derelict/bridge/ai_upload)
+"tM" = (/obj/machinery/turret,/turf/simulated/floor/bluegrid,/area/derelict/bridge/ai_upload)
+"tN" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/bluegrid,/area/derelict/bridge/ai_upload)
+"tO" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/bluegrid,/area/derelict/bridge/ai_upload)
+"tP" = (/obj/structure/cable{tag = ""; icon_state = "4-8"; step_x = 0; pixel_x = 0; d1 = 4; d2 = 8},/turf/simulated/wall/r_wall,/area/derelict/bridge/ai_upload)
+"tQ" = (/obj/structure/rack,/obj/item/weapon/aiModule/freeform,/obj/item/weapon/aiModule/prototypeEngineOffline,/obj/item/weapon/aiModule/safeguard,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
+"tR" = (/obj/structure/rack,/obj/item/weapon/aiModule/oneHuman,/obj/item/weapon/aiModule/purge,/obj/item/weapon/aiModule/teleporterOffline,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
+"tS" = (/obj/structure/rack,/obj/item/weapon/aiModule/oxygen,/obj/item/weapon/aiModule/quarantine,/obj/machinery/light{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
+"tT" = (/obj/structure/rack,/obj/item/weapon/aiModule/protectStation,/obj/item/weapon/aiModule/reset,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
+"tU" = (/obj/machinery/turret,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
+"tV" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/wall/r_wall,/area/derelict/bridge/ai_upload)
+"tW" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
+"tX" = (/obj/machinery/turret{dir = 8},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
+"tY" = (/obj/structure/table,/obj/item/device/radio,/turf/simulated/floor,/area/derelict/teleporter)
+"tZ" = (/obj/machinery/light,/turf/simulated/floor,/area/derelict/teleporter)
+"ua" = (/turf/simulated/floor/bluegrid,/area/derelict/bridge/ai_upload)
+"ub" = (/obj/machinery/power/apc{pixel_x = 24},/obj/structure/cable,/turf/simulated/floor/bluegrid,/area/derelict/bridge/ai_upload)
+"uc" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
+"ud" = (/obj/effect/landmark/start{name = "Cyborg"},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
+"ue" = (/obj/effect/landmark/start{name = "AI"},/turf/simulated/floor/bluegrid,/area/derelict/bridge/ai_upload)
+"uf" = (/obj/machinery/computer/aiupload,/turf/simulated/floor,/area/derelict/bridge/ai_upload)
+"ug" = (/obj/machinery/door/window/eastleft{req_access_txt = "16"},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
+"uh" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
+"ui" = (/obj/machinery/power/solar_control,/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
+"uj" = (/obj/machinery/turret{dir = 8},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
+"uk" = (/obj/machinery/door/window/eastleft{req_access_txt = "16"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
+"ul" = (/obj/machinery/turret{dir = 1},/turf/simulated/floor/bluegrid,/area/derelict/bridge/ai_upload)
+"um" = (/obj/machinery/light,/turf/simulated/floor/bluegrid,/area/derelict/bridge/ai_upload)
+"un" = (/obj/structure/rack,/obj/item/weapon/aiModule/asimov,/obj/item/weapon/aiModule/freeformcore,/turf/simulated/floor,/area/derelict/bridge/ai_upload)
+"uo" = (/obj/machinery/door/airlock{req_access_txt = "16"},/obj/machinery/door/window/eastleft{req_access_txt = "16"},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
+"up" = (/obj/machinery/light,/turf/simulated/floor,/area/derelict/bridge/ai_upload)
+"uq" = (/obj/machinery/turret{dir = 1},/turf/simulated/floor,/area/derelict/bridge/ai_upload)
+"ur" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/wall/r_wall,/area/derelict/bridge/ai_upload)
+"us" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/cable,/turf/simulated/floor/plating/airless,/area)
+"ut" = (/obj/structure/grille,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless,/area)
+"uu" = (/obj/machinery/power/solar{id = "starboardsolar"; name = "Starboard Solar Array"},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/airless{icon_state = "solarpanel"},/area)
+"uv" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless,/area)
+"uw" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area)
+"ux" = (/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area)
+"uy" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area)
+"uz" = (/obj/machinery/power/solar{id = "starboardsolar"; name = "Starboard Solar Array"},/obj/structure/cable,/turf/simulated/floor/airless{icon_state = "solarpanel"},/area)
+"uA" = (/obj/structure/grille,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable,/turf/simulated/floor/plating/airless,/area)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -1148,42 +1147,42 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamvnemQmvnWnXnY
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamvotototmvnLoumvmvmvmvmvmvmvmvmvnHneovowneoxmvoyoyoyoyoyoyozoyoAoynBoBoCojoDoiojoEoioloFojoGnRoHjwlsnjlsoIoJoIoIjwhChChChCnsnshChCmYhCoKimfzaaksjzjTjTkukvmokxbhjkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtaaaaaaaaaaaaaaaaaaaaaamvnInInImvnemQoLoMoNoNoOoPoQnemvneoRoSoToUnemvoVoVoVoVoWoXoYoyoZoVnBoBoCpaojpbojojpbpcpdojpenRoHjwpfpgnjoIoIoIphjwmmhChChChChChCkrhkhCpiimfzaaaanujjnvpjjSjSktjzjAjBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapknenenemvnemQneneneneneneplnemvnepmpnpoppnemvpqprprprpsptoYoyoAoynBoBoCojojojpupupvpwojojpxnRoHjwlslslsoIoIoIpyjwhChChCpzhChChChChkhCpAimfzaaaaaaaanujjjjnvpjjzjUjBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamvpBnInepCnemQpDpEnenIpFnenenemvnHpmnWpGpHoxmvpIpJpJpJpKptpLoyoZprnBpMpNpOpPpQpRojpSpwojojpenRoHjwlspTpUoIoIoIoIjwhChChChChChChChChkhCpAimfzaaaaaaaaaaaaaanujjbhkyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapknenenepVnemQpWpDnepXpWnepYnemvpZnepmqaqbnemvptprqcprqdptqeoyoAoynBqfqgqhqiqjqkqlpbpbojojojnRoHjwjwjwjwqmqmqmqmjwqnqoqnqpqpqpqpqpqpqpqpimfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamvnInInImvnImQpDnInepWnIneneneqqnenenemQnenemvqrqsqrqsqtquproyqvoynBnBnBnBnBnBnBnBnBnBnBnBnBqwomqwaahchchchchchchcqxqyqzhchchchcaaaaaaaaaTfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqAbDbDbDbDbDbDbDqBaamvotototmvmvqCmvmvmvmvmvmvmvmvmvmvmvmvqCmvmvmvqDqEqFqGqHprprqIprqJprprprprqKprqLqMqMqMqMqLprqwoHqwaabKaaaabKaaaabKqnqoqnbKaaaabKaaaaaaaaaTfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaaaaaaaaaaaaaaaaaaaaaaaaaanRqNqOoHqPqQqRqSqTqUqRqVqWqWqRqXqYqZqTraquququprprprrbprprprrcprrdqKprrbprprprprprprqwoHreaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafzhcaTfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaacdrfcfaacdrfcfaanRrgrgrgnRoHqOoHrhqRqRriqTqUqRqRqRqRqRqRqRrjqTrkrlprrmprrmprrmprprprprprproAprrnrororororpprqwoHrqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafzaaaTfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaacdrrcfaacdrrcfaarqrsrhoHnRoHqOoHrtqRqRruqTrvrwqRqRqRqRqRqRrxqTryprprprrmprrmpsrzrArBrBrArAqKprrnrCrCrCrCrDprqwoHrqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafzhcaTfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaacdrrcfaacdrrcfaarqoHrhrErFrGrHoHrIqRrvrJqTrvrKrLrMrNqRrOqRrxqTrArArPrQprprprpsprprprrRprprqKqKqKqKqKqKqKqKqKqwoHrqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafzaaaTfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaaaadnaaaaaadnaaaarSoHrhqOnRqTqTrTqTqTqTqTqTqTqTqTqTqTrUqTqTqTqTprprprrVprpqprrVprrWrXrYprprrVprrZsasasasasbsanRomrqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafzhcaTfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaascdGdGsddGdGdGsddGdGsesfsgqOnRqTqWqRqRqRqRqRshsiriqTqWqRqRqRqRsjqTrCrCskpsprslsmsnprsospsqsrssoyprprsasasasasasanRoHstaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafzaaaTfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaaaadnaaaaaadnaaaasusvrhswnRqTqWqRqRqRsxqRqRqRsyqTszqRqRqRqRqRqToyoyoyoyprsAsBsCoyoyoyoyoyoyoyprproVoVoVoVoVoVnRnSqwnRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahcfzhcaTfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaacdrrcfaacdrrcfaasDsErhqOnRqTsFsFsGsFqVqRsHsIsJqTsKqRsLsMqRqRqTaaaaoysNsBsOsBsCoyaaaaaaaaaaoysPsQoVoVoVoVoVoVnRoHoHoHnRaaaaaaaaaaaasRsSsRaaaaaaaaaafzfzaaaTfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaacdrrcfaacdrrcfaarqsTsUsVnRnRnRnRnRnRnRnRnRnRnRnRnRnRnRnRnRsSnRnRnRnRnRnRnRnRnRnRnRnRnRnRnRnRnRnRnRnRnRnRnRnRnRoHoHoHoHsWaaaaaaaaaasXsYsZaaaaaaaaaafzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaacdtacfaacdtacfaarqoHrhtbtcrGrGrGrGtdoHoHoHoHoHoHoHoHoHteoHoHoHoHoHoHoHoHoHteoHoHoHoHoHoHoHoHoHteoHoHoHoHtfoHoHoHtgoHoHthaaaaaaaaaasXsSsZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaaaaaaaaaaaaaaaaaarqoHrhoHtfoHoHoHoHqOoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHtfoHoHoHoHoHtithaaaabtaaaasXoHsZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatjbDbDbDbDbDbDbDqBaanRrgrgnRrgrgqwqwqwtkqwqwqwtltlnRtltltltltlnRtltltltltlnRtltltltltlnRtltltltltlnRtltltltmtnoHoHoHoHoHoHtolwlwlwlwlwtpoHsZaaaaaaaaaabtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafzfzfzfzfztqtqtrtstttstrtqtqfzfzfzfzfzfzfzfzfzfzfzfzfznRfzfzfzfzfzqwfzfzfzfzfzqwfzfzfzqwqwnSqwoHoHoHoHsStfoHoHoHtuoHoHsZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatqtrtrtrtvtwtwtxtqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatyaaaaaaaaaatyaaaabttytytztytAtAqwtBtCtBtCmpmpmpmpmpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatqtrtrtDtEtFtrtGtqaaaaaaaaaaaaaaaaaaaaaaaabtaaaaaatytytytytytytytytytytytytytytytHtytItJtytKaTtKaTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatqtLtrtrtrtrtrtrtqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatytytMtNtOtNtPtQtRtStTtUtVtWtXtytHtHtHtYtytKaTtKaTaabtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtaaaatqtqtZtruatrtrtqtqaaaaaaaaaabtaaaaaaaaaaaaaaaatytytyubtHubtHuctytHtHtHtHtHtyudtytHuetHtHtytKaTtKaTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatqtqtqtqtqtqtqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatytyufugtHtHtHuhuhtHtHuitHtHtyujtytHuetHuktytKaTtKaTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtaaaaaaaatytytyubtHubtHubtytytytHtHuhuhuluhtHuetHtHtytKaTtKaTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatytytMumunumubtyuouptHuqurtyustytHtHtHtYtytKaTtKaTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatytytytytytytytytytytytytyustytytytytytyutaTutaTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauuaaaaaaaaaadnaaaaaaaaaauuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamvpBnInepCnemQpDpEnenIpFnenenemvnHpmnWpGpHoxmvpIpJpJpJpKptpLoyoZprnBpMpNojpOpPpQojpRpwojojpenRoHjwlspSpToIoIoIoIjwhChChChChChChChChkhCpAimfzaaaaaaaaaaaaaanujjbhkyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapknenenepUnemQpVpDnepWpVnepXnemvpYnepmpZqanemvptprqbprqcptqdoyoAoynBqeqfqgqhqiqjqkpbpbojojojnRoHjwjwjwjwqlqlqlqljwqmqnqmqoqoqoqoqoqoqoqoimfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamvnInInImvnImQpDnInepVnIneneneqpnenenemQnenemvqqqrqqqrqsqtproyquoynBnBnBnBnBnBnBnBnBnBnBnBnBqvomqvaahchchchchchchcqwqxqyhchchchcaaaaaaaaaTfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqzbDbDbDbDbDbDbDqAaamvotototmvmvqBmvmvmvmvmvmvmvmvmvmvmvmvqBmvmvmvqCqDqEqFqGprprqHprqIprprprprqJprqKqLqLqLqLqKprqvoHqvaabKaaaabKaaaabKqmqnqmbKaaaabKaaaaaaaaaTfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaaaaaaaaaaaaaaaaaaaaaaaaaanRqMqNoHqOqPqQqRqSqTqQqUqVqVqQqWqXqYqSqZqtqtqtprprprraprprprrbprrcqJprraprprprprprprqvoHrdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafzhcaTfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaacdrecfaacdrecfaanRrfrfrfnRoHqNoHrgqQqQrhqSqTqQqQqQqQqQqQqQriqSrjrkprrlprrlprrlprprprprprproAprrmrnrnrnrnroprqvoHrpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafzaaaTfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaacdrqcfaacdrqcfaarprrrgoHnRoHqNoHrsqQqQrtqSrurvqQqQqQqQqQqQrwqSrxprprprrlprrlpsryrzrArArzrzqJprrmrBrBrBrBrCprqvoHrpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafzhcaTfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaacdrqcfaacdrqcfaarpoHrgrDrErFrGoHrHqQrurIqSrurJrKrLrMqQrNqQrwqSrzrzrOrPprprprpsprprprrQprprqJqJqJqJqJqJqJqJqJqvoHrpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafzaaaTfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaaaadnaaaaaadnaaaarRoHrgqNnRqSqSrSqSqSqSqSqSqSqSqSqSqSrTqSqSqSqSprprprrUprpqprrUprrVrWrXprprrUprrYrZrZrZrZsarZnRomrpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafzhcaTfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasbdGdGscdGdGdGscdGdGsdsesfqNnRqSqVqQqQqQqQqQsgshrhqSqVqQqQqQqQsiqSrBrBsjpsprskslsmprsnsospsqsroyprprrZrZrZrZrZrZnRoHssaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafzaaaTfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaaaadnaaaaaadnaaaastsurgsvnRqSqVqQqQqQswqQqQqQsxqSsyqQqQqQqQqQqSoyoyoyoyprszsAsBoyoyoyoyoyoyoyprproVoVoVoVoVoVnRnSqvnRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahcfzhcaTfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaacdrqcfaacdrqcfaasCsDrgqNnRqSsEsEsFsEqUqQsGsHsIqSsJqQsKsLqQqQqSaaaaoysMsAsNsAsBoyaaaaaaaaaaoysOsPoVoVoVoVoVoVnRoHoHoHnRaaaaaaaaaaaasQsRsQaaaaaaaaaafzfzaaaTfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaacdrqcfaacdrqcfaarpsSsTsUnRnRnRnRnRnRnRnRnRnRnRnRnRnRnRnRnRsRnRnRnRnRnRnRnRnRnRnRnRnRnRnRnRnRnRnRnRnRnRnRnRnRnRoHoHoHoHsVaaaaaaaaaasWsXsYaaaaaaaaaafzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaacdsZcfaacdsZcfaarpoHrgtatbrFrFrFrFtcoHoHoHoHoHoHoHoHoHtdoHoHoHoHoHoHoHoHoHtdoHoHoHoHoHoHoHoHoHtdoHoHoHoHteoHoHoHtfoHoHtgaaaaaaaaaasWsRsYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaaaaaaaaaaaaaaaaaarpoHrgoHteoHoHoHoHqNoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHoHteoHoHoHoHoHthtgaaaabtaaaasWoHsYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatibDbDbDbDbDbDbDqAaanRrfrfnRrfrfqvqvqvtjqvqvqvtktknRtktktktktknRtktktktktknRtktktktktknRtktktktktknRtktktktltmoHoHoHoHoHoHtnlwlwlwlwlwtooHsYaaaaaaaaaabtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafzfzfzfzfztptptqtrtstrtqtptpfzfzfzfzfzfzfzfzfzfzfzfzfznRfzfzfzfzfzqvfzfzfzfzfzqvfzfzfzqvqvnSqvoHoHoHoHsRteoHoHoHttoHoHsYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatptqtqtqtutvtvtwtpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatxaaaaaaaaaatxaaaabttxtxtytxtztzqvtAtBtAtBmpmpmpmpmpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatptqtqtCtDtEtqtFtpaaaaaaaaaaaaaaaaaaaaaaaabtaaaaaatxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtGtxtHtItxtJaTtJaTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatptKtqtqtqtqtqtqtpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatxtxtLtMtNtMtOtPtQtRtStTtUtVtWtxtGtGtGtXtxtJaTtJaTaabtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtaaaatptptYtqtZtqtqtptpaaaaaaaaaabtaaaaaaaaaaaaaaaatxtxtxuatGuatGubtxtGtGtGtGtGtxuctxtGudtGtGtxtJaTtJaTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatptptptptptptpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatxtxueuftGtGtGugugtGtGuhtGtGtxuitxtGudtGujtxtJaTtJaTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtaaaaaaaatxtxtxuatGuatGuatxtxtxtGtGugugukugtGudtGtGtxtJaTtJaTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatxtxtLulumuluatxunuotGupuqtxurtxtGtGtGtXtxtJaTtJaTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatxtxtxtxtxtxtxtxtxtxtxtxtxurtxtxtxtxtxtxusaTusaTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaautaaaaaaaaaadnaaaaaaaaaautaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaaaaaaaaaadnaaaaaaaaaabMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaauvuvuvaadnaauvuvuvaabMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaauwuxuxdGuydGuxuxuzaabMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaauAuAuAaadnaauAuAuAaabMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaauuuuuuaadnaauuuuuuaabMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaauvuwuwdGuxdGuwuwuyaabMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaauzuzuzaadnaauzuzuzaabMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaaaaaaaaaadnaaaaaaaaaabMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaauvuvuvaadnaauvuvuvaabMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaauwuxuxdGuydGuxuxuzaabMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaauAuAuAaadnaauAuAuAaabMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaauuuuuuaadnaauuuuuuaabMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaauvuwuwdGuxdGuwuwuyaabMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaauzuzuzaadnaauzuzuzaabMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaaaaaaaaaadnaaaaaaaaaabMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatjbDbDbDbDbDuBbDbDbDbDbDfkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatibDbDbDbDbDuAbDbDbDbDbDfkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa