diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm
index f00fae98..8b88ae4f 100644
--- a/_maps/map_files/BoxStation/BoxStation.dmm
+++ b/_maps/map_files/BoxStation/BoxStation.dmm
@@ -3642,7 +3642,7 @@
"bsb" = (/obj/structure/chair/office/light{dir = 8},/obj/effect/landmark/start/research_director,/turf/open/floor/carpet/purple,/area/crew_quarters/heads/hor)
"bsc" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Research Division Delivery"; req_access_txt = "47"},/obj/effect/turf_decal/delivery,/turf/open/floor/plasteel,/area/science/lab)
"bsd" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; dir = 8; freq = 1400; location = "Research Division"},/obj/effect/turf_decal/bot,/turf/open/floor/plasteel,/area/science/lab)
-"bse" = (/turf/closed/wall/r_wall,/area/science/explab)
+"bse" = (/turf/open/floor/plating,/area/science/explab)
"bsf" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/obj/machinery/door/poddoor{id = "QMLoaddoor2"; name = "supply dock loading door"},/turf/open/floor/plating,/area/quartermaster/storage)
"bsg" = (/obj/structure/plasticflaps,/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/turf/open/floor/plating,/area/quartermaster/storage)
"bsh" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/obj/effect/turf_decal/stripes/line{dir = 1},/turf/open/floor/plating,/area/quartermaster/storage)
@@ -3712,11 +3712,11 @@
"btt" = (/obj/machinery/door/poddoor/shutters/preopen{id = "rnd2"; name = "research lab shutters"},/obj/effect/spawner/structure/window,/turf/open/floor/plating,/area/science/lab)
"btu" = (/obj/machinery/door/firedoor/heavy,/obj/machinery/door/poddoor/shutters/preopen{id = "rnd2"; name = "research lab shutters"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plasteel/white,/area/science/lab)
"btv" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{icon_state = "1-2"},/obj/machinery/door/firedoor/heavy,/obj/machinery/door/poddoor/shutters/preopen{id = "rnd2"; name = "research lab shutters"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plasteel/white,/area/science/lab)
-"btw" = (/obj/structure/table,/obj/item/paper_bin{pixel_y = 6},/turf/open/floor/plasteel/white/corner,/area/science/explab)
-"btx" = (/obj/structure/table,/obj/item/pen,/obj/machinery/camera{c_tag = "Experimentor Lab"; network = list("ss13","rd")},/obj/item/hand_labeler,/obj/item/stack/packageWrap,/turf/open/floor/plasteel/white/side,/area/science/explab)
-"bty" = (/obj/structure/table,/obj/item/folder/white,/obj/item/folder/white,/obj/machinery/airalarm{pixel_y = 23},/obj/item/radio/off,/turf/open/floor/plasteel/white/side,/area/science/explab)
-"btz" = (/obj/structure/closet/l3closet/scientist,/turf/open/floor/plasteel/white/side,/area/science/explab)
-"btA" = (/obj/structure/closet/emcloset,/turf/open/floor/plasteel/white/corner{dir = 8},/area/science/explab)
+"btw" = (/obj/effect/turf_decal/stripes/line{dir = 5},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/sign/poster/official/random{pixel_y = 32},/turf/open/floor/plasteel,/area/science/circuit)
+"btx" = (/obj/machinery/power/apc{areastring = "/area/science/circuit"; dir = 4; name = "Circuitry Lab APC"; pixel_x = 30},/obj/structure/cable,/turf/open/floor/plasteel/white,/area/science/circuit)
+"bty" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/sign/poster/official/random{pixel_x = -32},/turf/open/floor/plasteel/white,/area/science/circuit)
+"btz" = (/obj/effect/turf_decal/stripes/line{dir = 10},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plasteel,/area/science/circuit)
+"btA" = (/obj/effect/turf_decal/stripes/line,/turf/open/floor/plasteel,/area/science/circuit)
"btB" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{icon_state = "1-2"},/obj/structure/sign/warning/securearea{pixel_x = -32},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plating,/area/maintenance/starboard)
"btC" = (/obj/effect/mapping_helpers/airlock/cyclelink_helper{dir = 4},/obj/machinery/door/airlock/external{dir = 4; name = "Supply Dock Airlock"; req_access_txt = "31"},/turf/open/floor/plating,/area/quartermaster/storage)
"btD" = (/turf/open/floor/plating,/area/quartermaster/storage)
@@ -3791,13 +3791,13 @@
"buU" = (/obj/structure/disposalpipe/segment{dir = 9},/obj/structure/cable{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/turf/open/floor/plasteel/white,/area/science/research)
"buV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plasteel/white/side{dir = 6},/area/science/research)
"buW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plasteel/white,/area/science/research)
-"buX" = (/obj/effect/spawner/structure/window,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plating,/area/science/explab)
-"buY" = (/obj/structure/disposalpipe/segment{dir = 6},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plasteel/white,/area/science/explab)
-"buZ" = (/obj/machinery/firealarm{pixel_y = 24},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light{dir = 1; pixel_y = 16},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 1},/turf/open/floor/plasteel/white,/area/science/explab)
-"bva" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plasteel/white,/area/science/explab)
-"bvb" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plasteel/white,/area/science/explab)
-"bvc" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "4-8"},/obj/structure/cable{icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plasteel/white,/area/science/explab)
-"bvd" = (/obj/machinery/door/airlock/maintenance{dir = 4; name = "Experimentation Lab Maintenance"; req_access_txt = "47"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plating,/area/maintenance/starboard)
+"buX" = (/obj/effect/spawner/structure/window,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plating,/area/science/circuit)
+"buY" = (/obj/structure/disposalpipe/segment{dir = 6},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light{dir = 1; pixel_y = 16},/turf/open/floor/plasteel/white,/area/science/circuit)
+"buZ" = (/obj/effect/turf_decal/stripes/line{dir = 9},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/sign/poster/official/random{pixel_y = 32},/turf/open/floor/plasteel,/area/science/circuit)
+"bva" = (/obj/effect/turf_decal/stripes/line{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 1},/turf/open/floor/plasteel,/area/science/circuit)
+"bvb" = (/obj/effect/turf_decal/stripes/line{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plasteel,/area/science/circuit)
+"bvc" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{icon_state = "2-4"},/obj/machinery/light{dir = 1; pixel_y = 16},/turf/open/floor/plasteel/white,/area/science/circuit)
+"bvd" = (/obj/machinery/door/airlock/maintenance{dir = 4; name = "Circuitry Lab Maintenance"; req_access_txt = "47"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plating,/area/science/circuit)
"bve" = (/obj/structure/cable{icon_state = "1-2"},/obj/structure/cable{icon_state = "2-8"},/obj/structure/disposalpipe/junction/flip{dir = 1},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/turf/open/floor/plating,/area/maintenance/starboard)
"bvf" = (/obj/machinery/camera{c_tag = "Cargo Receiving Dock"; dir = 4},/obj/machinery/button/door{id = "QMLoaddoor"; layer = 4; name = "Loading Doors"; pixel_x = -24; pixel_y = -8},/obj/machinery/button/door{id = "QMLoaddoor2"; layer = 4; name = "Loading Doors"; pixel_x = -24; pixel_y = 8},/obj/effect/turf_decal/stripes/line{dir = 8},/turf/open/floor/plasteel,/area/quartermaster/storage)
"bvg" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; dir = 8; freq = 1400; location = "QM #2"},/obj/effect/turf_decal/bot,/mob/living/simple_animal/bot/mulebot{home_destination = "QM #2"; suffix = "#2"},/turf/open/floor/plasteel,/area/quartermaster/storage)
@@ -3857,15 +3857,14 @@
"bwi" = (/obj/structure/cable{icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel/white,/area/science/research)
"bwj" = (/obj/machinery/light,/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel/white,/area/science/research)
"bwk" = (/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel/white,/area/science/research)
-"bwl" = (/obj/structure/cable{icon_state = "4-8"},/obj/machinery/door/firedoor/heavy,/obj/machinery/door/airlock/research{dir = 4; name = "Experimentation Lab"; req_access_txt = "47"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel/white,/area/science/explab)
-"bwm" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel/white,/area/science/explab)
-"bwn" = (/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel/white,/area/science/explab)
-"bwo" = (/obj/structure/cable{icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel/white,/area/science/explab)
-"bwp" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/effect/landmark/event_spawn,/turf/open/floor/plasteel/white,/area/science/explab)
-"bwq" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel/white,/area/science/explab)
-"bwr" = (/obj/machinery/holopad,/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 1},/turf/open/floor/plasteel/white,/area/science/explab)
-"bws" = (/obj/machinery/power/apc{areastring = "/area/science/explab"; dir = 4; name = "Experimentation Lab APC"; pixel_x = 26},/obj/structure/cable,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel/white,/area/science/explab)
-"bwt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/closed/wall/r_wall,/area/science/explab)
+"bwl" = (/obj/structure/cable{icon_state = "4-8"},/obj/machinery/door/firedoor/heavy,/obj/machinery/door/airlock/research{dir = 4; name = "Circuitry Lab"; req_access_txt = "47"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel/white,/area/science/circuit)
+"bwm" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{icon_state = "4-8"},/turf/open/floor/plasteel/white,/area/science/circuit)
+"bwn" = (/obj/effect/turf_decal/stripes/line{dir = 8},/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 1},/turf/open/floor/plasteel,/area/science/circuit)
+"bwp" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{icon_state = "4-8"},/turf/open/floor/plasteel,/area/science/circuit)
+"bwq" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plasteel,/area/science/circuit)
+"bwr" = (/obj/effect/turf_decal/stripes/line{dir = 4},/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 1},/turf/open/floor/plasteel,/area/science/circuit)
+"bws" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{icon_state = "1-8"},/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plasteel/white,/area/science/circuit)
+"bwt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/closed/wall/r_wall,/area/science/circuit)
"bwu" = (/obj/structure/cable{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plating,/area/maintenance/starboard)
"bwv" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4},/turf/closed/wall,/area/maintenance/starboard)
"bww" = (/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/plating,/area/maintenance/starboard)
@@ -3924,11 +3923,9 @@
"bxx" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel/white/side{dir = 9},/area/science/research)
"bxy" = (/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/plating,/area/crew_quarters/heads/hor)
"bxz" = (/turf/closed/wall,/area/crew_quarters/heads/hor)
-"bxA" = (/obj/machinery/light_switch{pixel_x = -20},/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel/white,/area/science/explab)
-"bxB" = (/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_y = -30; receive_ore_updates = 1},/obj/machinery/atmospherics/components/unary/vent_pump/on{dir = 1},/turf/open/floor/plasteel/white,/area/science/explab)
-"bxC" = (/turf/open/floor/plasteel/white,/area/science/explab)
-"bxD" = (/obj/structure/chair/office/light,/obj/effect/landmark/start/scientist,/turf/open/floor/plasteel/white,/area/science/explab)
-"bxE" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/obj/machinery/atmospherics/components/unary/vent_scrubber/on{dir = 1},/turf/open/floor/plasteel/white,/area/science/explab)
+"bxA" = (/obj/structure/disposalpipe/segment,/obj/structure/extinguisher_cabinet{pixel_x = -27},/turf/open/floor/plasteel/white,/area/science/circuit)
+"bxD" = (/obj/structure/target_stake,/turf/open/floor/plasteel,/area/science/circuit)
+"bxE" = (/obj/effect/turf_decal/stripes/line{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plasteel,/area/science/circuit)
"bxF" = (/obj/structure/cable{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/turf/open/floor/plating,/area/maintenance/starboard)
"bxG" = (/obj/machinery/door/airlock/maintenance/abandoned{dir = 4; req_one_access_txt = "8;12"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plating,/area/maintenance/starboard)
"bxH" = (/turf/open/floor/plating,/area/maintenance/starboard)
@@ -4007,12 +4004,11 @@
"bzc" = (/obj/structure/rack,/obj/item/circuitboard/aicore{pixel_x = -2; pixel_y = 4},/obj/effect/turf_decal/stripes/line{dir = 9},/turf/open/floor/plasteel/white,/area/crew_quarters/heads/hor)
"bzd" = (/obj/machinery/status_display/ai{pixel_y = 32},/obj/effect/landmark/event_spawn,/obj/effect/turf_decal/stripes/line{dir = 1},/turf/open/floor/plasteel/white,/area/crew_quarters/heads/hor)
"bze" = (/obj/effect/landmark/xmastree/rdrod,/obj/effect/turf_decal/stripes/line{dir = 5},/turf/open/floor/plasteel/white,/area/crew_quarters/heads/hor)
-"bzf" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/obj/effect/turf_decal/stripes/line{dir = 1},/turf/open/floor/plasteel,/area/science/explab)
-"bzg" = (/turf/closed/wall,/area/science/explab)
-"bzh" = (/obj/structure/table,/obj/item/clipboard,/obj/item/book/manual/wiki/experimentor,/turf/open/floor/plasteel/white/corner{dir = 4},/area/science/explab)
-"bzi" = (/obj/machinery/computer/rdconsole/experiment{dir = 1},/turf/open/floor/plasteel/white/side{dir = 1},/area/science/explab)
-"bzj" = (/obj/structure/closet/radiation,/turf/open/floor/plasteel/white/corner{dir = 1},/area/science/explab)
-"bzk" = (/obj/machinery/button/door{id = "telelab"; name = "Test Chamber Blast Doors"; pixel_x = 25; req_access_txt = "47"},/obj/effect/turf_decal/stripes/line,/turf/open/floor/plasteel/white,/area/science/explab)
+"bzf" = (/obj/structure/disposalpipe/segment,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/open/floor/plasteel/white,/area/science/circuit)
+"bzg" = (/obj/effect/turf_decal/stripes/line{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plasteel,/area/science/circuit)
+"bzi" = (/obj/effect/landmark/event_spawn,/turf/open/floor/plasteel,/area/science/circuit)
+"bzj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plasteel,/area/science/circuit)
+"bzk" = (/obj/machinery/airalarm{dir = 8; pixel_x = 24},/turf/open/floor/plasteel/white,/area/science/circuit)
"bzl" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 6},/turf/open/floor/plating,/area/maintenance/starboard)
"bzm" = (/obj/machinery/atmospherics/components/binary/valve{dir = 4},/turf/open/floor/plating,/area/maintenance/starboard)
"bzn" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 8},/obj/machinery/light/small{dir = 4},/turf/open/floor/plating,/area/maintenance/starboard)
@@ -4069,9 +4065,9 @@
"bAm" = (/obj/structure/rack,/obj/item/aicard,/obj/effect/turf_decal/stripes/line{dir = 8},/turf/open/floor/plasteel/white,/area/crew_quarters/heads/hor)
"bAn" = (/obj/machinery/holopad,/turf/open/floor/plasteel/white,/area/crew_quarters/heads/hor)
"bAo" = (/obj/structure/displaycase/labcage,/obj/machinery/light{dir = 4},/obj/effect/turf_decal/stripes/line{dir = 4},/turf/open/floor/plasteel/white,/area/crew_quarters/heads/hor)
-"bAp" = (/turf/closed/wall/r_wall,/area/crew_quarters/heads/hor)
-"bAq" = (/obj/machinery/door/poddoor/preopen{id = "telelab"; name = "test chamber blast door"},/obj/effect/spawner/structure/window/reinforced,/obj/machinery/door/firedoor/heavy,/turf/open/floor/engine,/area/science/explab)
-"bAr" = (/obj/machinery/door/poddoor/preopen{id = "telelab"; name = "test chamber blast door"},/obj/machinery/door/firedoor/heavy,/turf/open/floor/engine,/area/science/explab)
+"bAp" = (/obj/effect/turf_decal/stripes/line{dir = 6},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plasteel,/area/science/circuit)
+"bAq" = (/obj/effect/turf_decal/stripes/line,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plasteel,/area/science/circuit)
+"bAr" = (/obj/structure/closet/crate,/obj/item/target/alien,/obj/item/target/alien,/obj/item/target/clown,/obj/item/target/clown,/obj/item/target/syndicate,/obj/item/target/syndicate,/obj/item/gun/energy/laser/practice,/obj/item/gun/energy/laser/practice,/obj/machinery/light_switch{pixel_x = 20},/turf/open/floor/plasteel/white,/area/science/circuit)
"bAs" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 8},/turf/open/floor/plating,/area/maintenance/starboard)
"bAt" = (/obj/machinery/atmospherics/components/unary/thermomachine/freezer{dir = 8},/turf/open/floor/plating,/area/maintenance/starboard)
"bAu" = (/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; pixel_x = -30},/obj/machinery/computer/bounty{dir = 4},/obj/effect/turf_decal/tile/brown{dir = 1},/obj/effect/turf_decal/tile/brown{dir = 4},/obj/effect/turf_decal/tile/brown{dir = 8},/obj/machinery/keycard_auth{pixel_y = 25},/turf/open/floor/plasteel,/area/quartermaster/qm)
@@ -4143,7 +4139,7 @@
"bBI" = (/obj/structure/rack,/obj/item/taperecorder{pixel_x = -3},/obj/item/paicard{pixel_x = 4},/obj/effect/turf_decal/stripes/line{dir = 10},/turf/open/floor/plasteel/white,/area/crew_quarters/heads/hor)
"bBJ" = (/obj/effect/turf_decal/stripes/line,/turf/open/floor/plasteel/white,/area/crew_quarters/heads/hor)
"bBK" = (/obj/machinery/modular_computer/console/preset/research{dir = 8},/obj/effect/turf_decal/stripes/line{dir = 6},/turf/open/floor/plasteel/white,/area/crew_quarters/heads/hor)
-"bBL" = (/turf/open/floor/engine,/area/science/explab)
+"bBL" = (/obj/structure/table/reinforced,/obj/item/multitool,/obj/item/screwdriver,/obj/machinery/computer/security/telescreen/circuitry{dir = 4; pixel_x = -28},/turf/open/floor/plasteel/white,/area/science/circuit)
"bBM" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/general/visible,/obj/structure/cable{icon_state = "2-4"},/turf/open/floor/plating,/area/maintenance/starboard)
"bBN" = (/obj/structure/cable{icon_state = "4-8"},/turf/open/floor/plating,/area/maintenance/starboard)
"bBO" = (/obj/machinery/power/apc{areastring = "/area/maintenance/starboard"; dir = 4; name = "Starboard Maintenance APC"; pixel_x = 26},/obj/structure/cable{icon_state = "0-8"},/turf/open/floor/plating,/area/maintenance/starboard)
@@ -4202,8 +4198,8 @@
"bCP" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
"bCQ" = (/obj/machinery/suit_storage_unit/rd,/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/hor)
"bCR" = (/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
-"bCS" = (/obj/machinery/rnd/experimentor,/turf/open/floor/engine,/area/science/explab)
-"bCT" = (/obj/effect/landmark/blobstart,/obj/effect/landmark/xeno_spawn,/turf/open/floor/engine,/area/science/explab)
+"bCS" = (/obj/machinery/atmospherics/components/unary/vent_pump/on{dir = 1},/turf/open/floor/plasteel/white,/area/science/circuit)
+"bCT" = (/obj/structure/table/reinforced,/obj/machinery/cell_charger{pixel_y = 5},/obj/item/stock_parts/cell/high,/obj/item/stock_parts/cell/high,/obj/item/stock_parts/cell/high,/obj/item/stock_parts/cell/high,/obj/item/stock_parts/cell/high,/obj/item/stock_parts/cell/high,/turf/open/floor/plasteel/white,/area/science/circuit)
"bCU" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 8},/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plating,/area/maintenance/starboard)
"bCV" = (/obj/machinery/atmospherics/components/unary/thermomachine/heater{dir = 8},/turf/open/floor/plating,/area/maintenance/starboard)
"bCW" = (/obj/machinery/camera{c_tag = "Quartermaster's Office"; dir = 4},/obj/item/radio/intercom{name = "Station Intercom (General)"; pixel_y = -35},/obj/machinery/status_display/supply{pixel_x = -32},/obj/machinery/computer/security/qm{dir = 4},/obj/effect/turf_decal/tile/brown{dir = 1},/obj/effect/turf_decal/tile/brown,/obj/effect/turf_decal/tile/brown{dir = 8},/turf/open/floor/plasteel,/area/quartermaster/qm)
@@ -4279,7 +4275,7 @@
"bEo" = (/obj/structure/chair{dir = 1},/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
"bEp" = (/obj/structure/disposalpipe/segment,/obj/machinery/light_switch{pixel_x = 28},/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
"bEq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/effect/turf_decal/tile/blue{dir = 4},/obj/effect/turf_decal/tile/blue{dir = 8},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/heads/cmo)
-"bEr" = (/obj/machinery/camera{c_tag = "Experimentor Lab Chamber"; dir = 1; network = list("ss13","rd")},/obj/machinery/light,/obj/structure/sign/warning/nosmoking{pixel_y = -32},/turf/open/floor/engine,/area/science/explab)
+"bEr" = (/obj/structure/table/reinforced,/obj/item/storage/fancy/donut_box,/obj/structure/sign/poster/official/random{pixel_y = -32},/obj/machinery/camera{c_tag = "Circuitry Lab"; dir = 1; network = list("ss13","rd")},/turf/open/floor/plasteel/white,/area/science/circuit)
"bEs" = (/obj/structure/cable{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/structure/cable{icon_state = "2-4"},/turf/open/floor/plating,/area/maintenance/starboard)
"bEt" = (/obj/machinery/door/airlock/maintenance/abandoned{dir = 4; req_one_access_txt = "8;12"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{icon_state = "4-8"},/turf/open/floor/plating,/area/maintenance/starboard)
"bEu" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 5},/obj/structure/cable{icon_state = "1-8"},/turf/open/floor/plating,/area/maintenance/starboard)
@@ -4379,8 +4375,8 @@
"bGk" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/public/glass{dir = 4; name = "Central Access"},/obj/effect/turf_decal/loading_area{dir = 1; icon_state = "drain"; name = "drain"},/turf/open/floor/plasteel,/area/hallway/primary/starboard)
"bGl" = (/turf/open/floor/engine,/area/science/xenobiology)
"bGm" = (/obj/machinery/camera{c_tag = "Xenobiology Test Chamber"; network = list("xeno","rd")},/obj/machinery/light{dir = 1; pixel_y = 16},/turf/open/floor/engine,/area/science/xenobiology)
-"bGn" = (/obj/machinery/portable_atmospherics/canister/toxins,/obj/effect/turf_decal/delivery,/turf/open/floor/plasteel,/area/science/storage)
-"bGo" = (/obj/machinery/portable_atmospherics/canister/toxins,/obj/structure/sign/warning/nosmoking{pixel_y = 32},/obj/effect/turf_decal/delivery,/turf/open/floor/plasteel,/area/science/storage)
+"bGn" = (/obj/machinery/portable_atmospherics/canister/toxins,/obj/effect/turf_decal/delivery,/turf/open/floor/engine,/area/science/storage)
+"bGo" = (/obj/machinery/portable_atmospherics/canister/toxins,/obj/structure/sign/warning/nosmoking{pixel_y = 32},/obj/effect/turf_decal/delivery,/obj/machinery/light/small{dir = 1},/turf/open/floor/engine,/area/science/storage)
"bGp" = (/obj/machinery/power/apc{areastring = "/area/science/research"; dir = 8; name = "Misc Research APC"; pixel_x = -25},/obj/structure/cable{icon_state = "0-4"},/turf/open/floor/plasteel/white/side{dir = 5},/area/science/research)
"bGq" = (/obj/structure/cable{icon_state = "1-8"},/obj/structure/disposalpipe/segment,/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plasteel/white,/area/science/research)
"bGr" = (/turf/open/floor/plasteel/white/side{dir = 9},/area/science/research)
@@ -4453,11 +4449,11 @@
"bHG" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/public/glass{dir = 4; name = "Central Access"},/turf/open/floor/plasteel,/area/hallway/primary/starboard)
"bHH" = (/obj/machinery/door/airlock/public/glass{dir = 4; name = "Central Access"},/turf/open/floor/plasteel,/area/hallway/primary/starboard)
"bHI" = (/obj/structure/table,/obj/machinery/button/door{id = "Biohazard"; name = "Biohazard Shutter Control"; pixel_x = -5; pixel_y = 5; req_access_txt = "47"},/obj/machinery/button/door{id = "rnd2"; name = "Research Lab Shutter Control"; pixel_x = 5; pixel_y = 5; req_access_txt = "47"},/obj/item/book/lorebooks/welcome_to_kinaris{step_x = 0; step_y = 0},/turf/open/floor/carpet/purple,/area/crew_quarters/heads/hor)
-"bHJ" = (/obj/machinery/airalarm{dir = 4; pixel_x = -22},/obj/machinery/light/small{dir = 8},/turf/open/floor/plasteel,/area/science/storage)
-"bHK" = (/turf/open/floor/plasteel,/area/science/storage)
-"bHL" = (/obj/effect/decal/cleanable/oil,/obj/item/cigbutt,/obj/machinery/atmospherics/components/unary/vent_scrubber/on{dir = 4},/turf/open/floor/plasteel,/area/science/storage)
-"bHM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel,/area/science/storage)
-"bHN" = (/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel,/area/science/storage)
+"bHJ" = (/obj/machinery/airalarm{dir = 4; pixel_x = -22},/turf/open/floor/plasteel/white,/area/science/storage)
+"bHK" = (/turf/open/floor/plasteel/white,/area/science/storage)
+"bHL" = (/obj/effect/decal/cleanable/oil,/obj/item/cigbutt,/obj/machinery/atmospherics/components/unary/vent_scrubber/on{dir = 4},/turf/open/floor/plasteel/white,/area/science/storage)
+"bHM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel/white,/area/science/storage)
+"bHN" = (/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel/white,/area/science/storage)
"bHO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/closed/wall,/area/science/storage)
"bHP" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel/white/side{dir = 5},/area/science/research)
"bHQ" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/open/floor/plasteel/white,/area/science/research)
@@ -4527,11 +4523,11 @@
"bJc" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plating,/area/maintenance/aft)
"bJd" = (/obj/structure/cable{icon_state = "1-2"},/obj/structure/disposalpipe/sorting/mail{sortType = 10},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plating,/area/maintenance/aft)
"bJe" = (/obj/effect/landmark/event_spawn,/turf/open/floor/engine,/area/science/xenobiology)
-"bJf" = (/obj/machinery/power/apc{areastring = "/area/science/storage"; dir = 8; name = "Toxins Storage APC"; pixel_x = -25},/obj/structure/cable{icon_state = "0-4"},/obj/machinery/camera{c_tag = "Toxins Storage"; dir = 4; network = list("ss13","rd")},/turf/open/floor/plasteel,/area/science/storage)
-"bJg" = (/obj/structure/cable{icon_state = "4-8"},/turf/open/floor/plasteel,/area/science/storage)
-"bJh" = (/obj/structure/cable{icon_state = "4-8"},/obj/effect/landmark/xeno_spawn,/turf/open/floor/plasteel,/area/science/storage)
-"bJi" = (/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/components/unary/vent_pump/on{dir = 4},/turf/open/floor/plasteel,/area/science/storage)
-"bJj" = (/obj/structure/cable{icon_state = "4-8"},/obj/machinery/door/airlock/research{dir = 4; name = "Toxins Storage"; req_access_txt = "8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plasteel,/area/science/storage)
+"bJf" = (/obj/machinery/power/apc{areastring = "/area/science/storage"; dir = 8; name = "Toxins Storage APC"; pixel_x = -25},/obj/structure/cable{icon_state = "0-4"},/obj/machinery/camera{c_tag = "Toxins Storage"; dir = 4; network = list("ss13","rd")},/turf/open/floor/plasteel/white,/area/science/storage)
+"bJg" = (/obj/structure/cable{icon_state = "4-8"},/turf/open/floor/plasteel/white,/area/science/storage)
+"bJh" = (/obj/structure/cable{icon_state = "4-8"},/obj/effect/landmark/xeno_spawn,/turf/open/floor/plasteel/white,/area/science/storage)
+"bJi" = (/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/components/unary/vent_pump/on{dir = 4},/turf/open/floor/plasteel/white,/area/science/storage)
+"bJj" = (/obj/structure/cable{icon_state = "4-8"},/obj/machinery/door/airlock/research{dir = 4; name = "Toxins Storage"; req_access_txt = "8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plasteel/white,/area/science/storage)
"bJk" = (/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/open/floor/plasteel/white/side{dir = 5},/area/science/research)
"bJl" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plasteel/white,/area/science/research)
"bJm" = (/obj/effect/turf_decal/stripes/line{dir = 8},/turf/open/floor/plasteel/white,/area/science/research)
@@ -4600,10 +4596,10 @@
"bKx" = (/obj/structure/table/reinforced,/obj/item/clipboard,/obj/item/paper/monitorkey,/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/book/lorebooks/welcome_to_kinaris{step_x = 0; step_y = 0},/turf/open/floor/plasteel,/area/crew_quarters/heads/chief)
"bKB" = (/obj/structure/sign/warning/electricshock,/turf/closed/wall/r_wall,/area/science/xenobiology)
"bKC" = (/obj/structure/disposaloutlet{dir = 1},/obj/structure/disposalpipe/trunk,/turf/open/floor/engine,/area/science/xenobiology)
-"bKD" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/effect/turf_decal/bot,/turf/open/floor/plasteel,/area/science/storage)
-"bKE" = (/obj/machinery/portable_atmospherics/canister/nitrous_oxide,/obj/effect/turf_decal/bot,/turf/open/floor/plasteel,/area/science/storage)
-"bKF" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/effect/turf_decal/bot,/turf/open/floor/plasteel,/area/science/storage)
-"bKG" = (/obj/machinery/portable_atmospherics/scrubber/huge,/turf/open/floor/plasteel,/area/science/storage)
+"bKD" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/effect/turf_decal/bot,/turf/open/floor/engine,/area/science/storage)
+"bKE" = (/obj/machinery/portable_atmospherics/canister/nitrous_oxide,/obj/effect/turf_decal/bot,/turf/open/floor/engine,/area/science/storage)
+"bKF" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/effect/turf_decal/bot,/turf/open/floor/engine,/area/science/storage)
+"bKG" = (/obj/machinery/portable_atmospherics/scrubber/huge,/turf/open/floor/engine,/area/science/storage)
"bKH" = (/obj/structure/sign/warning/nosmoking{pixel_x = -32},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plasteel/white/side{dir = 5},/area/science/research)
"bKI" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plasteel/white,/area/science/research)
"bKJ" = (/obj/effect/turf_decal/stripes/line{dir = 10},/turf/open/floor/plasteel/white,/area/science/research)
@@ -4673,7 +4669,7 @@
"bLV" = (/obj/structure/closet/l3closet/scientist{pixel_x = -2},/turf/open/floor/plasteel/white,/area/science/mixing)
"bLW" = (/obj/machinery/vending/wardrobe/science_wardrobe,/turf/open/floor/plasteel/white,/area/science/mixing)
"bLX" = (/obj/item/assembly/signaler{pixel_y = 8},/obj/item/assembly/signaler{pixel_x = -8; pixel_y = 5},/obj/item/assembly/signaler{pixel_x = 6; pixel_y = 5},/obj/item/assembly/signaler{pixel_x = -2; pixel_y = -2},/obj/structure/table/reinforced,/turf/open/floor/plasteel/white,/area/science/mixing)
-"bLY" = (/obj/item/transfer_valve{pixel_x = -5},/obj/item/transfer_valve{pixel_x = -5},/obj/item/transfer_valve,/obj/item/transfer_valve,/obj/item/transfer_valve{pixel_x = 5},/obj/item/transfer_valve{pixel_x = 5},/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_y = -30; receive_ore_updates = 1},/obj/structure/table/reinforced,/turf/open/floor/plasteel/white,/area/science/mixing)
+"bLY" = (/obj/item/transfer_valve{pixel_x = -5},/obj/item/transfer_valve{pixel_x = -5},/obj/item/transfer_valve,/obj/item/transfer_valve,/obj/item/transfer_valve{pixel_x = 5},/obj/item/transfer_valve{pixel_x = 5},/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_y = -30; receive_ore_updates = 1},/obj/structure/table/reinforced,/obj/machinery/light,/turf/open/floor/plasteel/white,/area/science/mixing)
"bLZ" = (/obj/item/assembly/timer{pixel_x = 5; pixel_y = 4},/obj/item/assembly/timer{pixel_x = -4; pixel_y = 2},/obj/item/assembly/timer{pixel_x = 6; pixel_y = -4},/obj/item/assembly/timer,/obj/structure/table/reinforced,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plasteel/white,/area/science/mixing)
"bMa" = (/obj/structure/tank_dispenser,/turf/open/floor/plasteel/white,/area/science/mixing)
"bMb" = (/obj/machinery/power/apc{areastring = "/area/science/mixing"; dir = 4; name = "Toxins Lab APC"; pixel_x = 26},/obj/structure/cable,/turf/open/floor/plasteel/white,/area/science/mixing)
@@ -4795,9 +4791,9 @@
"bOn" = (/turf/open/floor/plasteel/white,/area/science/xenobiology)
"bOo" = (/obj/structure/chair/stool,/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plasteel/white,/area/science/xenobiology)
"bOp" = (/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plasteel/white,/area/science/xenobiology)
-"bOq" = (/obj/machinery/monkey_recycler,/obj/machinery/firealarm{pixel_y = 24},/obj/effect/turf_decal/stripes/line{dir = 10},/turf/open/floor/plasteel,/area/science/xenobiology)
-"bOr" = (/obj/machinery/processor/slime,/obj/effect/turf_decal/stripes/line,/turf/open/floor/plasteel,/area/science/xenobiology)
-"bOs" = (/obj/machinery/smartfridge/extract/preloaded,/obj/effect/turf_decal/stripes/line,/turf/open/floor/plasteel,/area/science/xenobiology)
+"bOq" = (/obj/machinery/firealarm{pixel_y = 24},/obj/effect/turf_decal/stripes/line{dir = 10},/obj/structure/table,/turf/open/floor/plasteel,/area/science/xenobiology)
+"bOr" = (/obj/effect/turf_decal/stripes/line,/obj/structure/rack,/obj/item/clothing/shoes/winterboots,/obj/item/clothing/suit/hooded/wintercoat,/turf/open/floor/plasteel,/area/science/xenobiology)
+"bOs" = (/obj/effect/turf_decal/stripes/line,/obj/machinery/monkey_recycler,/turf/open/floor/plasteel,/area/science/xenobiology)
"bOt" = (/obj/machinery/airalarm{pixel_y = 23},/obj/structure/table/glass,/obj/machinery/reagentgrinder{desc = "Used to grind things up into raw materials and liquids."; pixel_y = 5},/obj/effect/turf_decal/stripes/line,/turf/open/floor/plasteel,/area/science/xenobiology)
"bOu" = (/obj/structure/closet/l3closet/scientist,/obj/item/extinguisher,/obj/effect/turf_decal/stripes/line,/turf/open/floor/plasteel,/area/science/xenobiology)
"bOv" = (/obj/structure/closet/l3closet/scientist,/obj/machinery/light_switch{pixel_y = 28},/obj/item/extinguisher,/obj/effect/turf_decal/stripes/line,/turf/open/floor/plasteel,/area/science/xenobiology)
@@ -4844,7 +4840,7 @@
"bPk" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance{dir = 4; name = "Xenobiology Maintenance"; req_access_txt = "55"},/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plating,/area/maintenance/aft)
"bPl" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "1-8"},/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plasteel/white,/area/science/xenobiology)
"bPm" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plasteel/white,/area/science/xenobiology)
-"bPn" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "4-8"},/obj/structure/cable{icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plasteel/white,/area/science/xenobiology)
+"bPn" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "4-8"},/obj/structure/cable{icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/processor/slime,/turf/open/floor/plasteel/white,/area/science/xenobiology)
"bPo" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/components/unary/vent_scrubber/on,/turf/open/floor/plasteel/white,/area/science/xenobiology)
"bPp" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "2-8"},/obj/structure/cable{icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plasteel/white,/area/science/xenobiology)
"bPq" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plasteel/white,/area/science/xenobiology)
@@ -4859,7 +4855,7 @@
"bPz" = (/obj/machinery/door/airlock/research/glass/incinerator/toxmix_interior{dir = 4},/turf/open/floor/engine,/area/science/mixing)
"bPA" = (/obj/effect/turf_decal/stripes/line{dir = 8},/turf/open/floor/plasteel/white,/area/science/mixing)
"bPB" = (/obj/effect/turf_decal/stripes/line{dir = 4},/turf/open/floor/plasteel/white,/area/science/mixing)
-"bPC" = (/obj/structure/extinguisher_cabinet{pixel_x = 27},/obj/machinery/camera{c_tag = "Toxins Lab East"; dir = 8; network = list("ss13","rd"); pixel_y = -22},/obj/effect/turf_decal/stripes/line{dir = 4},/turf/open/floor/plasteel,/area/science/mixing)
+"bPC" = (/obj/structure/extinguisher_cabinet{pixel_x = 27},/obj/machinery/camera{c_tag = "Toxins Lab East"; dir = 8; network = list("ss13","rd"); pixel_y = -22},/obj/effect/turf_decal/stripes/line{dir = 4},/obj/machinery/light{dir = 4},/turf/open/floor/plasteel,/area/science/mixing)
"bPD" = (/obj/structure/reagent_dispensers/watertank,/turf/open/floor/plating,/area/maintenance/starboard/aft)
"bPE" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plating,/area/maintenance/starboard/aft)
"bPF" = (/obj/structure/closet/wardrobe/grey,/turf/open/floor/plating,/area/maintenance/starboard/aft)
@@ -4908,9 +4904,9 @@
"bQw" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{icon_state = "1-2"},/obj/structure/sign/warning/securearea{pixel_x = 32},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plating,/area/maintenance/aft)
"bQx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/closed/wall/r_wall,/area/science/xenobiology)
"bQy" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel/white,/area/science/xenobiology)
-"bQz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/chair/comfy/black,/turf/open/floor/plasteel/white,/area/science/xenobiology)
-"bQA" = (/obj/effect/landmark/start/scientist,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/chair/comfy/black,/turf/open/floor/plasteel/white,/area/science/xenobiology)
-"bQB" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,/turf/open/floor/plasteel/white,/area/science/xenobiology)
+"bQz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/chair/comfy/black{dir = 8},/turf/open/floor/plasteel/white,/area/science/xenobiology)
+"bQA" = (/obj/effect/landmark/start/scientist,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/chair/comfy/black{dir = 4},/turf/open/floor/plasteel/white,/area/science/xenobiology)
+"bQB" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,/obj/machinery/computer/camera_advanced/xenobio{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel/white,/area/science/xenobiology)
"bQC" = (/obj/structure/cable{icon_state = "1-2"},/obj/machinery/holopad,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel/white,/area/science/xenobiology)
"bQD" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/components/unary/vent_pump/on{dir = 1},/turf/open/floor/plasteel/white,/area/science/xenobiology)
"bQE" = (/obj/structure/chair/stool,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel/white,/area/science/xenobiology)
@@ -4919,9 +4915,9 @@
"bQH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/open/floor/plasteel/white/side{dir = 1},/area/science/research)
"bQI" = (/turf/open/floor/plasteel/white/side{dir = 1},/area/science/research)
"bQJ" = (/obj/machinery/sparker/toxmix{pixel_x = 25},/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxins_mixing_input{dir = 4},/turf/open/floor/engine/vacuum,/area/science/mixing)
-"bQK" = (/obj/structure/sign/warning/fire{pixel_y = -32},/obj/machinery/atmospherics/components/binary/pump/on{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/engine,/area/science/mixing)
+"bQK" = (/obj/structure/sign/warning/fire{pixel_y = -32},/obj/machinery/atmospherics/components/binary/pump/on{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light,/turf/open/floor/engine,/area/science/mixing)
"bQL" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 4},/obj/machinery/meter,/obj/machinery/button/door/incinerator_vent_toxmix{pixel_x = -25; pixel_y = 5},/obj/machinery/button/ignition/incinerator/toxmix{pixel_x = -25; pixel_y = -5},/obj/effect/turf_decal/stripes/corner{dir = 4},/turf/open/floor/plasteel/white,/area/science/mixing)
-"bQM" = (/obj/machinery/light,/obj/machinery/atmospherics/components/binary/valve{dir = 4; name = "port to mix"},/obj/effect/turf_decal/stripes/line{dir = 4},/turf/open/floor/plasteel/white,/area/science/mixing)
+"bQM" = (/obj/machinery/atmospherics/components/binary/valve{dir = 4; name = "port to mix"},/obj/effect/turf_decal/stripes/line{dir = 4},/turf/open/floor/plasteel/white,/area/science/mixing)
"bQN" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 8},/obj/effect/turf_decal/stripes/line{dir = 6},/turf/open/floor/plasteel,/area/science/mixing)
"bQO" = (/turf/open/floor/plating,/area/maintenance/starboard/aft)
"bQP" = (/obj/structure/disposalpipe/segment{dir = 5},/obj/structure/cable{icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/open/floor/plating,/area/maintenance/starboard/aft)
@@ -4972,9 +4968,9 @@
"bRI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/mob/living/carbon/monkey,/turf/open/floor/plasteel/white,/area/medical/virology)
"bRJ" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4},/turf/closed/wall/r_wall,/area/medical/virology)
"bRK" = (/obj/machinery/disposal/bin,/obj/structure/sign/warning/deathsposal{pixel_y = -32},/obj/structure/disposalpipe/trunk{dir = 4},/obj/effect/turf_decal/stripes/line{dir = 1},/turf/open/floor/plasteel,/area/science/xenobiology)
-"bRL" = (/obj/machinery/computer/camera_advanced/xenobio{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/turf_decal/stripes/line{dir = 1},/turf/open/floor/plasteel,/area/science/xenobiology)
-"bRM" = (/obj/structure/table/glass,/obj/item/storage/box/beakers{pixel_x = 2; pixel_y = 7},/obj/item/storage/box/syringes{pixel_y = 5},/obj/item/storage/box/monkeycubes{pixel_x = 2; pixel_y = -2},/obj/item/storage/box/monkeycubes,/obj/machinery/light,/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/turf_decal/stripes/line{dir = 1},/turf/open/floor/plasteel,/area/science/xenobiology)
-"bRN" = (/obj/structure/table/glass,/obj/item/paper_bin{pixel_y = 4},/obj/item/folder/white{pixel_x = 4; pixel_y = 4},/obj/item/pen{pixel_x = -4},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/turf_decal/stripes/line{dir = 5},/turf/open/floor/plasteel,/area/science/xenobiology)
+"bRL" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/turf_decal/stripes/line{dir = 1},/obj/structure/table/glass,/turf/open/floor/plasteel,/area/science/xenobiology)
+"bRM" = (/obj/machinery/light,/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/turf_decal/stripes/line{dir = 1},/obj/machinery/smartfridge/extract/preloaded,/turf/open/floor/plasteel,/area/science/xenobiology)
+"bRN" = (/obj/structure/table/glass,/obj/item/paper_bin{pixel_y = 4},/obj/item/folder/white{pixel_x = 4; pixel_y = 4},/obj/item/pen{pixel_x = -4},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/turf_decal/stripes/line{dir = 5},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel,/area/science/xenobiology)
"bRO" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel/white,/area/science/xenobiology)
"bRP" = (/obj/structure/disposalpipe/segment{dir = 10},/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plasteel/white,/area/science/xenobiology)
"bRQ" = (/obj/effect/turf_decal/stripes/line{dir = 9},/obj/machinery/portable_atmospherics/canister/bz,/turf/open/floor/plasteel,/area/science/xenobiology)
@@ -4986,9 +4982,8 @@
"bRW" = (/obj/machinery/door/airlock/research{name = "Testing Lab"; req_access_txt = "47"},/turf/open/floor/plasteel,/area/science/misc_lab)
"bRX" = (/turf/closed/wall,/area/science/misc_lab)
"bRY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/closed/wall/r_wall,/area/science/mixing)
-"bRZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/closed/wall/r_wall,/area/science/circuit)
-"bSa" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/closed/wall,/area/science/circuit)
-"bSb" = (/turf/closed/wall,/area/science/circuit)
+"bRZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/closed/wall/r_wall,/area/science/mixing)
+"bSb" = (/obj/effect/turf_decal/stripes/line,/turf/open/floor/plasteel/white,/area/science/mixing)
"bSc" = (/turf/closed/wall/r_wall,/area/science/circuit)
"bSd" = (/obj/effect/spawner/lootdrop/maintenance,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plating,/area/maintenance/starboard/aft)
"bSe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plating,/area/maintenance/starboard/aft)
@@ -5049,15 +5044,13 @@
"bTh" = (/turf/open/floor/plasteel,/area/science/misc_lab)
"bTi" = (/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_y = 30; receive_ore_updates = 1},/turf/open/floor/plasteel,/area/science/misc_lab)
"bTj" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 4},/obj/item/storage/toolbox/mechanical,/obj/item/clothing/ears/earmuffs,/obj/machinery/camera{c_tag = "Testing Lab North"; network = list("ss13","rd")},/turf/open/floor/plasteel,/area/science/misc_lab)
-"bTk" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 4},/turf/open/floor/engine,/area/science/misc_lab)
-"bTl" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 1},/turf/open/floor/engine,/area/science/misc_lab)
-"bTm" = (/obj/machinery/atmospherics/components/trinary/filter{dir = 4},/turf/open/floor/engine,/area/science/misc_lab)
-"bTn" = (/obj/machinery/atmospherics/components/unary/thermomachine/heater{dir = 8},/turf/open/floor/engine,/area/science/misc_lab)
-"bTo" = (/obj/structure/table/reinforced,/obj/item/integrated_circuit_printer,/obj/machinery/computer/security/telescreen/circuitry{pixel_y = 30},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plasteel/white,/area/science/circuit)
-"bTp" = (/obj/structure/table/reinforced,/obj/item/multitool,/obj/item/screwdriver,/obj/machinery/camera{c_tag = "Circuitry Lab North"; network = list("ss13","rd")},/turf/open/floor/plasteel/white,/area/science/circuit)
-"bTq" = (/obj/structure/table/reinforced,/obj/machinery/light{dir = 1; pixel_y = 16},/obj/item/stack/sheet/metal/ten,/turf/open/floor/plasteel/white,/area/science/circuit)
-"bTr" = (/obj/structure/sign/poster/official/random{pixel_y = 32},/turf/open/floor/plasteel/white,/area/science/circuit)
-"bTs" = (/obj/machinery/vending/assist,/turf/open/floor/plasteel/white,/area/science/circuit)
+"bTk" = (/obj/machinery/atmospherics/components/unary/vent_scrubber/on{dir = 1},/turf/open/floor/plasteel/white,/area/science/circuit)
+"bTl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plasteel/white,/area/science/circuit)
+"bTm" = (/obj/machinery/vending/assist,/turf/open/floor/plasteel/white,/area/science/circuit)
+"bTn" = (/obj/structure/table/reinforced,/obj/item/multitool,/obj/item/screwdriver,/obj/machinery/computer/security/telescreen/circuitry{dir = 8; pixel_x = 28},/turf/open/floor/plasteel/white,/area/science/circuit)
+"bTq" = (/obj/machinery/atmospherics/components/trinary/filter{dir = 4},/turf/open/floor/engine,/area/science/mixing)
+"bTr" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 1},/turf/open/floor/engine,/area/science/mixing)
+"bTs" = (/obj/machinery/atmospherics/components/unary/thermomachine/heater{dir = 8},/turf/open/floor/engine,/area/science/mixing)
"bTt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plating,/area/maintenance/starboard/aft)
"bTu" = (/obj/effect/spawner/structure/window,/turf/open/floor/plating,/area/maintenance/port/aft)
"bTv" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/open/floor/plating,/area/maintenance/port/aft)
@@ -5101,7 +5094,7 @@
"bUh" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/virology/glass{name = "Monkey Pen"; req_access_txt = "39"},/turf/open/floor/plasteel/white,/area/medical/virology)
"bUi" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/disposaloutlet,/turf/open/floor/engine,/area/science/xenobiology)
"bUj" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/engine,/area/science/xenobiology)
-"bUk" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "0-2"},/obj/machinery/door/poddoor/preopen{id = "xenobio3"; name = "containment blast door"},/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/engine,/area/science/xenobiology)
+"bUk" = (/obj/effect/spawner/structure/window/reinforced,/obj/structure/sign/warning/biohazard,/turf/open/floor/plating,/area/science/xenobiology)
"bUl" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced,/obj/effect/turf_decal/stripes/line{dir = 6},/turf/open/floor/plasteel,/area/science/xenobiology)
"bUm" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{icon_state = "1-4"},/obj/structure/cable{icon_state = "1-2"},/obj/effect/landmark/event_spawn,/turf/open/floor/plasteel/white,/area/science/xenobiology)
"bUn" = (/obj/structure/cable{icon_state = "4-8"},/turf/open/floor/plasteel/white,/area/science/xenobiology)
@@ -5110,15 +5103,15 @@
"bUq" = (/obj/structure/closet/l3closet/scientist{pixel_x = -2},/turf/open/floor/plasteel,/area/science/misc_lab)
"bUr" = (/obj/structure/chair/stool,/turf/open/floor/plasteel,/area/science/misc_lab)
"bUs" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 4},/obj/item/electropack,/obj/item/healthanalyzer,/obj/item/assembly/signaler,/turf/open/floor/plasteel,/area/science/misc_lab)
-"bUt" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 4},/turf/open/floor/engine,/area/science/misc_lab)
-"bUu" = (/obj/machinery/atmospherics/pipe/simple/general/visible,/obj/machinery/meter,/turf/open/floor/engine,/area/science/misc_lab)
-"bUv" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 8},/turf/open/floor/engine,/area/science/misc_lab)
-"bUw" = (/obj/machinery/atmospherics/components/unary/thermomachine/freezer{dir = 8},/turf/open/floor/engine,/area/science/misc_lab)
-"bUx" = (/obj/structure/table/reinforced,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/item/stock_parts/cell/high,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plasteel/white,/area/science/circuit)
-"bUy" = (/obj/effect/landmark/start/scientist,/obj/structure/chair/office/light{dir = 1},/turf/open/floor/plasteel/white,/area/science/circuit)
-"bUz" = (/obj/structure/table/reinforced,/obj/item/integrated_electronics/analyzer,/obj/item/integrated_electronics/debugger,/obj/item/integrated_electronics/wirer,/turf/open/floor/plasteel/white,/area/science/circuit)
-"bUA" = (/turf/open/floor/plasteel/white,/area/science/circuit)
-"bUB" = (/obj/structure/table/reinforced,/obj/item/storage/fancy/donut_box,/turf/open/floor/plasteel/white,/area/science/circuit)
+"bUt" = (/obj/structure/table/reinforced,/obj/item/integrated_circuit_printer,/turf/open/floor/plasteel/white,/area/science/circuit)
+"bUu" = (/obj/structure/chair/office/light{dir = 8},/obj/effect/landmark/start/scientist,/turf/open/floor/plasteel/white,/area/science/circuit)
+"bUv" = (/obj/structure/chair/office/light{dir = 4},/obj/effect/landmark/start/scientist,/turf/open/floor/plasteel/white,/area/science/circuit)
+"bUw" = (/obj/structure/table/reinforced,/obj/item/integrated_electronics/analyzer,/obj/item/integrated_electronics/debugger,/obj/item/integrated_electronics/wirer,/obj/item/radio/intercom{pixel_x = -30},/obj/machinery/light,/turf/open/floor/plasteel/white,/area/science/circuit)
+"bUx" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 4},/obj/machinery/light{dir = 8},/turf/open/floor/engine,/area/science/mixing)
+"bUy" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 4},/turf/open/floor/engine,/area/science/mixing)
+"bUz" = (/obj/machinery/atmospherics/pipe/simple/general/visible,/obj/machinery/meter,/turf/open/floor/engine,/area/science/mixing)
+"bUA" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 8},/turf/open/floor/engine,/area/science/mixing)
+"bUB" = (/obj/machinery/atmospherics/components/unary/thermomachine/freezer{dir = 8},/turf/open/floor/engine,/area/science/mixing)
"bUC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plating{icon_state = "platingdmg3"},/area/maintenance/starboard/aft)
"bUD" = (/obj/effect/spawner/lootdrop/crate_spawner,/turf/open/floor/plating,/area/maintenance/port/aft)
"bUE" = (/obj/effect/spawner/lootdrop/grille_or_trash,/turf/open/floor/plating,/area/maintenance/port/aft)
@@ -5158,7 +5151,7 @@
"bVm" = (/obj/structure/cable{icon_state = "4-8"},/obj/machinery/firealarm{pixel_y = 25},/turf/open/floor/plasteel/white,/area/medical/virology)
"bVn" = (/obj/machinery/power/apc/highcap/five_k{areastring = "/area/medical/virology"; dir = 1; name = "Virology APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-8"},/obj/machinery/camera{c_tag = "Virology Module"; network = list("ss13","medbay")},/turf/open/floor/plasteel/white,/area/medical/virology)
"bVo" = (/obj/machinery/vending/medical,/turf/open/floor/plasteel/white,/area/medical/virology)
-"bVp" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen"; req_access_txt = "55"},/obj/structure/cable{icon_state = "1-2"},/obj/machinery/door/poddoor/preopen{id = "xenobio3"; name = "containment blast door"},/turf/open/floor/engine,/area/science/xenobiology)
+"bVp" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 4},/obj/machinery/door/airlock/research{dir = 4; name = "Kill Chamber"; req_access_txt = "55"},/turf/open/floor/plasteel/white,/area/science/xenobiology)
"bVq" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen"; req_access_txt = "55"},/obj/effect/turf_decal/stripes/line{dir = 4},/obj/effect/turf_decal/delivery,/turf/open/floor/plasteel,/area/science/xenobiology)
"bVr" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plasteel/white,/area/science/xenobiology)
"bVs" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen"; req_access_txt = "55"},/obj/effect/turf_decal/stripes/line{dir = 8},/obj/effect/turf_decal/delivery,/turf/open/floor/plasteel,/area/science/xenobiology)
@@ -5166,13 +5159,13 @@
"bVu" = (/obj/structure/rack,/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/obj/machinery/airalarm{dir = 4; pixel_x = -23},/turf/open/floor/plasteel,/area/science/misc_lab)
"bVv" = (/obj/structure/table,/obj/machinery/cell_charger{pixel_y = 5},/obj/item/stack/cable_coil,/obj/item/multitool,/obj/item/stock_parts/cell/high/plus,/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel,/area/science/misc_lab)
"bVw" = (/turf/open/floor/engine,/area/science/misc_lab)
-"bVx" = (/obj/machinery/atmospherics/components/binary/valve,/turf/open/floor/engine,/area/science/misc_lab)
-"bVy" = (/obj/machinery/atmospherics/components/trinary/mixer/flipped{dir = 1},/turf/open/floor/engine,/area/science/misc_lab)
-"bVz" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 9},/turf/open/floor/engine,/area/science/misc_lab)
-"bVA" = (/obj/structure/table,/obj/item/assembly/igniter{pixel_x = -5; pixel_y = 3},/obj/item/assembly/igniter{pixel_x = 5; pixel_y = -4},/obj/item/assembly/igniter{pixel_x = 2; pixel_y = 6},/obj/item/assembly/igniter{pixel_x = 2; pixel_y = -1},/obj/machinery/light{dir = 4},/obj/item/assembly/timer{pixel_x = -3; pixel_y = 3},/obj/item/assembly/timer{pixel_x = -3; pixel_y = 3},/obj/item/assembly/timer{pixel_x = -3; pixel_y = 3},/obj/item/assembly/timer{pixel_x = -3; pixel_y = 3},/turf/open/floor/engine,/area/science/misc_lab)
-"bVB" = (/obj/structure/table/reinforced,/obj/machinery/light{dir = 8},/obj/machinery/cell_charger{pixel_y = 5},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plasteel/white,/area/science/circuit)
-"bVC" = (/obj/structure/table/reinforced,/obj/item/stack/sheet/glass/fifty,/obj/item/paper_bin,/obj/item/pen,/turf/open/floor/plasteel/white,/area/science/circuit)
-"bVD" = (/obj/machinery/light{dir = 4},/turf/open/floor/plasteel/white,/area/science/circuit)
+"bVx" = (/obj/structure/table/reinforced,/obj/item/paper_bin,/obj/item/pen,/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_y = -30; receive_ore_updates = 1},/turf/open/floor/plasteel/white,/area/science/circuit)
+"bVy" = (/obj/structure/table/reinforced,/obj/item/stack/sheet/metal/ten,/obj/item/stack/sheet/metal/ten,/obj/item/stack/sheet/glass/fifty,/obj/item/stack/sheet/glass/fifty,/turf/open/floor/plasteel/white,/area/science/circuit)
+"bVz" = (/obj/structure/table/reinforced,/obj/item/integrated_electronics/analyzer,/obj/item/integrated_electronics/debugger,/obj/item/integrated_electronics/wirer,/obj/item/radio/intercom{pixel_x = 30},/obj/machinery/light,/turf/open/floor/plasteel/white,/area/science/circuit)
+"bVA" = (/obj/structure/bookcase/manuals/research_and_development,/turf/open/floor/carpet,/area/science/misc_lab)
+"bVB" = (/turf/open/floor/engine,/area/science/mixing)
+"bVC" = (/obj/machinery/atmospherics/components/trinary/mixer/flipped{dir = 1},/turf/open/floor/engine,/area/science/mixing)
+"bVD" = (/obj/structure/table,/obj/item/assembly/igniter{pixel_x = -5; pixel_y = 3},/obj/item/assembly/igniter{pixel_x = 5; pixel_y = -4},/obj/item/assembly/igniter{pixel_x = 2; pixel_y = 6},/obj/item/assembly/igniter{pixel_x = 2; pixel_y = -1},/obj/machinery/light{dir = 4},/obj/item/assembly/timer{pixel_x = -3; pixel_y = 3},/obj/item/assembly/timer{pixel_x = -3; pixel_y = 3},/obj/item/assembly/timer{pixel_x = -3; pixel_y = 3},/obj/item/assembly/timer{pixel_x = -3; pixel_y = 3},/turf/open/floor/engine,/area/science/mixing)
"bVE" = (/obj/structure/cable{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/open/floor/plating,/area/maintenance/starboard/aft)
"bVF" = (/obj/machinery/door/airlock/maintenance{dir = 4; req_access_txt = "12"},/turf/open/floor/plating,/area/maintenance/port/aft)
"bVG" = (/obj/machinery/portable_atmospherics/canister/air,/turf/open/floor/plating,/area/maintenance/port/aft)
@@ -5205,8 +5198,8 @@
"bWh" = (/obj/machinery/holopad,/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/turf/open/floor/plasteel/white,/area/medical/virology)
"bWi" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 1},/turf/open/floor/plasteel/white,/area/medical/virology)
"bWj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/open/floor/plasteel/white,/area/medical/virology)
-"bWk" = (/obj/structure/cable{icon_state = "0-4"},/obj/structure/cable,/obj/machinery/door/poddoor/preopen{id = "xenobio3"; name = "containment blast door"},/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/engine,/area/science/xenobiology)
-"bWl" = (/obj/structure/table/reinforced,/obj/machinery/button/door{id = "xenobio3"; name = "Containment Blast Doors"; pixel_y = 4; req_access_txt = "55"},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "4-8"},/obj/effect/turf_decal/stripes/line{dir = 5},/turf/open/floor/plasteel,/area/science/xenobiology)
+"bWk" = (/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/plating,/area/science/xenobiology)
+"bWl" = (/obj/structure/table,/obj/item/folder/white,/obj/item/pen,/obj/effect/turf_decal/stripes/line{dir = 8},/turf/open/floor/plasteel/white,/area/science/xenobiology)
"bWm" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{icon_state = "1-8"},/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plasteel/white,/area/science/xenobiology)
"bWn" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/obj/effect/turf_decal/stripes/line{dir = 9},/turf/open/floor/plasteel,/area/science/xenobiology)
"bWo" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable,/obj/machinery/door/poddoor/preopen{id = "xenobio8"; name = "containment blast door"},/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/engine,/area/science/xenobiology)
@@ -5214,10 +5207,10 @@
"bWq" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 4},/obj/machinery/light{dir = 8},/turf/open/floor/plasteel,/area/science/misc_lab)
"bWr" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 10},/turf/open/floor/plasteel,/area/science/misc_lab)
"bWs" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table,/obj/item/hand_labeler,/obj/item/clothing/glasses/science,/obj/item/clothing/glasses/science,/turf/open/floor/plasteel,/area/science/misc_lab)
-"bWt" = (/obj/machinery/atmospherics/pipe/manifold/general/visible,/turf/open/floor/engine,/area/science/misc_lab)
-"bWu" = (/obj/structure/table,/obj/item/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/grenade/chem_grenade,/obj/item/grenade/chem_grenade,/turf/open/floor/engine,/area/science/misc_lab)
-"bWv" = (/obj/structure/extinguisher_cabinet{pixel_x = -27},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plasteel/white,/area/science/circuit)
-"bWw" = (/obj/machinery/atmospherics/components/unary/vent_pump/on,/turf/open/floor/plasteel/white,/area/science/circuit)
+"bWt" = (/obj/machinery/atmospherics/components/binary/valve,/turf/open/floor/engine,/area/science/mixing)
+"bWu" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 9},/turf/open/floor/engine,/area/science/mixing)
+"bWv" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 4},/turf/open/floor/engine,/area/science/mixing)
+"bWw" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 9},/obj/machinery/camera{c_tag = "Toxins Pipe Lab"; dir = 1; network = list("ss13","rd")},/turf/open/floor/engine,/area/science/mixing)
"bWx" = (/obj/machinery/atmospherics/components/unary/outlet_injector/on,/turf/open/floor/plating/airless,/area/maintenance/port/aft)
"bWy" = (/obj/structure/cable{icon_state = "0-4"},/turf/open/floor/plating,/area/maintenance/port/aft)
"bWz" = (/obj/structure/cable{icon_state = "4-8"},/obj/structure/cable{icon_state = "2-4"},/turf/open/floor/plating,/area/maintenance/port/aft)
@@ -5260,18 +5253,14 @@
"bXk" = (/obj/effect/spawner/structure/window,/turf/open/floor/plating,/area/medical/virology)
"bXl" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/virology/glass{name = "Isolation B"; req_access_txt = "39"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plasteel/white,/area/medical/virology)
"bXm" = (/obj/structure/sign/warning/electricshock,/turf/closed/wall,/area/science/xenobiology)
-"bXn" = (/obj/machinery/light{dir = 8},/turf/open/floor/plasteel/white,/area/science/xenobiology)
+"bXn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/computer/camera_advanced/xenobio{dir = 4},/turf/open/floor/plasteel/white,/area/science/xenobiology)
"bXo" = (/obj/structure/sink{dir = 4; pixel_x = 11},/turf/open/floor/plasteel/white,/area/science/xenobiology)
"bXp" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 4},/turf/open/floor/plasteel,/area/science/misc_lab)
"bXq" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 4},/obj/machinery/meter,/turf/open/floor/plasteel,/area/science/misc_lab)
"bXr" = (/obj/effect/turf_decal/stripes/corner{dir = 8},/turf/open/floor/plasteel,/area/science/misc_lab)
"bXs" = (/obj/effect/turf_decal/stripes/line{dir = 1},/turf/open/floor/plasteel,/area/science/misc_lab)
-"bXt" = (/obj/structure/table,/obj/item/stack/sheet/glass/fifty{pixel_x = 3; pixel_y = 3},/obj/item/stack/sheet/metal/fifty,/obj/item/stack/sheet/mineral/plasma,/obj/effect/turf_decal/stripes/line{dir = 1},/turf/open/floor/plasteel,/area/science/misc_lab)
-"bXu" = (/obj/machinery/light_switch{pixel_x = -20},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plasteel/white,/area/science/circuit)
-"bXv" = (/obj/effect/turf_decal/stripes/line{dir = 9},/turf/open/floor/plasteel,/area/science/circuit)
-"bXw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/turf_decal/stripes/line{dir = 1},/turf/open/floor/plasteel,/area/science/circuit)
-"bXx" = (/obj/effect/turf_decal/stripes/line{dir = 1},/turf/open/floor/plasteel,/area/science/circuit)
-"bXy" = (/obj/machinery/airalarm{dir = 8; pixel_x = 24},/obj/effect/turf_decal/stripes/line{dir = 5},/obj/structure/target_stake,/turf/open/floor/plasteel,/area/science/circuit)
+"bXt" = (/obj/structure/table,/obj/item/stack/sheet/glass/fifty{pixel_x = 3; pixel_y = 3},/obj/item/stack/sheet/metal/fifty,/obj/item/stack/sheet/mineral/plasma,/obj/effect/turf_decal/stripes/line{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/open/floor/plasteel,/area/science/misc_lab)
+"bXy" = (/turf/closed/wall,/area/science/circuit)
"bXz" = (/obj/structure/disposaloutlet{dir = 8},/obj/structure/disposalpipe/trunk{dir = 4},/turf/open/floor/plating/airless,/area/space/nearstation)
"bXA" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plating/airless,/area/space/nearstation)
"bXB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{dir = 5},/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plating/airless,/area/maintenance/port/aft)
@@ -5312,7 +5301,7 @@
"bYk" = (/obj/effect/spawner/structure/window,/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/turf/open/floor/plating,/area/medical/virology)
"bYl" = (/obj/machinery/atmospherics/components/unary/vent_pump/on{dir = 8},/turf/open/floor/plasteel/white,/area/medical/virology)
"bYm" = (/obj/machinery/atmospherics/components/unary/vent_pump/on{dir = 1},/turf/open/floor/plasteel/white,/area/medical/virology)
-"bYn" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "0-2"},/obj/machinery/door/poddoor/preopen{id = "xenobio2"; name = "containment blast door"},/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/engine,/area/science/xenobiology)
+"bYn" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "0-2"},/obj/machinery/door/poddoor/preopen{id = "xenobio3"; name = "containment blast door"},/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/engine,/area/science/xenobiology)
"bYo" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{icon_state = "1-4"},/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plasteel/white,/area/science/xenobiology)
"bYp" = (/obj/structure/window/reinforced,/obj/structure/table/reinforced,/obj/structure/cable{icon_state = "4-8"},/obj/machinery/button/door{id = "xenobio7"; name = "Containment Blast Doors"; pixel_y = 4; req_access_txt = "55"},/obj/effect/turf_decal/stripes/line{dir = 10},/turf/open/floor/plasteel,/area/science/xenobiology)
"bYq" = (/obj/structure/cable{icon_state = "0-2"},/obj/structure/cable{icon_state = "0-8"},/obj/machinery/door/poddoor/preopen{id = "xenobio7"; name = "containment blast door"},/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/engine,/area/science/xenobiology)
@@ -5321,13 +5310,13 @@
"bYt" = (/obj/structure/chair/office/light,/obj/effect/landmark/start/scientist,/turf/open/floor/plasteel,/area/science/misc_lab)
"bYu" = (/obj/machinery/atmospherics/components/unary/vent_scrubber/on,/turf/open/floor/plasteel,/area/science/misc_lab)
"bYv" = (/obj/structure/disposalpipe/segment{dir = 6},/obj/machinery/atmospherics/components/unary/vent_pump/on,/turf/open/floor/plasteel,/area/science/misc_lab)
-"bYw" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/turf/open/floor/plasteel,/area/science/misc_lab)
-"bYx" = (/obj/structure/sign/nanotrasen,/turf/closed/wall,/area/science/circuit)
-"bYy" = (/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plasteel/white,/area/science/circuit)
-"bYz" = (/obj/effect/turf_decal/stripes/line{dir = 8},/turf/open/floor/plasteel,/area/science/circuit)
-"bYA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/landmark/event_spawn,/turf/open/floor/plasteel,/area/science/circuit)
-"bYB" = (/obj/structure/cable{icon_state = "2-4"},/turf/open/floor/plasteel,/area/science/circuit)
-"bYC" = (/obj/machinery/power/apc{areastring = "/area/science/circuit"; name = "Circuitry Lab APC"; pixel_x = 30},/obj/effect/turf_decal/stripes/line{dir = 4},/obj/structure/cable{icon_state = "0-8"},/turf/open/floor/plasteel,/area/science/circuit)
+"bYw" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plasteel,/area/science/misc_lab)
+"bYx" = (/obj/structure/sign/nanotrasen,/turf/closed/wall/r_wall,/area/science/explab)
+"bYy" = (/obj/structure/table,/obj/item/paper_bin{pixel_y = 6},/obj/machinery/light{dir = 1; pixel_y = 16},/turf/open/floor/plasteel/white,/area/science/explab)
+"bYz" = (/obj/structure/table,/obj/item/pen,/obj/item/hand_labeler,/obj/item/stack/packageWrap,/obj/machinery/firealarm{pixel_y = 24},/turf/open/floor/plasteel/white,/area/science/explab)
+"bYA" = (/obj/structure/table,/obj/item/folder/white,/obj/item/folder/white,/obj/machinery/airalarm{pixel_y = 23},/obj/item/radio/off,/obj/machinery/camera{c_tag = "Experimentor Lab"; network = list("ss13","rd")},/turf/open/floor/plasteel/white,/area/science/explab)
+"bYB" = (/obj/structure/closet/l3closet/scientist,/obj/structure/cable{icon_state = "0-2"},/obj/machinery/power/apc{areastring = "/area/science/explab"; dir = 1; name = "Experimentation Lab APC"; pixel_y = 28},/turf/open/floor/plasteel/white,/area/science/explab)
+"bYC" = (/obj/structure/closet/emcloset,/obj/machinery/light{dir = 1; pixel_y = 16},/turf/open/floor/plasteel/white,/area/science/explab)
"bYD" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,/turf/open/floor/plating,/area/maintenance/port/aft)
"bYE" = (/turf/open/floor/plasteel,/area/maintenance/port/aft)
"bYF" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 5},/turf/open/floor/plating,/area/maintenance/port/aft)
@@ -5373,7 +5362,7 @@
"bZt" = (/obj/structure/table,/turf/open/floor/plasteel/white,/area/medical/virology)
"bZu" = (/obj/machinery/light{dir = 4},/turf/open/floor/plasteel/white,/area/medical/virology)
"bZv" = (/mob/living/simple_animal/slime,/turf/open/floor/engine,/area/science/xenobiology)
-"bZw" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen"; req_access_txt = "55"},/obj/structure/cable{icon_state = "1-2"},/obj/machinery/door/poddoor/preopen{id = "xenobio2"; name = "containment blast door"},/turf/open/floor/engine,/area/science/xenobiology)
+"bZw" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen"; req_access_txt = "55"},/obj/structure/cable{icon_state = "1-2"},/obj/machinery/door/poddoor/preopen{id = "xenobio3"; name = "containment blast door"},/turf/open/floor/engine,/area/science/xenobiology)
"bZx" = (/obj/structure/cable{icon_state = "1-2"},/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "xenobio7"; name = "containment blast door"},/turf/open/floor/engine,/area/science/xenobiology)
"bZy" = (/obj/structure/filingcabinet/chestdrawer,/turf/open/floor/plasteel,/area/science/misc_lab)
"bZz" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/general/visible,/obj/machinery/button/ignition{id = "testigniter"; pixel_x = -6; pixel_y = 2},/obj/machinery/button/door{id = "testlab"; name = "Test Chamber Blast Doors"; pixel_x = 4; pixel_y = 2; req_access_txt = "55"},/turf/open/floor/plasteel,/area/science/misc_lab)
@@ -5382,13 +5371,13 @@
"bZC" = (/obj/structure/rack,/obj/item/wrench,/obj/item/crowbar,/obj/machinery/computer/security/telescreen{name = "Test Chamber Monitor"; network = list("test"); pixel_y = -30},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,/turf/open/floor/plasteel,/area/science/misc_lab)
"bZD" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel,/area/science/misc_lab)
"bZE" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel,/area/science/misc_lab)
-"bZF" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel,/area/science/misc_lab)
-"bZG" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/effect/turf_decal/stripes/line{dir = 9},/turf/open/floor/plasteel/white,/area/science/misc_lab)
-"bZH" = (/obj/effect/spawner/structure/window,/turf/open/floor/plating,/area/science/circuit)
-"bZI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plasteel/white,/area/science/circuit)
-"bZJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plasteel,/area/science/circuit)
-"bZK" = (/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plasteel,/area/science/circuit)
-"bZL" = (/obj/machinery/light{dir = 4},/obj/effect/turf_decal/stripes/line{dir = 4},/turf/open/floor/plasteel,/area/science/circuit)
+"bZF" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{icon_state = "2-4"},/turf/open/floor/plasteel,/area/science/misc_lab)
+"bZG" = (/obj/effect/turf_decal/stripes/line{dir = 9},/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden,/turf/open/floor/plasteel/white,/area/science/misc_lab)
+"bZH" = (/obj/machinery/door/airlock/research/glass{dir = 4; name = "Circuitry Lab"; req_access_txt = "47"},/obj/machinery/door/firedoor,/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plating,/area/science/explab)
+"bZI" = (/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel/white,/area/science/explab)
+"bZJ" = (/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/components/unary/vent_pump/on,/turf/open/floor/plasteel/white,/area/science/explab)
+"bZK" = (/obj/structure/cable{icon_state = "1-8"},/obj/machinery/holopad,/turf/open/floor/plasteel/white,/area/science/explab)
+"bZL" = (/obj/structure/extinguisher_cabinet{pixel_x = 28},/turf/open/floor/plasteel/white,/area/science/explab)
"bZM" = (/obj/effect/mapping_helpers/airlock/cyclelink_helper{dir = 4},/obj/machinery/door/airlock/external{name = "External Access"; req_access_txt = "13"},/turf/open/floor/plating,/area/maintenance/port/aft)
"bZN" = (/obj/effect/mapping_helpers/airlock/cyclelink_helper{dir = 8},/obj/machinery/door/airlock/external{name = "External Access"; req_access_txt = "13"},/turf/open/floor/plating,/area/maintenance/port/aft)
"bZO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,/turf/open/floor/plasteel,/area/maintenance/port/aft)
@@ -5437,8 +5426,8 @@
"caF" = (/obj/machinery/disposal/bin,/obj/structure/sign/warning/deathsposal{pixel_y = -32},/obj/structure/disposalpipe/trunk{dir = 8},/obj/effect/turf_decal/tile/green,/obj/effect/turf_decal/tile/green{dir = 4},/turf/open/floor/plasteel/white,/area/medical/virology)
"caG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/spawner/structure/window,/turf/open/floor/plating,/area/medical/virology)
"caH" = (/obj/structure/closet/secure_closet/personal/patient,/turf/open/floor/plasteel/white,/area/medical/virology)
-"caI" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable,/obj/structure/cable{icon_state = "0-4"},/obj/machinery/door/poddoor/preopen{id = "xenobio2"; name = "containment blast door"},/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/engine,/area/science/xenobiology)
-"caJ" = (/obj/structure/table/reinforced,/obj/machinery/button/door{id = "xenobio2"; name = "Containment Blast Doors"; pixel_y = 4; req_access_txt = "55"},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "4-8"},/obj/effect/turf_decal/stripes/line{dir = 5},/turf/open/floor/plasteel,/area/science/xenobiology)
+"caI" = (/obj/structure/cable{icon_state = "0-4"},/obj/structure/cable,/obj/machinery/door/poddoor/preopen{id = "xenobio3"; name = "containment blast door"},/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/engine,/area/science/xenobiology)
+"caJ" = (/obj/structure/table/reinforced,/obj/machinery/button/door{id = "xenobio3"; name = "Containment Blast Doors"; pixel_y = 4; req_access_txt = "55"},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "4-8"},/obj/effect/turf_decal/stripes/line{dir = 5},/turf/open/floor/plasteel,/area/science/xenobiology)
"caK" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable,/obj/machinery/door/poddoor/preopen{id = "xenobio7"; name = "containment blast door"},/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/engine,/area/science/xenobiology)
"caL" = (/turf/closed/wall/r_wall,/area/science/misc_lab)
"caM" = (/obj/machinery/door/poddoor/preopen{id = "testlab"; name = "test chamber blast door"},/obj/machinery/atmospherics/pipe/simple/general/visible,/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/engine,/area/science/misc_lab)
@@ -5446,14 +5435,13 @@
"caO" = (/obj/machinery/door/poddoor/preopen{id = "testlab"; name = "test chamber blast door"},/obj/effect/spawner/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/engine,/area/science/misc_lab)
"caP" = (/obj/structure/reagent_dispensers/fueltank,/obj/effect/turf_decal/bot,/turf/open/floor/plasteel,/area/science/misc_lab)
"caQ" = (/obj/structure/reagent_dispensers/watertank,/obj/structure/window/reinforced{dir = 4},/obj/effect/turf_decal/bot,/turf/open/floor/plasteel,/area/science/misc_lab)
-"caR" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/obj/structure/disposalpipe/junction/flip,/obj/structure/cable{icon_state = "2-4"},/turf/open/floor/plasteel,/area/science/misc_lab)
-"caS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "4-8"},/obj/effect/turf_decal/stripes/line{dir = 8},/turf/open/floor/plasteel/white,/area/science/misc_lab)
-"caT" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research/glass{dir = 4; name = "Circuitry Lab"; req_access_txt = "47"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "4-8"},/turf/open/floor/plasteel/white,/area/science/circuit)
-"caU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plasteel/white,/area/science/circuit)
-"caV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/turf_decal/stripes/line{dir = 10},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "4-8"},/turf/open/floor/plasteel,/area/science/circuit)
-"caW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/effect/turf_decal/stripes/line,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "4-8"},/turf/open/floor/plasteel,/area/science/circuit)
-"caX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/turf_decal/stripes/line,/obj/structure/cable{icon_state = "1-8"},/turf/open/floor/plasteel,/area/science/circuit)
-"caY" = (/obj/structure/disposalpipe/segment{dir = 10},/obj/effect/turf_decal/stripes/line{dir = 6},/obj/machinery/camera{c_tag = "Circuitry Lab"; dir = 8; network = list("ss13","rd")},/turf/open/floor/plasteel,/area/science/circuit)
+"caR" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/obj/structure/cable{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel,/area/science/misc_lab)
+"caS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/effect/turf_decal/stripes/line{dir = 10},/turf/open/floor/plasteel/white,/area/science/misc_lab)
+"caT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/plating,/area/science/explab)
+"caU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/closet/radiation,/turf/open/floor/plasteel/white,/area/science/explab)
+"caV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/table,/obj/item/clipboard,/obj/item/book/manual/wiki/experimentor,/turf/open/floor/plasteel/white,/area/science/explab)
+"caW" = (/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 28; receive_ore_updates = 1},/obj/machinery/computer/rdconsole/experiment{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/open/floor/plasteel/white,/area/science/explab)
+"caY" = (/obj/machinery/button/door{id = "telelab"; name = "Test Chamber Blast Doors"; pixel_x = 25; req_access_txt = "47"},/obj/effect/turf_decal/stripes/line,/turf/open/floor/plasteel/white,/area/science/explab)
"caZ" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plating,/area/maintenance/starboard/aft)
"cba" = (/obj/structure/closet/crate,/obj/item/clothing/under/color/lightpurple,/obj/item/stack/spacecash/c200,/turf/open/floor/plating,/area/maintenance/starboard/aft)
"cbb" = (/turf/open/floor/plating,/area/space)
@@ -5498,17 +5486,16 @@
"cbO" = (/obj/structure/closet/l3closet/virology,/obj/effect/turf_decal/tile/green,/obj/effect/turf_decal/tile/green{dir = 8},/turf/open/floor/plasteel/white,/area/medical/virology)
"cbP" = (/obj/structure/closet/secure_closet/medical1,/obj/structure/disposalpipe/segment,/obj/effect/turf_decal/tile/green,/obj/effect/turf_decal/tile/green{dir = 8},/turf/open/floor/plasteel/white,/area/medical/virology)
"cbQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/closed/wall/r_wall,/area/medical/virology)
-"cbR" = (/obj/structure/sink{dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/camera{c_tag = "Xenobiology South"; dir = 4; network = list("ss13","rd")},/turf/open/floor/plasteel/white,/area/science/xenobiology)
+"cbR" = (/obj/machinery/light{dir = 8},/turf/open/floor/plasteel/white,/area/science/xenobiology)
"cbS" = (/obj/machinery/light{dir = 4},/turf/open/floor/plasteel/white,/area/science/xenobiology)
"cbT" = (/obj/machinery/atmospherics/components/unary/outlet_injector/on{dir = 1},/turf/open/floor/engine,/area/science/misc_lab)
"cbU" = (/obj/machinery/atmospherics/components/unary/vent_scrubber/on{dir = 1},/turf/open/floor/engine,/area/science/misc_lab)
"cbV" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plasteel,/area/science/misc_lab)
-"cbW" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8},/obj/effect/turf_decal/stripes/line{dir = 10},/turf/open/floor/plasteel/white,/area/science/misc_lab)
-"cbX" = (/obj/effect/spawner/structure/window,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plating,/area/science/circuit)
-"cbY" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,/turf/open/floor/plasteel/white,/area/science/circuit)
-"cbZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/open/floor/plasteel/white,/area/science/circuit)
-"cca" = (/obj/machinery/atmospherics/components/unary/vent_scrubber/on{dir = 8},/turf/open/floor/plasteel/white,/area/science/circuit)
-"ccb" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal/bin,/turf/open/floor/plasteel/white,/area/science/circuit)
+"cbW" = (/obj/machinery/atmospherics/pipe/manifold/general/visible,/turf/open/floor/engine,/area/science/mixing)
+"cbX" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/effect/turf_decal/bot,/obj/machinery/light/small,/turf/open/floor/engine,/area/science/storage)
+"cbZ" = (/obj/machinery/door/poddoor/preopen{id = "telelab"; name = "test chamber blast door"},/obj/machinery/door/firedoor/heavy,/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/engine,/area/science/explab)
+"cca" = (/obj/machinery/door/poddoor/preopen{id = "telelab"; name = "test chamber blast door"},/obj/effect/spawner/structure/window/reinforced,/obj/machinery/door/firedoor/heavy,/turf/open/floor/engine,/area/science/explab)
+"ccb" = (/obj/machinery/door/poddoor/preopen{id = "telelab"; name = "test chamber blast door"},/obj/machinery/door/firedoor/heavy,/turf/open/floor/engine,/area/science/explab)
"ccc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/open/floor/plating,/area/maintenance/starboard/aft)
"ccd" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plating,/area/maintenance/starboard/aft)
"cce" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 4},/obj/machinery/portable_atmospherics/canister,/turf/open/floor/plating,/area/maintenance/port/aft)
@@ -5559,15 +5546,13 @@
"ccX" = (/obj/machinery/atmospherics/components/unary/tank/air{dir = 8},/obj/effect/turf_decal/stripes/line{dir = 5},/turf/open/floor/plating,/area/maintenance/aft)
"ccY" = (/obj/structure/closet/emcloset,/obj/effect/decal/cleanable/cobweb,/turf/open/floor/plating,/area/maintenance/aft)
"ccZ" = (/obj/structure/rack,/obj/machinery/light/small{dir = 1},/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plating,/area/maintenance/aft)
-"cda" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "0-2"},/obj/machinery/door/poddoor/preopen{id = "xenobio1"; name = "containment blast door"},/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/engine,/area/science/xenobiology)
+"cda" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "0-2"},/obj/machinery/door/poddoor/preopen{id = "xenobio2"; name = "containment blast door"},/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/engine,/area/science/xenobiology)
"cdb" = (/obj/structure/window/reinforced,/obj/structure/table/reinforced,/obj/machinery/button/door{id = "xenobio6"; name = "Containment Blast Doors"; pixel_y = 4; req_access_txt = "55"},/obj/structure/cable{icon_state = "4-8"},/obj/effect/turf_decal/stripes/line{dir = 10},/turf/open/floor/plasteel,/area/science/xenobiology)
"cdc" = (/obj/structure/cable{icon_state = "0-2"},/obj/structure/cable{icon_state = "0-8"},/obj/machinery/door/poddoor/preopen{id = "xenobio6"; name = "containment blast door"},/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/engine,/area/science/xenobiology)
"cdd" = (/obj/item/radio/intercom{pixel_x = -25},/turf/open/floor/engine,/area/science/misc_lab)
"cde" = (/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/plating,/area/science/misc_lab)
"cdf" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/turf_decal/stripes/corner{dir = 1},/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plasteel,/area/science/misc_lab)
"cdg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plasteel,/area/science/misc_lab)
-"cdh" = (/obj/structure/table/reinforced,/obj/machinery/light{dir = 8},/turf/open/floor/plasteel/white,/area/science/circuit)
-"cdi" = (/obj/structure/table/reinforced,/obj/item/paper_bin,/obj/item/pen,/turf/open/floor/plasteel/white,/area/science/circuit)
"cdj" = (/obj/structure/table,/obj/item/flashlight/lamp,/turf/open/floor/plating,/area/maintenance/starboard/aft)
"cdk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plating{icon_state = "platingdmg3"},/area/maintenance/starboard/aft)
"cdl" = (/obj/machinery/door/airlock/maintenance/abandoned{name = "Incinerator Access"; req_access_txt = "12"},/obj/structure/barricade/wooden{name = "wooden barricade (CLOSED)"},/turf/open/floor/plating,/area/maintenance/port/aft)
@@ -5614,7 +5599,7 @@
"cec" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 8},/obj/machinery/portable_atmospherics/canister/air,/obj/effect/turf_decal/stripes/line{dir = 6},/turf/open/floor/plating,/area/maintenance/aft)
"ced" = (/obj/structure/disposalpipe/segment{dir = 6},/obj/structure/cable{icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/open/floor/plating,/area/maintenance/aft)
"cee" = (/obj/structure/disposalpipe/segment{dir = 9},/obj/structure/cable{icon_state = "1-8"},/obj/structure/cable{icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plating,/area/maintenance/aft)
-"cef" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen"; req_access_txt = "55"},/obj/structure/cable{icon_state = "1-2"},/obj/machinery/door/poddoor/preopen{id = "xenobio1"; name = "containment blast door"},/turf/open/floor/engine,/area/science/xenobiology)
+"cef" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen"; req_access_txt = "55"},/obj/structure/cable{icon_state = "1-2"},/obj/machinery/door/poddoor/preopen{id = "xenobio2"; name = "containment blast door"},/turf/open/floor/engine,/area/science/xenobiology)
"ceg" = (/obj/structure/cable{icon_state = "1-2"},/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "xenobio6"; name = "containment blast door"},/turf/open/floor/engine,/area/science/xenobiology)
"ceh" = (/obj/machinery/sparker{id = "testigniter"; pixel_x = -25},/turf/open/floor/engine,/area/science/misc_lab)
"cei" = (/obj/item/beacon,/turf/open/floor/engine,/area/science/misc_lab)
@@ -5624,9 +5609,7 @@
"cem" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/turf_decal/delivery,/turf/open/floor/plasteel,/area/science/misc_lab)
"cen" = (/obj/effect/mapping_helpers/airlock/cyclelink_helper{dir = 8},/obj/machinery/door/airlock/research/glass{dir = 4; name = "Test Chamber"; req_access_txt = "47"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/turf_decal/delivery,/turf/open/floor/plasteel,/area/science/misc_lab)
"ceo" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/obj/effect/turf_decal/stripes/line{dir = 8},/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plasteel,/area/science/misc_lab)
-"cep" = (/obj/structure/table/reinforced,/obj/item/radio/intercom{pixel_x = -30},/obj/item/stock_parts/cell/high,/obj/item/stock_parts/cell/high,/turf/open/floor/plasteel/white,/area/science/circuit)
-"ceq" = (/obj/structure/chair/office/light,/turf/open/floor/plasteel/white,/area/science/circuit)
-"cer" = (/obj/structure/sign/poster/official/random{pixel_x = 32},/turf/open/floor/plasteel/white,/area/science/circuit)
+"ceq" = (/obj/machinery/rnd/experimentor,/turf/open/floor/engine,/area/science/explab)
"ces" = (/obj/structure/cable{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/open/floor/plating{icon_state = "platingdmg3"},/area/maintenance/starboard/aft)
"cet" = (/obj/structure/table,/obj/item/paper_bin{pixel_x = -2; pixel_y = 5},/turf/open/floor/plating,/area/maintenance/starboard/aft)
"ceu" = (/obj/structure/table,/obj/item/folder/white,/obj/item/folder/white,/obj/item/pen,/turf/open/floor/plating,/area/maintenance/starboard/aft)
@@ -5670,17 +5653,15 @@
"cfg" = (/obj/machinery/door/airlock/atmos/abandoned{name = "Atmospherics Maintenance"; req_access_txt = "12;24"},/turf/open/floor/plating,/area/maintenance/aft)
"cfh" = (/obj/structure/disposalpipe/segment{dir = 6},/turf/open/floor/plating,/area/maintenance/aft)
"cfi" = (/obj/structure/disposalpipe/segment{dir = 10},/obj/structure/cable{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plating,/area/maintenance/aft)
-"cfj" = (/obj/structure/cable,/obj/structure/cable{icon_state = "0-4"},/obj/machinery/door/poddoor/preopen{id = "xenobio1"; name = "containment blast door"},/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/engine,/area/science/xenobiology)
-"cfk" = (/obj/structure/table/reinforced,/obj/machinery/button/door{id = "xenobio1"; name = "Containment Blast Doors"; pixel_y = 4; req_access_txt = "55"},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "4-8"},/obj/machinery/light,/obj/effect/turf_decal/stripes/line{dir = 5},/turf/open/floor/plasteel,/area/science/xenobiology)
-"cfl" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{icon_state = "1-8"},/turf/open/floor/plasteel/white,/area/science/xenobiology)
+"cfj" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable,/obj/structure/cable{icon_state = "0-4"},/obj/machinery/door/poddoor/preopen{id = "xenobio2"; name = "containment blast door"},/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/engine,/area/science/xenobiology)
+"cfk" = (/obj/structure/table/reinforced,/obj/machinery/button/door{id = "xenobio2"; name = "Containment Blast Doors"; pixel_y = 4; req_access_txt = "55"},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "4-8"},/obj/effect/turf_decal/stripes/line{dir = 5},/turf/open/floor/plasteel,/area/science/xenobiology)
+"cfl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/table/glass,/obj/item/storage/box/syringes{pixel_y = 5},/obj/item/storage/box/beakers{pixel_x = 2; pixel_y = 7},/obj/item/storage/box/monkeycubes,/obj/item/storage/box/monkeycubes{pixel_x = 2; pixel_y = -2},/turf/open/floor/plasteel/white,/area/science/xenobiology)
"cfm" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable,/obj/machinery/door/poddoor/preopen{id = "xenobio6"; name = "containment blast door"},/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/engine,/area/science/xenobiology)
"cfn" = (/obj/machinery/camera{c_tag = "Testing Chamber"; dir = 1; network = list("test","rd")},/obj/machinery/light,/turf/open/floor/engine,/area/science/misc_lab)
"cfo" = (/obj/structure/cable{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/turf_decal/stripes/corner{dir = 4},/obj/structure/cable{icon_state = "2-4"},/turf/open/floor/plasteel,/area/science/misc_lab)
"cfp" = (/obj/machinery/power/apc{areastring = "/area/science/misc_lab"; dir = 4; name = "Testing Lab APC"; pixel_x = 26},/obj/structure/cable{icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plasteel,/area/science/misc_lab)
-"cfq" = (/obj/structure/table/reinforced,/obj/item/integrated_circuit_printer,/obj/machinery/computer/security/telescreen/circuitry{dir = 1; pixel_y = -30},/turf/open/floor/plasteel/white,/area/science/circuit)
-"cfr" = (/obj/structure/table/reinforced,/obj/item/multitool,/obj/item/screwdriver,/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_y = -30; receive_ore_updates = 1},/turf/open/floor/plasteel/white,/area/science/circuit)
-"cfs" = (/obj/structure/table/reinforced,/obj/machinery/light,/obj/item/stack/sheet/metal/ten,/turf/open/floor/plasteel/white,/area/science/circuit)
-"cft" = (/obj/structure/closet/crate,/obj/item/target/alien,/obj/item/target/alien,/obj/item/target/clown,/obj/item/target/clown,/obj/item/target/syndicate,/obj/item/target/syndicate,/obj/item/gun/energy/laser/practice,/obj/item/gun/energy/laser/practice,/turf/open/floor/plasteel/white,/area/science/circuit)
+"cfs" = (/obj/machinery/light,/obj/machinery/camera{c_tag = "Experimentor Lab Chamber"; dir = 1; network = list("ss13","rd")},/turf/open/floor/engine,/area/science/explab)
+"cft" = (/turf/open/floor/engine,/area/science/explab)
"cfu" = (/obj/structure/cable{icon_state = "0-4"},/obj/machinery/power/solar{id = "portsolar"; name = "Port Solar Array"},/turf/open/floor/plasteel/airless/solarpanel,/area/solar/port/aft)
"cfv" = (/obj/structure/cable{icon_state = "2-8"},/obj/structure/cable{icon_state = "2-4"},/obj/structure/lattice/catwalk,/turf/open/space,/area/solar/port/aft)
"cfw" = (/obj/structure/cable{icon_state = "0-8"},/obj/machinery/power/solar{id = "portsolar"; name = "Port Solar Array"},/turf/open/floor/plasteel/airless/solarpanel,/area/solar/port/aft)
@@ -5731,9 +5712,9 @@
"cgp" = (/obj/structure/disposalpipe/segment{dir = 9},/obj/structure/cable{icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/open/floor/plating,/area/maintenance/aft)
"cgq" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plating,/area/maintenance/aft)
"cgr" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plating,/area/maintenance/starboard/aft)
-"cgs" = (/obj/structure/sign/poster/official/safety_internals{pixel_x = -32},/turf/open/floor/plasteel/white,/area/science/xenobiology)
-"cgt" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel/white,/area/science/xenobiology)
-"cgu" = (/obj/structure/rack,/obj/item/clothing/shoes/winterboots,/obj/item/clothing/suit/hooded/wintercoat,/obj/effect/turf_decal/stripes/line{dir = 9},/turf/open/floor/plasteel,/area/science/xenobiology)
+"cgs" = (/obj/structure/sink{dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/camera{c_tag = "Xenobiology South"; dir = 4; network = list("ss13","rd")},/turf/open/floor/plasteel/white,/area/science/xenobiology)
+"cgt" = (/obj/structure/chair/sofa/corner{dir = 1},/obj/machinery/light{dir = 1; pixel_y = 16},/turf/open/floor/carpet,/area/science/misc_lab)
+"cgu" = (/obj/structure/chair/sofa/left,/turf/open/floor/carpet,/area/science/misc_lab)
"cgv" = (/obj/machinery/portable_atmospherics/pump,/obj/effect/turf_decal/bot,/turf/open/floor/plasteel,/area/science/misc_lab)
"cgw" = (/obj/structure/cable{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plasteel,/area/science/misc_lab)
"cgx" = (/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plasteel,/area/science/misc_lab)
@@ -5789,12 +5770,11 @@
"chv" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plating,/area/maintenance/aft)
"chw" = (/obj/structure/disposalpipe/segment{dir = 9},/turf/open/floor/plating,/area/maintenance/aft)
"chx" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plating,/area/maintenance/starboard/aft)
-"chy" = (/obj/machinery/atmospherics/components/unary/vent_pump/on{external_pressure_bound = 140; name = "killroom vent"; pressure_checks = 0},/obj/machinery/camera{c_tag = "Xenobiology Kill Room"; dir = 4; network = list("ss13","rd")},/turf/open/floor/circuit/telecomms,/area/science/xenobiology)
-"chz" = (/turf/open/floor/circuit/telecomms,/area/science/xenobiology)
-"chA" = (/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{external_pressure_bound = 120; name = "killroom vent"},/turf/open/floor/circuit/telecomms,/area/science/xenobiology)
-"chB" = (/obj/effect/spawner/structure/window/reinforced,/obj/structure/sign/warning/biohazard,/turf/open/floor/plating,/area/science/xenobiology)
-"chC" = (/obj/effect/turf_decal/stripes/corner{dir = 1},/turf/open/floor/plasteel/white,/area/science/xenobiology)
-"chD" = (/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on,/obj/effect/turf_decal/stripes/line{dir = 9},/turf/open/floor/plasteel,/area/science/xenobiology)
+"chy" = (/turf/open/floor/circuit/telecomms,/area/science/xenobiology)
+"chz" = (/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{external_pressure_bound = 120; name = "killroom vent"},/turf/open/floor/circuit/telecomms,/area/science/xenobiology)
+"chA" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "0-2"},/obj/machinery/door/poddoor/preopen{id = "xenobio1"; name = "containment blast door"},/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/engine,/area/science/xenobiology)
+"chB" = (/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on,/obj/effect/turf_decal/stripes/line{dir = 8},/turf/open/floor/plasteel/white,/area/science/xenobiology)
+"chC" = (/obj/structure/chair/sofa{dir = 4},/turf/open/floor/carpet,/area/science/misc_lab)
"chE" = (/obj/structure/closet/emcloset,/obj/effect/decal/cleanable/cobweb,/turf/open/floor/plating,/area/maintenance/starboard/aft)
"chF" = (/obj/machinery/light/small{dir = 1},/turf/open/floor/plating,/area/maintenance/starboard/aft)
"chG" = (/obj/machinery/atmospherics/components/unary/tank/air,/turf/open/floor/plating,/area/maintenance/starboard/aft)
@@ -5849,13 +5829,11 @@
"ciE" = (/obj/structure/disposalpipe/segment,/turf/closed/wall,/area/maintenance/aft)
"ciF" = (/obj/structure/disposalpipe/segment,/obj/machinery/light/small,/turf/open/floor/plating,/area/maintenance/aft)
"ciG" = (/obj/structure/disposalpipe/segment,/obj/structure/closet/l3closet,/turf/open/floor/plating,/area/maintenance/aft)
-"ciH" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 5},/turf/open/floor/circuit/telecomms,/area/science/xenobiology)
-"ciI" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 4},/turf/open/floor/circuit/telecomms,/area/science/xenobiology)
-"ciJ" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/manifold/general/visible,/turf/open/floor/circuit/telecomms,/area/science/xenobiology)
-"ciK" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{dir = 4; name = "Kill Chamber"; req_access_txt = "55"},/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 4},/turf/open/floor/plating,/area/science/xenobiology)
-"ciL" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 4},/obj/effect/turf_decal/stripes/line{dir = 8},/turf/open/floor/plasteel/white,/area/science/xenobiology)
-"ciM" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 4},/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel/white,/area/science/xenobiology)
-"ciN" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 9},/obj/structure/table,/obj/item/folder/white,/obj/item/pen,/obj/effect/turf_decal/stripes/line{dir = 9},/turf/open/floor/plasteel,/area/science/xenobiology)
+"ciJ" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen"; req_access_txt = "55"},/obj/structure/cable{icon_state = "1-2"},/obj/machinery/door/poddoor/preopen{id = "xenobio1"; name = "containment blast door"},/turf/open/floor/engine,/area/science/xenobiology)
+"ciK" = (/obj/machinery/camera{c_tag = "Xenobiology Kill Room"; dir = 4; network = list("ss13","rd")},/turf/open/floor/circuit/telecomms,/area/science/xenobiology)
+"ciL" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 8},/turf/open/floor/circuit/telecomms,/area/science/xenobiology)
+"ciM" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 4},/turf/open/floor/circuit/telecomms,/area/science/xenobiology)
+"ciN" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 9},/obj/effect/turf_decal/stripes/line{dir = 8},/turf/open/floor/plasteel/white,/area/science/xenobiology)
"ciO" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/open/floor/plating,/area/maintenance/starboard/aft)
"ciP" = (/obj/machinery/atmospherics/components/binary/valve{dir = 4},/turf/open/floor/plating,/area/maintenance/starboard/aft)
"ciQ" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold/cyan/hidden,/turf/open/floor/plating,/area/maintenance/starboard/aft)
@@ -5902,8 +5880,8 @@
"cjF" = (/obj/structure/disposalpipe/segment,/obj/structure/rack,/obj/effect/spawner/lootdrop/maintenance,/obj/item/reagent_containers/food/snacks/donkpocket,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plating,/area/maintenance/aft)
"cjG" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/c_tube,/turf/open/floor/plating,/area/maintenance/aft)
"cjH" = (/obj/structure/mopbucket,/obj/item/caution,/turf/open/floor/plating,/area/maintenance/aft)
-"cjI" = (/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/plating,/area/science/xenobiology)
-"cjJ" = (/obj/effect/spawner/structure/window/reinforced,/obj/structure/disposalpipe/segment,/turf/open/floor/plating,/area/science/xenobiology)
+"cjI" = (/obj/structure/chair/sofa/right{dir = 4},/turf/open/floor/carpet,/area/science/misc_lab)
+"cjJ" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{icon_state = "1-8"},/turf/open/floor/plasteel/white,/area/science/xenobiology)
"cjK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/closed/wall,/area/maintenance/starboard/aft)
"cjL" = (/obj/machinery/door/airlock/maintenance/abandoned{name = "Air Supply Maintenance"; req_access_txt = "12"},/turf/open/floor/plating,/area/maintenance/starboard/aft)
"cjM" = (/obj/machinery/door/airlock/maintenance{name = "Testing Lab Maintenance"; req_access_txt = "47"},/obj/structure/cable{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plating,/area/maintenance/starboard/aft)
@@ -5957,7 +5935,7 @@
"ckI" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plating,/area/maintenance/aft)
"ckJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/barricade/wooden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plating,/area/maintenance/starboard/aft)
"ckK" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plating,/area/maintenance/starboard/aft)
-"ckL" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plating/airless,/area/space/nearstation)
+"ckL" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{dir = 1; name = "Xenobiology Maintenance"; req_access_txt = "55"},/turf/open/floor/plating,/area/maintenance/starboard/aft)
"ckM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/cable{icon_state = "2-4"},/turf/open/floor/plating,/area/maintenance/starboard/aft)
"ckN" = (/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/turf/open/floor/plating,/area/maintenance/starboard/aft)
"ckO" = (/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plating,/area/maintenance/starboard/aft)
@@ -6015,7 +5993,7 @@
"clO" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/open/floor/plasteel,/area/maintenance/disposal/incinerator)
"clP" = (/obj/machinery/power/terminal{dir = 1},/obj/machinery/airalarm/all_access{dir = 8; pixel_x = 24},/obj/structure/cable/yellow{icon_state = "0-8"},/turf/open/floor/plasteel,/area/maintenance/disposal/incinerator)
"clQ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plating,/area/maintenance/starboard/aft)
-"clR" = (/obj/effect/spawner/structure/window/reinforced,/obj/structure/disposalpipe/segment,/turf/open/floor/plating,/area/maintenance/starboard/aft)
+"clR" = (/obj/structure/table/wood,/turf/open/floor/carpet,/area/science/misc_lab)
"clS" = (/obj/structure/cable{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plating,/area/maintenance/starboard/aft)
"clT" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/open/floor/plating{icon_state = "platingdmg3"},/area/maintenance/starboard/aft)
"clU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/closed/wall,/area/maintenance/starboard/aft)
@@ -6239,7 +6217,7 @@
"cqf" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 1},/obj/machinery/meter,/turf/open/floor/plating,/area/maintenance/aft)
"cqg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/open/floor/plating,/area/maintenance/aft)
"cqh" = (/obj/structure/disposalpipe/segment,/obj/structure/reagent_dispensers/fueltank,/turf/open/floor/plating,/area/maintenance/aft)
-"cqi" = (/obj/machinery/door/airlock/external{name = "Solar Maintenance"; req_access_txt = "10; 13"},/turf/open/floor/plating,/area/maintenance/aft)
+"cqi" = (/obj/machinery/door/airlock/external{name = "Solar Maintenance"; req_access_txt = "10; 13"},/obj/effect/mapping_helpers/airlock/cyclelink_helper{dir = 4},/turf/open/floor/plating,/area/maintenance/aft)
"cqj" = (/obj/structure/rack,/obj/structure/disposalpipe/segment,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/open/floor/plating,/area/maintenance/starboard/aft)
"cqk" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/maintenance{lootcount = 3; name = "3maintenance loot spawner"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plating,/area/maintenance/starboard/aft)
"cql" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plating{icon_state = "platingdmg3"},/area/maintenance/starboard/aft)
@@ -6529,7 +6507,7 @@
"cvJ" = (/obj/machinery/atmospherics/pipe/simple/orange/visible{dir = 4},/turf/closed/wall,/area/engine/engineering)
"cvK" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/orange/visible{dir = 4},/turf/open/space,/area/space/nearstation)
"cvL" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/orange/visible{dir = 9},/turf/open/space,/area/space/nearstation)
-"cvM" = (/obj/machinery/door/airlock/external{name = "External Access"; req_access_txt = "13"},/turf/open/floor/plating,/area/maintenance/starboard/aft)
+"cvM" = (/obj/machinery/door/airlock/external{name = "External Access"; req_access_txt = "13"},/obj/effect/mapping_helpers/airlock/cyclelink_helper{dir = 8},/turf/open/floor/plating,/area/maintenance/starboard/aft)
"cvN" = (/obj/effect/decal/cleanable/dirt,/obj/structure/closet/emcloset,/turf/open/floor/plating,/area/maintenance/starboard/aft)
"cvO" = (/obj/structure/cable,/obj/structure/lattice/catwalk,/turf/open/space,/area/solar/starboard/aft)
"cvP" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/open/floor/plating,/area/maintenance/port/aft)
@@ -6950,26 +6928,49 @@
"cDO" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/open/floor/plasteel/dark,/area/ai_monitored/turret_protected/ai)
"cDP" = (/obj/machinery/airalarm{dir = 1; pixel_y = -22},/obj/machinery/holopad,/turf/open/floor/plasteel/dark,/area/ai_monitored/turret_protected/ai)
"cDQ" = (/obj/machinery/camera{c_tag = "MiniSat External South"; network = list("minisat"); start_active = 1},/turf/open/space,/area/space/nearstation)
+"dhW" = (/turf/closed/wall/r_wall,/area/science/explab)
+"djL" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/disposaloutlet{dir = 1},/turf/open/floor/engine,/area/maintenance/starboard/aft)
"dlK" = (/obj/effect/turf_decal/tile/yellow{dir = 4},/obj/effect/turf_decal/tile/yellow{dir = 8},/obj/machinery/computer/rdconsole/production{dir = 4},/turf/open/floor/plasteel/dark/corner{dir = 1},/area/engine/break_room)
+"dxA" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/engine,/area/maintenance/starboard/aft)
"dJc" = (/obj/item/twohanded/required/kirbyplants/random,/turf/open/floor/plasteel,/area/quartermaster/miningdock)
"dPC" = (/obj/structure/closet/crate{name = "Asshole Containment"},/obj/item/banhammer,/obj/item/toy/plush/mammal/winfre{item_state = "Winfre"; name = "Winfre, Destroyer of Fun"},/turf/open/floor/plating,/area/maintenance/starboard/fore)
"emi" = (/obj/effect/turf_decal/tile/blue{dir = 1},/obj/effect/turf_decal/tile/blue{dir = 4},/obj/machinery/light{dir = 1},/obj/item/twohanded/required/kirbyplants/random,/turf/open/floor/plasteel,/area/hallway/primary/central)
-"eWy" = (/obj/effect/spawner/structure/window/reinforced,/obj/structure/sign/warning/docking,/turf/open/floor/plating,/area/hallway/secondary/entry)
"fns" = (/obj/machinery/light,/turf/open/floor/plasteel,/area/hallway/primary/starboard)
"gdU" = (/obj/machinery/atmospherics/pipe/simple/cyan/visible{dir = 10},/turf/closed/wall/r_wall,/area/engine/atmos)
-"hkY" = (/obj/machinery/light{dir = 8},/turf/open/floor/plasteel,/area/hallway/secondary/entry)
+"gkf" = (/obj/machinery/door/airlock/external{name = "Solar Maintenance"; req_access_txt = "10; 13"},/obj/effect/mapping_helpers/airlock/cyclelink_helper{dir = 8},/turf/open/floor/plating,/area/maintenance/aft)
+"hbp" = (/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/components/unary/vent_scrubber/on{dir = 8},/turf/open/floor/plasteel/white,/area/science/explab)
+"hBR" = (/obj/structure/window/reinforced,/obj/structure/table/reinforced,/obj/machinery/button/door{id = "xenobio61"; name = "Containment Blast Doors"; pixel_y = 4; req_access_txt = "55"},/obj/structure/cable{icon_state = "4-8"},/obj/effect/turf_decal/stripes/line{dir = 10},/turf/open/floor/plasteel,/area/science/xenobiology)
+"hOj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/closed/wall/r_wall,/area/science/circuit)
"iiO" = (/obj/machinery/light{dir = 4},/turf/open/floor/engine,/area/science/xenobiology)
+"izl" = (/turf/closed/wall/r_wall,/area/maintenance/starboard/aft)
"jtW" = (/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red{dir = 4},/obj/machinery/light{dir = 1},/turf/open/floor/plasteel,/area/security/brig)
+"jXD" = (/obj/structure/lattice/catwalk,/turf/open/space/basic,/area/space/nearstation)
"kkG" = (/obj/item/twohanded/required/kirbyplants/random,/turf/open/floor/wood,/area/library)
"lvH" = (/obj/item/twohanded/required/kirbyplants/random,/turf/open/floor/plasteel,/area/engine/atmos)
+"lVa" = (/obj/structure/chair/sofa,/turf/open/floor/carpet,/area/science/misc_lab)
"mAx" = (/obj/item/twohanded/required/kirbyplants/random,/turf/open/floor/carpet/royalblue,/area/crew_quarters/heads/captain)
+"mVN" = (/obj/structure/sign/poster/official/random{pixel_y = 32},/turf/open/floor/carpet,/area/science/misc_lab)
+"nwV" = (/obj/structure/table/reinforced,/obj/machinery/button/door{id = "xenobio1"; name = "Containment Blast Doors"; pixel_y = 4; req_access_txt = "55"},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "4-8"},/obj/machinery/light,/obj/effect/turf_decal/stripes/line{dir = 5},/turf/open/floor/plasteel,/area/science/xenobiology)
+"nMm" = (/obj/structure/cable{icon_state = "0-2"},/obj/structure/cable{icon_state = "0-8"},/obj/effect/spawner/structure/window/reinforced,/obj/machinery/door/poddoor/preopen{id = "xenobio61"; name = "containment blast door"},/turf/open/floor/engine,/area/maintenance/starboard/aft)
+"opz" = (/obj/machinery/atmospherics/components/unary/vent_pump/on{dir = 1; external_pressure_bound = 140; name = "killroom vent"; pressure_checks = 0},/turf/open/floor/circuit/telecomms,/area/science/xenobiology)
+"oHr" = (/obj/structure/sign/poster/official/safety_internals{pixel_x = -32},/turf/closed/wall/r_wall,/area/science/xenobiology)
"oQA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{dir = 4},/obj/item/twohanded/required/kirbyplants/random,/turf/open/floor/plasteel,/area/engine/atmos)
+"pdg" = (/turf/open/floor/carpet,/area/science/misc_lab)
+"phz" = (/obj/machinery/door/airlock/external{name = "External Access"; req_access_txt = "13"},/obj/effect/mapping_helpers/airlock/cyclelink_helper{dir = 4},/turf/open/floor/plating,/area/maintenance/starboard/aft)
+"pND" = (/turf/open/floor/engine,/area/maintenance/starboard/aft)
"qyM" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 4},/obj/machinery/portable_atmospherics/scrubber,/obj/effect/turf_decal/tile/red{dir = 8},/turf/open/floor/plasteel/white/corner{dir = 1},/area/engine/atmos)
"ren" = (/obj/machinery/atmospherics/components/unary/vent_scrubber/on{dir = 4},/obj/item/twohanded/required/kirbyplants/random,/turf/open/floor/plasteel/white,/area/medical/virology)
-"sJX" = (/obj/machinery/quantumpad{map_pad_id = "station"; map_pad_link_id = "xenoarch"; mapped_quantum_pads = list("station","xenoarch")},/turf/open/floor/plasteel,/area/hallway/secondary/entry)
+"siW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable,/obj/effect/spawner/structure/window/reinforced,/obj/machinery/door/poddoor/preopen{id = "xenobio61"; name = "containment blast door"},/turf/open/floor/engine,/area/maintenance/starboard/aft)
+"sWK" = (/obj/structure/table,/obj/item/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/grenade/chem_grenade,/obj/item/grenade/chem_grenade,/obj/item/pipe_dispenser,/turf/open/floor/engine,/area/science/mixing)
+"sXb" = (/obj/structure/cable,/obj/structure/cable{icon_state = "0-4"},/obj/machinery/door/poddoor/preopen{id = "xenobio1"; name = "containment blast door"},/obj/effect/spawner/structure/window/reinforced,/turf/open/floor/engine,/area/science/xenobiology)
"tIS" = (/obj/item/twohanded/required/kirbyplants/random,/turf/open/floor/wood,/area/security/vacantoffice)
+"uZG" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{icon_state = "1-2"},/obj/structure/cable{icon_state = "1-4"},/turf/open/floor/plasteel/white,/area/science/xenobiology)
+"vgR" = (/obj/structure/cable{icon_state = "1-2"},/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "xenobio61"; name = "containment blast door"},/turf/open/floor/engine,/area/maintenance/starboard/aft)
"vId" = (/obj/machinery/light{dir = 8},/turf/open/floor/engine,/area/science/xenobiology)
+"wHA" = (/obj/effect/landmark/blobstart,/obj/effect/landmark/xeno_spawn,/turf/open/floor/engine,/area/science/explab)
+"wLY" = (/obj/structure/bookcase/manuals/research_and_development,/obj/machinery/light{dir = 1; pixel_y = 16},/turf/open/floor/carpet,/area/science/misc_lab)
"wST" = (/obj/structure/disposalpipe/segment,/obj/item/twohanded/required/kirbyplants/random,/turf/open/floor/plasteel/grimy,/area/security/detectives_office)
+"xSo" = (/obj/machinery/light{dir = 4},/turf/open/floor/engine,/area/maintenance/starboard/aft)
"xYc" = (/obj/item/crowbar,/obj/item/wrench,/obj/structure/window/reinforced,/obj/effect/turf_decal/tile/yellow{dir = 4},/obj/effect/turf_decal/tile/yellow{dir = 8},/turf/open/floor/plasteel/dark/corner,/area/hallway/primary/aft)
(1,1,1) = {"
@@ -7098,71 +7099,71 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXeaXgaxybhaaxBaxBaTcaXhaXiaXjaXkaXkaXlaXmaXnaTcaXoaRTaVLaXpaXpaXpaXqaXraXpaXsaXtaXuaXvaXwaXwaXxaXyaPlaXzaXAaXBaXCaXDaXEaXBaXFaXGaXGaXHaXIaXJaXKaXLaXMaWdbbVaIPaXNaXOaXPaXQaXRaXSaPCaXTaXUaXVaXWaXXaXYaXYaXZaYaaYbaYcaYdaYeaYfaXVaYgaXTaPCaXSaXRaYhaYiaXOaYjaIPaIPbebbbXbiZaKsaKsaKsaKsaKsaKsaKsaRlbjbaKsaKsaKsaJiaYpaYqaSBaSBaYraSBaYXbhyaJiaYsaYtaRwaYuaYuaYvaYtaYwaYxaYyaYzaYzaYAaYBaYCaOMaOMaYDaOMaOMaOMaOMbegaYEaYFaYFaYFaYFaYFaYGaYHbjsaYJaYKaYLaYMaQjaYNaMzbjhaZOaZNaMzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayUayUayUayWaYOaYPaYQaYRaYSaYSaYSaYSaYTaUuaTcaYUaYVaVLaXpaYWbaKaYYaYZaXpaZaaZbaZcaPlaZdaZeaZfaZgaPlaZhaZiaZjaZkaZjaZlaZmaZnaWdaZoaZpaZpaZqaZraZsaZtaWdbbYaLzaZuaZvaZvaZvaZvaZvaZvaZwaZxaZyaXXaXZaZzaZAaZAaZBaZAaZAaZCaYbaYeaZDaZEaZFaZDaZDaZDaZDaZDaZDbjiaIPaIPbgTbjjbbXbiZbjkaSwbjlaKsaKsaKsaWGaKsaKsbjmaYkaJibjnaJiaZSaYlaZTaZTaJiaJiaJiaZUaRwaRwaZVaZWaZXaZYaZWaHTaZZbaababaFbbacbadbaeaVwaMpbafaUkaVwbagaCwbahaFfbaiaREaREbaiaFfbajaCwbakbalbamaQiaQjaPbaMzaMzaMzaMzaMzaMzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayUbanaPebaoaTcaUwaVFbsatISbapaUwbaqaUwaTcbarbasbataXpaXpaXpbaubavaXpaZbbawaZbaPlaZdaZeaZfaZgaPlaZhaZibaxbayaZjbazaZmaZnaWdbaAaZpaZpaZGbaBaZpbaDbbxaIPaIPbbZaZvbaFbaGbaHbaIbaJbcebaLbaMbaNbaOaZAaZAbaPbaQbaPaZAaZAbaRbaSbaCbaTbaUbaXbaYbbzbaVmAxaZDbjoaIPaIPbgTbgTbjpbbXaJdaJdaJdbbbaSqbbbaJdbbcaJdaJdaJdaJibcbbdZbbdbbdbbdbbdbcfbdHaJiaZWbbgbbgaZWbaabaabaabaaaHTaZZbaababaFbaFbaFbbbhaFbbbhaFbbbhaFbaFbaCwaCwbbibbibbibbibbibbiaCwaCwbbjaQjbbkaQiaQjaQjbblaQlaQlaQlaQlaSZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayUayUayUayUayUauSayUayUayUayUayUayUayUayUauSauSaweaxBaxBaTcaTcaTdaTcaTcaTcaTcaTeaTcaTcbbmbbnbboaXpaYWbbpbaubbqaXpbbrbbsbbraPlaZdaZeaZfaZgaPlbbtaZiaZjbbubbvbbwaZmaZnbjqaZsbbybaZbbabbAaZpwSTbbCaIPaIPaXNbbDbbEbaJbbFbbGbbGbbHbbIbbJbaNbbKaZAaZAbaPbbLbaPaZAaZAbbMbaSbbBbbNbpdbbRbbSbcWbaWbbOaZDbjobbUaIPaIPbaabaabaabecbGkbehbaabaabaabeibembembembembeobaabaabaabaabaabaabaabaabehbaabaabaabaabaabaabaabcabepbccbcdbaabesbembembaabembaabembaabembekbeobfObaabaabaabaabaabaabbWbcgaSXaQjbchbcibcjbckaMzaMzaMzaMzaMzaRIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayUaxBaxBaxBayUawhawiawiawiawiawiawiawiawiawhawibclaxDaxDbcmbcnbcobcpbcpbcpbcqbcrbcsaPjbctbcubcvaXpaXpaXpbcwbcxaXpaPlaPlaPlaPlaZdaZebcybczaPlaZhaZiaZjbcAbcBbcCbcDbcEbcFbcGbcGbcGbcHbcIaZsbcJaWdaQUaNhaXNbcKbcLbaJbcMbcNbcObcPbcQbcRbaNbcSbaPaZAbcTbcUbcTaZAbaPaZCbaSbbPbbNbpdbbRbdVbcWbaWmAxaZDbjraIPaIPaIPbaabaabaabaabHGbbWbaabaabaabaabcYbaabaabaabaabaabcZaYzaYzaYzaYzbdabaabbWbaabaabaabaabaabaabdbbdcbddbdebdfbdfbdfbdgbdfbdfbdfbdfbdfbdfbdfbdfbdfbdfbdfbdfbdfbdfbdfbdhbdibdjbdkbdkbdlaQibdmaQjbdnaQlaQlbdoaQlbdpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayUhkYsJXaxBaxBaxAaxBaxAazaaxBaxBbdqaxAaxBaxAazaaxBaxBaxBbdrbdsbdrbdrbdrbdrbdtbduaPjaPjaPjbdvaVLaXpaYWbdwbdxbbqaXpbdybdzbdyaPlaPlaPlbdAbdBaPlaZhaZibdCbdDbdEbdFaZmaPjaWdaWdaWdaWdaWdaWdaWdbdGaWdbfPaIPaXNbcKbdIbaJbcMbdJbdKbcPbcQbaJbaNbdLbdMaZAbdNbdObdPaZAbdQbdRbaSbbQbbTbcVbdWbdXbjdbaWbdSaZDbjobeaaIPbedbgBbgBbgBbiibHHbjtbeebeebeebfAbefbeebeebjubgBbgBbgBbgBbgBbjvbjwbejbjxbjtbgBbgBbaabaafnsbelbjybenbjzbjAbeqbeqbeqbaabgBbgDbjBbgBbgBbaabaabaabaabaabaabaabaabaabaabaabbWbetbeubevbewaQiaQjaPbaMzaMzaMzaMzaMzaMzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayUaxBaxBaxBayUayUbexayUayWaxBaxBayXayUbeyayUayYbezbeAbeAbdrbeBbeCbCYbeEbeFbdtbeGbeHbeIbeIbeJbeKaXpaXpaXpbeLbeMaXpaPjaPjaPjaPjbeNbeObePbeQbeObeRaZibeSbeTaZjaZlaZmbeUbeVbeWbeXbeXbeXbeXbeYbeZbeVbjCaIPbbZaZvbaJbfbbfcbfdbfebffbcQbfgbfhaXYbfibfjbfkbfkbfkbflbfmaYdbfnbdTbdUbdYbpxbfobjdbaWbfpaZDbjoaIPbjDbfvbfvbfvbfvbfvbfvbfvbfwbfxbfxbfxbfybfzbfzbfwbjEbjEbjEberberberberberbfBbfBbfBbfCbfBbfBbfBbfBbfBbfGbfHbfIbfJbfJbfJbfKbfLbfLbfLbfLbfLbfMbfNbfNbjFbjGbfNbjHbjIbfNbfNbfRbfSbfSbfSbfSbfTbfUbfVbfWaMzaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayUayUayUayUeWyaAbaxyayUaAcaAdbfXbfYayUaxyaAbayUauSaAaawebdrbfZbgabgabgabgbbgcbgdbgebeObeObgfbggaXpaYWbghbeLbgiaXpbgjbgjaRTbgkbglbgmbgnbgmbgmbgobgpbgqaZkbgrbgsaZmaRTbgtbgubeVbgvbgwbgxbgyaPNbgAbjJbgCbjKaZvbgEaZybgFbgGbgHbgIbcQbgJaZvaadbgKbjLbjMbjMbjMbjNbgMaadaZDbfqbfrbfsbftbaWbfubaWbgNaZDbjoaIPbjObfvbjPbgVbgWbgXbgYbfvbhfbjQbjQbjQbhbbhcbhcbhdbhebjRbhgbfDbfEbfFbhhberbhlbhibhjbhkbhibhmbhnbfBbfBbhobhpbhqbhrbhsbhtbhubhvbhwbhxbjSbfLbhzbhAbhzbfLbhBbhCbhBbfSbhDbhEbhDbfSbhFbhGbfSbhHbhIaMzaMzaMzaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadauSauSayUayUayUayUayUayUayUayUauSauSaweaxBaxBaTcaTcaTdaTcaTcaTcaTcaTeaTcaTcbbmbbnbboaXpaYWbbpbaubbqaXpbbrbbsbbraPlaZdaZeaZfaZgaPlbbtaZiaZjbbubbvbbwaZmaZnbjqaZsbbybaZbbabbAaZpwSTbbCaIPaIPaXNbbDbbEbaJbbFbbGbbGbbHbbIbbJbaNbbKaZAaZAbaPbbLbaPaZAaZAbbMbaSbbBbbNbpdbbRbbSbcWbaWbbOaZDbjobbUaIPaIPbaabaabaabecbGkbehbaabaabaabeibembembembembeobaabaabaabaabaabaabaabaabehbaabaabaabaabaabaabaabcabepbccbcdbaabesbembembaabembaabembaabembekbeobfObaabaabaabaabaabaabbWbcgaSXaQjbchbcibcjbckaMzaMzaMzaMzaMzaRIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayUawhawiawiawiawiawiawiawiawiawhawibclaxDaxDbcmbcnbcobcpbcpbcpbcqbcrbcsaPjbctbcubcvaXpaXpaXpbcwbcxaXpaPlaPlaPlaPlaZdaZebcybczaPlaZhaZiaZjbcAbcBbcCbcDbcEbcFbcGbcGbcGbcHbcIaZsbcJaWdaQUaNhaXNbcKbcLbaJbcMbcNbcObcPbcQbcRbaNbcSbaPaZAbcTbcUbcTaZAbaPaZCbaSbbPbbNbpdbbRbdVbcWbaWmAxaZDbjraIPaIPaIPbaabaabaabaabHGbbWbaabaabaabaabcYbaabaabaabaabaabcZaYzaYzaYzaYzbdabaabbWbaabaabaabaabaabaabdbbdcbddbdebdfbdfbdfbdgbdfbdfbdfbdfbdfbdfbdfbdfbdfbdfbdfbdfbdfbdfbdfbdhbdibdjbdkbdkbdlaQibdmaQjbdnaQlaQlbdoaQlbdpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadayUaxAaxBaxAazaaxBaxBbdqaxAaxBaxAazaaxBaxBaxBbdrbdsbdrbdrbdrbdrbdtbduaPjaPjaPjbdvaVLaXpaYWbdwbdxbbqaXpbdybdzbdyaPlaPlaPlbdAbdBaPlaZhaZibdCbdDbdEbdFaZmaPjaWdaWdaWdaWdaWdaWdaWdbdGaWdbfPaIPaXNbcKbdIbaJbcMbdJbdKbcPbcQbaJbaNbdLbdMaZAbdNbdObdPaZAbdQbdRbaSbbQbbTbcVbdWbdXbjdbaWbdSaZDbjobeaaIPbedbgBbgBbgBbiibHHbjtbeebeebeebfAbefbeebeebjubgBbgBbgBbgBbgBbjvbjwbejbjxbjtbgBbgBbaabaafnsbelbjybenbjzbjAbeqbeqbeqbaabgBbgDbjBbgBbgBbaabaabaabaabaabaabaabaabaabaabaabbWbetbeubevbewaQiaQjaPbaMzaMzaMzaMzaMzaMzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaweayUbexayUayWaxBaxBayXayUbeyayUayYbezbeAbeAbdrbeBbeCbCYbeEbeFbdtbeGbeHbeIbeIbeJbeKaXpaXpaXpbeLbeMaXpaPjaPjaPjaPjbeNbeObePbeQbeObeRaZibeSbeTaZjaZlaZmbeUbeVbeWbeXbeXbeXbeXbeYbeZbeVbjCaIPbbZaZvbaJbfbbfcbfdbfebffbcQbfgbfhaXYbfibfjbfkbfkbfkbflbfmaYdbfnbdTbdUbdYbpxbfobjdbaWbfpaZDbjoaIPbjDbfvbfvbfvbfvbfvbfvbfvbfwbfxbfxbfxbfybfzbfzbfwbjEbjEbjEberberberberberbfBbfBbfBbfCbfBbfBbfBbfBbfBbfGbfHbfIbfJbfJbfJbfKbfLbfLbfLbfLbfLbfMbfNbfNbjFbjGbfNbjHbjIbfNbfNbfRbfSbfSbfSbfSbfTbfUbfVbfWaMzaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaAaauSaAbaxyayUaAcaAdbfXbfYayUaxyaAbayUauSaAaawebdrbfZbgabgabgabgbbgcbgdbgebeObeObgfbggaXpaYWbghbeLbgiaXpbgjbgjaRTbgkbglbgmbgnbgmbgmbgobgpbgqaZkbgrbgsaZmaRTbgtbgubeVbgvbgwbgxbgyaPNbgAbjJbgCbjKaZvbgEaZybgFbgGbgHbgIbcQbgJaZvaadbgKbjLbjMbjMbjMbjNbgMaadaZDbfqbfrbfsbftbaWbfubaWbgNaZDbjoaIPbjObfvbjPbgVbgWbgXbgYbfvbhfbjQbjQbjQbhbbhcbhcbhdbhebjRbhgbfDbfEbfFbhhberbhlbhibhjbhkbhibhmbhnbfBbfBbhobhpbhqbhrbhsbhtbhubhvbhwbhxbjSbfLbhzbhAbhzbfLbhBbhCbhBbfSbhDbhEbhDbfSbhFbhGbfSbhHbhIaMzaMzaMzaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaadaadaadaadayUbhJayUayUayUayUayUayUbhKayUaadaadaadaaabdrbhLbdrbhMbgabhNbhObdraRTaTfbhPbhQbhRbhSbhSbhSbhSbhSbhSbhTbhUbhVbhWbhXbhYbhYbhYbhYbhYbhYaZmbhZaZiaZmbhYbhYbiabibbicbidbiebifbiebigbihbfaaIPbjTaZvbijaZyaZyaZyaZybgIbcQbikaZvaadbgKbjUbilbimbinbjVbgMaadaZDbgObbNbgPbgQbaWbjdbaWbaWaZDbjoaIPbjDbfvbirbisbitbitbiubivbhcbiwbhcbhcbhbbjWbhcbhcbhcbhcbixbfDbjXbjYbjZberbkabhibhibkbbkabkcbhibfBbkdbkebfHbkfbkgbkhbkibkjbkkbklbkmbknbkobkpbkqbkrbfLbksbktbkubfSbgRbgSbgRbiobgRbgRbfSbkzbhIaaaaadaaaaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoBaaabdrbkBbkCbkDbkEbkEbkFbkGbkHbkIaPjbkJbkKbkLbkLbkLbkMbkMbkMbkMbkMbkMbkNbkObhYbkPbkQbkRbkSbkTbkUbkVbkWbhYbkXbkYbkZbeVbeVblablbblcblbbldbleblfblgbbZblhblibljblkbllaZyblmbcQaZvaZvaadbgKbjUbimbgLbimbjVbgMaadaZDaZDbipbpdbiqbaWbjebjfbjgaZDbjoaIPbjDbfvblsbisbltblublvblwbhcblxblyblzblAblBblCblCblDbhcbixbfDblEblFblGberbkabhibhibkbbkabkcblHbfBblIblJbfHblKblLblMblNblKbkkblOblPbkmbkmbkmbkmblQbfLblRblSblTbfSbkvbgRbgRbkwbkxbkybfSbkzbhIblYblYblYblYaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdrblZbdrbmabmbbmbbmcbdrbmdbmdaPjbmebmfbmebmebmebmfbmeaPjaPjbhYbhYbmgbmhbhYbmibmibmibmibmibmibmjbmkbmlbmmbmnbmobmpbmqbmrbmqbmsbmtbmubihbfabmvbmwbmxbmybmzbmAbmBaZybgIbcQaZvaadaadbmCbmDbinbmEbilbmFbmGaadaadaZDbmHbmIaZDaZDaZDaZDbmJaZDbmKaIPbmLbfvbmMbmNbmObitbiubmPbhcblxbmQbmRbmSbmTbmUbmVbmWbmXbixberbmYbmZbnaberbkabhibhibkbbkabnbbncbfBbndblJbfHbnebkgbnfbkibngbkkbnhbnibnjbnkbnlbnmbnnbfLbnoblSbnpbfSbnqbnrbnsblnbloblpbfSbkzbnwbnxbnybnzbnAaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdrbnBbkCbnCbmbbnDbnEbdraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnFbnGbnHbnIbnJbnKbmibmibmibnLbmibmibnMbnNbnObnPbnQbnRbnSbnTbihbnUbeVbeVbeVbnVbnWaLzblhbnXbnYbnYbnYbnYbnZboabobaadaaabgKbocbodbodbodboebgMaaaaadbofbntbnubnvbojbokaZDbolaZDbjiaIPbombfvbonboobopboqborbfvbosblxbmQbotboubhcbovbotbmWbowboxberboybozboAboBboCboCboDboEboHboGboHboIboJboKbfHboLboMboNboOboPboQboRboSboTboUboVboWaRhbfLboXboYboZbfSbpabpbbpcblqbgRblrbfSbpebpfbpgbphbphbphbphbphbphbpiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdrbpjbkCbkCbkCbdrbdrbdraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnFbpkbplbpmbpnbpnbpnbpnbpnbpnbpnbpnbpnbpobppbpqbprbpsbptbpubpvbpwbpwbpybpzbfabpAbpBblhblhbobbpCbpDbpEbpFbpGbobaaaaaabgKbpHbpIbpJbpIbpKbgMaaaaaabofboibpdbpxbofbpOaZDbpPaZDbjiaIPbpQbpRbpSboobpTbitbpUbfvbjEbpVbpWbpXbpYbhcbpZbpXbqabqbbjEberberbqcberbqdbqebqfbqfbqfbqgbqhbqibqibqibqjbqkbfIbfIbfIbfIbfIbqlbqmbkmbqnboWboWbqobqpbqlbqqbqrbqsbqtblUblVblWblXbogbohbfSbqAbqBbqCbqDbqDbqDbqDbqDbqEbhIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqFbnFbnFbqGbplbkVbmibqHbqHbqHbqHbmibmibmibmibqIbqJbqKbqLbqMbqNbqObqPbqQbpwbpwbpzbqRbqSbqTbqUbqVbqWbqXbpLbpMbpNbrbbobaadaaabgKbrcbrdbrdbrdbrebgMaaaaadbofbqxbqybDUbofbriaZDbolaZDbjiaIPbpQbfvbrjboobrkbrlbrmbfvbrnblxbrobpXbjEbrpbjEbpXbrqbrrbrsbrtbrubrvbrwbrxbrybrzbrAbrBbrCbrDbrEbrFbrGblJbrHbrIbrJbrKbrLbrMbrNbrObrPbrQbrRbrSboWbrTbrUbrVbrWaSxbqtbqubqvbqwbqYbgRbqZbscbsdbfSbsebsebsebsebsebsebkzbhIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsfbsgbsfbshbsibsjbskbslbmibmibmibmibmibsmbhYbhYbsnbpwbsobspbsqbpubsrbpwbssbpwbstbsubpAbsvbswbsxbsybszbrabrfbpNbsCbobaaaaaabgKbsDbsEbsFbsEbsGbgMaaaaaabsHbsIbsJbsHbsHbsHbsHbsKbsHbsLaLzbsMbfvbfvbsNbsObsPbfvbfvbhcbsQbsRbsSbsTbsSbsUbsSbsWbqbbhcbhcbhcbqbbhcbhbbrybrzbsXbsYbsZbtabtbbtcbrGbtdbtebtfbtgbtgbtgbthbtibtjbtkbtlbtmbtnbtobtpbtqbtrblSbtsbqtbqtbttbtubtvbttbqtbfSbfSbfSbtwbtxbtybtzbtAbsebtBbhIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtCbtDbtEbtFbmibkVbmibqHbqHbtGbqHbmibmibtHbtIbhYbtJbpwbsobspbpwbtKbpwbpwbtLbpwbstbsubpAaIPbswbtMbtNbtObrgbrgbrhbtRbobaadaadbtSbtTbtUbtVbtWbtXbtYaadaadbtZbuabubbucbudbuebufbugbsHbuhaIPbuibujbukbulbumbunbuobupbuqburbusbutbutbutbutbutbuubuvbutbutbutbuwblCbuxbuybrzbuzbuAbuBbuBbuCbuDbrGblJbrHbuEbuFbuGbuHbuIbuJbuKbkmbuLbkmbkmbkmbuMbqlbuNbuObuPbuQbuRbuSbuTbuUbuVbuWbuXbuYbuZbvabvbbvbbvbbvcbvdbvebhIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqFbnFbnFbvfbmibkVbmibmibmibmibmibmibmibtHbvgbhYbvhbvibvjbvkbvlbvmbvnbvobpwbvpbpzbvqbpAaIPbswbsxbobbvrbvsbvtbvubvvbobaaaaaaaadbgKbvwbvxbvwbgMaadaaaaaabtZbvybvzbvAbvBbvCbvCbvDbvEbvFbvGaMXbvHbvIbvJbvKbvLbvMbvNbvMbvMbvObvPbvQbvRbvRbvRbvSbvTbhcbhcbvUbvVbvVbvWbrzbrzbrzbvXbvYbvZbtbbuDbrGbwabrHbfLbqlbqlbqlbqlbqlbqlbqlbqlbqlbwbbwcbwbbqlbwdbwebwfbwgbwgbwgbwhbwibwjbwkbwlbwmbwnbwobwpbwqbwrbwsbwtbwubwvblYbwwbwwblYaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwxbtCbtDbtEbpkbwybmjbwzbnKbmibwybmibmibmibtHbwAbhYbwBbpwbsobwCbwDbwEbpwbpwbpwbwFbpzbvqbpAaXNbswbwGbobbwHbwIbwJbwKbpGbobaaaaaaaadbwLbwMbrdbwNbwOaadaaaaaabtZbwPbwQbwRbwSbwTbwUbwVbsHbwWaIPbjDbjEbjEbwXbwYbsWbwZbxabxbbxcbxcbxbbxabxbbxabxbbxabxbbxabfzbfzbvVbxdbuBbxebxfbrzbvXbxgbxhbxibxjbrGbxkbxlbxmbxnbxobwgbwgbxpbwgbwgbxqbxrbxsbxtbxubwgbxvbxwbxxbxybxybxybxzbxzbxzbxzbxzbxAbxBbxCbxDbxCbxEbxCbsebxFbxGbxHbxIbxJblYaadaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxKbxLbxKbxMbxNbxMbxMbxMbxMbxMbxObxPbmibtHbxQbhYbxRbxSbxTbxUbxVbxWbxXbxXbxXbxWbxWbxYbpAaKebxZbsxbobbyabybbycbydbyebobaaaaaaaadbyfbygbtVbyhbyiaadaaaaaabtZbyjbykbylbymbwTbwUbwVbsHbynaIPbjDbyobypbyqbwYbyrbysbxabytbyubyvbywbyxbjcbyzbyAbyzbyBbxabhcbyCbvVbyDbuBbyEbyFbyGbyHbyIbyJbyJbyKbyLbyMbyNbyObyPbyQbyRbySbyRbyRbyTbyRbyRbyUbyVbyRbyRbyWbyXbyYbxybrXbrYbrZbzcbzdbzebxzbzfbzgbzhbzibzjbzgbzkbsebxFbhIbzlbzmbznblYaaaaaaaaaaaaaaaaaaaaaaadbzoaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqFbnFbnFbnFbhYbnFbnFbnFbzpbzpbzpbzpbzqbzrbzrbzpbzpbzsbztbzubzvbxWbzwbzxbzybzzbxWbzAbpAbbeaTBaTBbobbobbobbobbobbzBbobaILaILaILbtSbzCbzDbzEbtYaILaILaILbsHbsHbsHbsHbsHbsHbsHbsHbsHbzFaIPbzGbxabxabzHbzIbxabxabxabzJbyubzKbyubzLbzMbzNbzObzPbzQbzLbhcbyCbvVbzRbzSbzTbzUbzVbzWbzXbzUbzUbzYbzZbAabAbbAcbAcbAcbAcbAdbAcbAcbAcbAebAebAfbAgbAhbAhbtrbAibtsbxybHIbsbbsAbAmbAnbAobApbsebsebAqbAqbAqbsebArbsebxFbhIbAsbzmbAtblYaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaabzpbAubAvbAwbAxbAybAzbzrbAAbABbACbADbxXbAEbAFbAGbAHbxWbzAbpAaIPaLPbAIbAJbAKaLPbiFbALbAMbANaWDaWDaWDbAObAPbAQbARbASaIPaIPaIPaIPaLOaIPaLzbATaIPaIPbAUaIPbAVaIPbAWbxabAXbAYbAZbBabBbbxabBcbyubBdbyubzLbzMbzMbBebBfbBgbzLbhcbBhbvVbuBbBibBjbBkbBlbBmbBnbBobBpbrGbrGbBqbBrbAcbBsbBtbBubBvbBwbBxbAcbBybBzbBAbBBbBCbAhbtrbAibBDbBEbsBbsVbtPbBIbBJbBKbApbBLbBLbBLbBLbBLbBLbBLbsebxFbhIbBMbBNbBOblYaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoBaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaabzrbBPbBQbBRbBSbBTbBUbBVbBWbBXbBYbBZbCabCbbAGbCcbCdbxWbzAbCeaIPaIPaIPaIPaIPaIPbCfaIPbpAaIPaIPaIPaIPaIPbCgbChbCiaIPaIPaIPaIPaIPaIPaIPaLzaIPaIPaIPaIPaNhbAVbCjbjDbxabCkbClbCmbCnbCobxabCpbyubyvbCqbxabCrbCsbCtbCubCvbxabhcbyCbvVbvVbvVbvVbvVbrGbrGbrGbrGbrGbrGbCwbCxbCybAcbCzbCAbCBbCCbCDbCEbAcbCFbCGbCHbCIbCJbAhbtrbCKbCLbCMbtQbyybyybyZbzabzbbApbBLbBLbCSbCTbBLbBLbBLbsebxFbhIbCUbzmbCVblYaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabzpbCWbCXbIYbCZbDabDbbDcbDdbDebDfbDdbDgbDhbDibDjbDkbxWbDlbDmbDnaKlbDnbDobDnbDnbDpbDnbDqbfQbDrbDsbfQbDtbDubDvbDwbDxbDybDzbDAbDAbDBbDAbDCbDDbDAbDEbDFbDGbDHbfQbDIbxabDJbDKbDLbxbbxbbxabxbbDMbxbbxabxabxabxabxabxabxabxabhcbhcbDNbDObDPbwZbDQbDRbAjbAkbAlbBFbDRbDWbDXbDYbAcbBsbDZbEabEbbEcbEdbAcbEebEfbEgbEhbEibAhbtrbEjbEkbxzbBGbBHbCNbCObCPbCQbApbBLbBLbBLbErbBLbBLbBLbsebEsbEtbEubzmbznblYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabzpbzpbzrbzrbzrbzrbzpbzpbEvbEwbACaTRbxWbxWbxWbxWbxWbxWbExbEyaITaITaITaITbEzbEzbEzbEzbEzbEzbEzbEzbEzbEzbEAaHpbEBbECbECbECbECbECbEDbECbECbECbECbEEbEFbEEaIUaKfbEGbxabEHbEIbEJbEKbELbxabEMbyubENbEObEPbEQbERbESbETbEUbEOblDbhcbhcbhcbhcbhcbsWbEVbCRbDSbCRbDTbDRbEZbCxbFabFabFabFabFabFabFabFabFabFbbFbbFbbFbbFbbFbbFcbFdbFebxzbxzbxzbxzbxzbxzbxzbApbsebsebsebsebsebsebsebsebxFbhIbFfbFgblYblYaadaadaadaaeaaeaaeaaeaaeaaeaaeaaeaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsfbsgbsfbshbsibsjbskbslbmibmibmibmibmibsmbhYbhYbsnbpwbsobspbsqbpubsrbpwbssbpwbstbsubpAbsvbswbsxbsybszbrabrfbpNbsCbobaaaaaabgKbsDbsEbsFbsEbsGbgMaaaaaabsHbsIbsJbsHbsHbsHbsHbsKbsHbsLaLzbsMbfvbfvbsNbsObsPbfvbfvbhcbsQbsRbsSbsTbsSbsUbsSbsWbqbbhcbhcbhcbqbbhcbhbbrybrzbsXbsYbsZbtabtbbtcbrGbtdbtebtfbtgbtgbtgbthbtibtjbtkbtlbtmbtnbtobtpbtqbtrblSbtsbqtbqtbttbtubtvbttbqtbScbScbScbScbScbScbScbScbScbtBbhIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtCbtDbtEbtFbmibkVbmibqHbqHbtGbqHbmibmibtHbtIbhYbtJbpwbsobspbpwbtKbpwbpwbtLbpwbstbsubpAaIPbswbtMbtNbtObrgbrgbrhbtRbobaadaadbtSbtTbtUbtVbtWbtXbtYaadaadbtZbuabubbucbudbuebufbugbsHbuhaIPbuibujbukbulbumbunbuobupbuqburbusbutbutbutbutbutbuubuvbutbutbutbuwblCbuxbuybrzbuzbuAbuBbuBbuCbuDbrGblJbrHbuEbuFbuGbuHbuIbuJbuKbkmbuLbkmbkmbkmbuMbqlbuNbuObuPbuQbuRbuSbuTbuUbuVbuWbuXbuYbuZbvabvbbvabtwbvcbvdbvebhIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqFbnFbnFbvfbmibkVbmibmibmibmibmibmibmibtHbvgbhYbvhbvibvjbvkbvlbvmbvnbvobpwbvpbpzbvqbpAaIPbswbsxbobbvrbvsbvtbvubvvbobaaaaaaaadbgKbvwbvxbvwbgMaadaaaaaabtZbvybvzbvAbvBbvCbvCbvDbvEbvFbvGaMXbvHbvIbvJbvKbvLbvMbvNbvMbvMbvObvPbvQbvRbvRbvRbvSbvTbhcbhcbvUbvVbvVbvWbrzbrzbrzbvXbvYbvZbtbbuDbrGbwabrHbfLbqlbqlbqlbqlbqlbqlbqlbqlbqlbwbbwcbwbbqlbwdbwebwfbwgbwgbwgbwhbwibwjbwkbwlbwmbwnbwqbwpbwqbwrbwsbwtbwubwvblYbwwbwwblYaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwxbtCbtDbtEbpkbwybmjbwzbnKbmibwybmibmibmibtHbwAbhYbwBbpwbsobwCbwDbwEbpwbpwbpwbwFbpzbvqbpAaXNbswbwGbobbwHbwIbwJbwKbpGbobaaaaaaaadbwLbwMbrdbwNbwOaadaaaaaabtZbwPbwQbwRbwSbwTbwUbwVbsHbwWaIPbjDbjEbjEbwXbwYbsWbwZbxabxbbxcbxcbxbbxabxbbxabxbbxabxbbxabfzbfzbvVbxdbuBbxebxfbrzbvXbxgbxhbxibxjbrGbxkbxlbxmbxnbxobwgbwgbxpbwgbwgbxqbxrbxsbxtbxubwgbxvbxwbxxbxybxybxybxzbxzbxzbxzbXybxAbzgbzjbxDbzjbxEbtxbScbxFbxGbxHbxIbxJblYaadaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxKbxLbxKbxMbxNbxMbxMbxMbxMbxMbxObxPbmibtHbxQbhYbxRbxSbxTbxUbxVbxWbxXbxXbxXbxWbxWbxYbpAaKebxZbsxbobbyabybbycbydbyebobaaaaaaaadbyfbygbtVbyhbyiaadaaaaaabtZbyjbykbylbymbwTbwUbwVbsHbynaIPbjDbyobypbyqbwYbyrbysbxabytbyubyvbywbyxbjcbyzbyAbyzbyBbxabhcbyCbvVbyDbuBbyEbyFbyGbyHbyIbyJbyJbyKbyLbyMbyNbyObyPbyQbyRbySbyRbyRbyTbyRbyRbyUbyVbyRbyRbyWbyXbyYbxybrXbrYbrZbzcbzdbzebXybzfbzgbzjbzibzjbxEbzkbScbxFbhIbzlbzmbznblYaaaaaaaaaaaaaaaaaaaaaaadbzoaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqFbnFbnFbnFbhYbnFbnFbnFbzpbzpbzpbzpbzqbzrbzrbzpbzpbzsbztbzubzvbxWbzwbzxbzybzzbxWbzAbpAbbeaTBaTBbobbobbobbobbobbzBbobaILaILaILbtSbzCbzDbzEbtYaILaILaILbsHbsHbsHbsHbsHbsHbsHbsHbsHbzFaIPbzGbxabxabzHbzIbxabxabxabzJbyubzKbyubzLbzMbzNbzObzPbzQbzLbhcbyCbvVbzRbzSbzTbzUbzVbzWbzXbzUbzUbzYbzZbAabAbbAcbAcbAcbAcbAdbAcbAcbAcbAebAebAfbAgbAhbAhbtrbAibtsbxybHIbsbbsAbAmbAnbAobScbtybtzbAqbtAbAqbApbArbScbxFbhIbAsbzmbAtblYaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaabzpbAubAvbAwbAxbAybAzbzrbAAbABbACbADbxXbAEbAFbAGbAHbxWbzAbpAaIPaLPbAIbAJbAKaLPbiFbALbAMbANaWDaWDaWDbAObAPbAQbARbASaIPaIPaIPaIPaLOaIPaLzbATaIPaIPbAUaIPbAVaIPbAWbxabAXbAYbAZbBabBbbxabBcbyubBdbyubzLbzMbzMbBebBfbBgbzLbhcbBhbvVbuBbBibBjbBkbBlbBmbBnbBobBpbrGbrGbBqbBrbAcbBsbBtbBubBvbBwbBxbAcbBybBzbBAbBBbBCbAhbtrbAibBDbBEbsBbsVbtPbBIbBJbBKbScbBLbTkbTlbTmbTlbTkbTnbScbxFbhIbBMbBNbBOblYaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoBaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaabzrbBPbBQbBRbBSbBTbBUbBVbBWbBXbBYbBZbCabCbbAGbCcbCdbxWbzAbCeaIPaIPaIPaIPaIPaIPbCfaIPbpAaIPaIPaIPaIPaIPbCgbChbCiaIPaIPaIPaIPaIPaIPaIPaLzaIPaIPaIPaIPaNhbAVbCjbjDbxabCkbClbCmbCnbCobxabCpbyubyvbCqbxabCrbCsbCtbCubCvbxabhcbyCbvVbvVbvVbvVbvVbrGbrGbrGbrGbrGbrGbCwbCxbCybAcbCzbCAbCBbCCbCDbCEbAcbCFbCGbCHbCIbCJbAhbtrbCKbCLbCMbtQbyybyybyZbzabzbbScbUtbUubCSbCTbCSbUvbUtbScbxFbhIbCUbzmbCVblYaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabzpbCWbCXbIYbCZbDabDbbDcbDdbDebDfbDdbDgbDhbDibDjbDkbxWbDlbDmbDnaKlbDnbDobDnbDnbDpbDnbDqbfQbDrbDsbfQbDtbDubDvbDwbDxbDybDzbDAbDAbDBbDAbDCbDDbDAbDEbDFbDGbDHbfQbDIbxabDJbDKbDLbxbbxbbxabxbbDMbxbbxabxabxabxabxabxabxabxabhcbhcbDNbDObDPbwZbDQbDRbAjbAkbAlbBFbDRbDWbDXbDYbAcbBsbDZbEabEbbEcbEdbAcbEebEfbEgbEhbEibAhbtrbEjbEkbxzbBGbBHbCNbCObCPbCQbScbUwbVxbVybErbVybVxbVzbScbEsbEtbEubzmbznblYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabzpbzpbzrbzrbzrbzrbzpbzpbEvbEwbACaTRbxWbxWbxWbxWbxWbxWbExbEyaITaITaITaITbEzbEzbEzbEzbEzbEzbEzbEzbEzbEzbEAaHpbEBbECbECbECbECbECbEDbECbECbECbECbEEbEFbEEaIUaKfbEGbxabEHbEIbEJbEKbELbxabEMbyubENbEObEPbEQbERbESbETbEUbEOblDbhcbhcbhcbhcbhcbsWbEVbCRbDSbCRbDTbDRbEZbCxbFabFabFabFabFabFabFabFabFabFbbFbbFbbFbbFbbFbbFcbFdbFebxzbxzbxzbxzbxzbxzbxzbScbScbScbScbScbScbScbScbScbxFbhIbFfbFgblYblYaadaadaadaaeaaeaaeaaeaaeaaeaaeaaeaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFhaaaaaaaaaaadaaaaaabzsbFibFjbFkbFlbFlbFmbFnbFobFpbFqbFrbEyaaaaaaaadaaabEzbFsbFtbFubFvbFwbFxbFybFzbEzbFAbFBbFCbECbFDbFEbFFbFGbFHbFIbFJbFKbFLbFMbFNbEEbEEbEEbEEbxabFObFPbFQbFRbFSbFTbFUbFVbFWbFXbFVbFVbFVbFYbyubFZbGabGbbGcbGcbGdbGebGfbGgbEVbIZbDVbElbEmbDRbEZbCxbFabGlbGlbGlbGmbGlbGlbGlbFabGnbGnbGobGnbGnbFbbGpbGqbGrbGsbGtbGubGvbGwbGxbGybGzbGAbGBbGCbGDbGEbGFbGGbGGbGHbGIbGtbGtblYaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabzsbzsbGJbGKbGLbDdbGMbGNbGObGObGPbGQbGRbGSaadbGTbGUbGVbGWbGXbFzbGYbFzbGZbFzbFzbFzbEzbHabHbbHcbECbHdbHebHfbHgbHhbHibHjbECbECbHkbHlbHmbHnbHobHpbHqbHrbHsbHtbHubHvbHwbHxbHybHzbHAbHBbHCbyubyubyubHDbjEbjEbjEbjEbjEbHEbHFbwYbEVbEnbEobCRbEpbDRbEZbCxbFabGlbGlbGlbGlbGlbGlbGlbFabHJbHKbHLbHMbHNbHObHPbHQbGrbHRbHSbHTbHTbHTbHTbHTbHTbHUbHVbHWbGDblYbHXbHYbHZbHZbIabIbbIcbGtatJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbIdbIebIdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIfbIfbIfbzsbIgbIhbEwbIibIhbIjbzsbEybIkbEybEybIlbImaaabInbIobIpbIqbFzbFzbIrbFzbIsbItbIubFzbEzbHabHbaTWbECbIvbIwbIxbIybIzbIAbIBbECbCwbICbIDbIEbIDbIFbIGbHAbIHbIIbIJbyubIKbxabILbIMbINbxabIObyubyubyubyubIPbjEbIQbIRbISbITbIUbIVbIWbIXbEqbCRbEWbEXbJbbJcbJdbFabGlbGlbJebGlbGlbGlbGlbFabJfbJgbJgbJhbJibJjbJkbJlbGrbJmbJnbHTbHTbHTbJobJpbJqbJqbJqbJqbJrbJsbJtbJubJvbJwbJxbJybJzbHSatJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbIebIdbJAbIdbIeaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIfbJBbJCbzsbJDbIhbJEbIhbJFbIjbzsbJGbJHbJIbEybIlbImaadbInbJJbJKbJLbJMbJNbJMbJMbJObJPbJQbJQbJRbJSbJTbJUbECbECbECbECbECbJVbJWbECbECbJXbJYbJZbKabJZbKbbKcbxabKdbKebKfbKgbKhbxabKibKjbKkbxabKlbKmbKnbKobKpbKqbjEbgzbKrbKsbKtbKsbKubKvbKwbEYbGhbGibGjbDRbEZbCxbFabFabKBbGlbGlbKCbKBbFabFabKDbKEbKFbKFbKGbFbbKHbKIbGrbKJbHSbHTbHTbKKbKLbKMbHTbKNbKObKPbKQbKRbKSbKTbKUbKVbKWbKXbKYbHSatJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbKZbIebLabLbbLcbIebKZaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLdbLebIhbIhbLfbJDbIhbLgbIhbIhbIjbzsbLhbJIbLibEybIlbImaaabInbLjbLkbLlbFzbFzbLmbFzbLnbLobLpbLqbEzbLrbLsbLtbLubLvbLvbLvbLvbLwbLxbLvbLvbLybLzbLAbLBbLCbLDbLEbFTbFTbFTbFTbFTbFTbFTbFTbFTbFTbLFbLFbLFbLFbLFbLFbLGbLHbjEbjEbjEbjEbLIbLJblxbDRbDRbDRbDRbDRbDRbEZbCxbFabLKbLLbLMbLNbLObLPbLQbLRbKDbKEbKFbKFbKGbFbbLSbLTbGrbLUbGtbLVbLWbLXbLYbLZbMabHTbHTbMbbGDbMcbMdbMebGtbMfbMgbMgbGtbGtaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadatJaadaadbIebIebMhbMibMibMibMjbIebIeaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLdbLebIhbIhbLfbJDbIhbLgbIhbIhbIjbzsbLhbJIbLibEybIlbImaaabInbLjbLkbLlbFzbFzbLmbFzbLnbLobLpbLqbEzbLrbLsbLtbLubLvbLvbLvbLvbLwbLxbLvbLvbLybLzbLAbLBbLCbLDbLEbFTbFTbFTbFTbFTbFTbFTbFTbFTbFTbLFbLFbLFbLFbLFbLFbLGbLHbjEbjEbjEbjEbLIbLJblxbDRbDRbDRbDRbDRbDRbEZbCxbFabLKbLLbLMbLNbLObLPbLQbLRbKDbKEcbXbKFbKGbFbbLSbLTbGrbLUbGtbLVbLWbLXbLYbLZbMabHTbHTbMbbGDbMcbMdbMebGtbMfbMgbMgbGtbGtaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadatJaadaadbIebIebMhbMibMibMibMjbIebIeaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIfbMkbMlbMmbMndJcbMobMpbMqbMrbzsbEybEybEybEybIlbMsaadbMtbGUbMubGWbMvbFzbMwbFzbFzbFzbMxbMybMzbMAbMBbMCbMDbMEbMEbMEbMEbMFbMEbMGbMHbMIbMJbMKbMLbMMbMNbMObMPbMQbMPbMPbMPbMPbMPbMPbMPbMPbMPbMPbMPbMPbMPbMRbMSbLHbMTbMUbMVbMWbIUbIVbMXbMYbMZbMZbNabNbbMJbMKbNcbFabNdbNebNfbNgbNhbNibNjbLRbLRbLRbLRbLRbLRbNkbNlbNmbNnbNobGtbGDbGDbGDbGDbNpbGDbNqbHTbHTbGDbNrbNsbNtbGtbNubNvbNwbNxbNyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNzbNAbNzbMibNBbMibNCbNDbIdaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIfbIfbIfbzsbzsbIfbIfbIfbzsbzsbzsbNEbEyaaabNFbNGbImaaaaaaaadaaabEzbNHbNIbNJbFzbNKbNLbNMbNNbEzbNObNPbNQbNRbNSbNTbNUbNVbNWbNSbNSbNSbNSbNSbNXbNYbNSbNSbNZbNSbOabNSbNSbNSbNSbNSbEEbEEbEEbEEbEEbEEbEEbEEbCxbEZbLHbObbOcbOdbOebKsbOfbOgbOhbOibOibOjbOibOibOkbOlbFabOmbOnbOobOnbOnbOnbOpbOqbOrbOsbOtbOubOvbOwbOxbKIbGrbOyaadbOzbOAbOBbOCbODbOCbOEbOFbOGbGDbOHbOIbOJbGtbGtbGtbGtbGtbGtaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadatJaadaadbIebIebOKbMibMibMibOLbIebIeaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaoBaoBaoBaadaaFaadaoBaadaaFaadbNFbJIbNFaadbNFbIlbImaadaadaadaadbEzbEzbEzbEzbEzbEzbEzbEzbEzbEzbOMbNPbONbOObNSbNTbNUbNVbNWbOPbOPbOQbORbOSbOTbOUbOVbOWbOXbOYbOZbPabPbbPcbPdbNSaadaadaadaadaadaadaadbEEbCxbPebPfbPfbPfbPfbPfbPgbPhbPibPfbPfbPfbPfbPfbPfbPebPjbPkbPlbPmbPnbPmbPobPmbPpbPqbPrbPqbPqbPqbPqbPsbPtbPubGrbOyaadbOzbPvbPwbPxbPybPzbPAbPBbPCbGDbPDbOIbPEbNrbPFbPGbPHbPIaadatJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbKZbIebPJbPKbPLbPMbKZaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaoBaoBaoBaadaaFaadaoBaadaaFaadbNFbJIbNFbNFbNFbIlbImaaaaaaaaaaadbPNbPObPObPPbPQbPRbPRbPSbPSbPNbHabNPbONbPTbNSbPUbPVbPVbPWbPXbOPbPYbPZbPdbQabQbbQcbQdbQebQfbPdbQgbPdbQhbQibQjaadbQkbQkbQkbQkbQkaadbEEbCxbQlbQmbQnbQobQpbPfbQqbQrbQsbPfbQtbQubQvbQubQtbQlbQwbQxbQybQzbQybQAbQBbQybQCbQybQDbQybQEbQybQybQFbQGbQHbQIbOyaadbOzbPvbQJbOCbQKbOCbQLbQMbQNbGDbQObQPbQQbQRbQSbQTbQUbPIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbIebIdbQVbIdbPMaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbEybEybEybEybEybEybEybEybEybEybEybEybNFbNFbNFbEybEybEybJIbJIbJIbQWbIlbImaaaaaaaaaaadbPNbQXbPPbPPbPPbQYbPRbPRbQZbPNbRabNPbRbbRcbRdbRebRfbRgbRhbRibRjbRfbRfbRfbRkbRlbRmbRnbRobRpbRqbRrbRsbRtbRubRvbRwbRxbRybRzbRAbQkaadbRBbCxbPebRCbQtbQtbRDbPfbREbRFbRGbPfbQubQtbQubRHbRIbRJbCxbFabRKbRLbRMbRLbRNbRObRPbOnbRQbRRbRSbRTbRUbLRbRVbRWbRVbRXbRXbGDbGDbGDbGDbRYbRZbSabSbbSbbScbScbScbSdbNrbSebSfbSgbPIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbIdbIebIdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEybShbJIbJIbJIbJIbSibSjbSkbJIbSlbSmbSnbSobJIbJIbQWbJIbJIbNFbNFbNFbNGbImaaaaadbSpbSqbSrbSsbSsbStbSsbSubSvbSwbSwbSxbSybNPbHbbSzbSAbSBbSCbSDbSEbSFbSGbSDbSHbSDbSIbSJbSKbOWbSLbSMbSNbSObSPbSQbSRbSSaadbSTbSUbRAbSVbQkaadbRBbCxbPebSWbSXbQtbSYbPfbSZbTabTbbPfbQtbQtbTcbQtbQtbPebCxbFabLRbLRbLRbLRbNkbTdbTebTfbNkbLRbLRbLRbLRbLRbTgbThbThbTibTjbTkbTlbTmbTlbTnbSbbTobTpbTqbTrbTsbScbTtbNrbSebNrbNrbNraadaadaadaaeaaeaaeaaeaaeaaeaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEybEybShbJIbSkbJIbEybJIbEybJIbTubTvbJIbJIbJIbTwbEybNFbNFbEyaaabNFbIlbImaaaaadbTxbTybTzbTAbTBbTCbTCbTDbTCbTCbTEbTFbTGbTHbHbbOObTIbTJbTKbPdbTLbTMbTNbTObTPbTQbTRbTSbTSbTTbTUbRqbTVbTWbTXbTYbTZbUabUbbRxbUcbRAbRAbQkaadbRBbCxbPebUdbUeaYmbPgbPfbPfbUfbPfbPfbUgbUgbUhbUgbUgbPebCxbFabUibUjbUjbUkbUlbOnbUmbUnbUobUpbGlbGlbGlbLRbUqbThbThbUrbUsbTkbUtbUubUvbUwbSbbUxbUybUzbUAbUBbScbUCbNrbSebNraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaebNFbUDbJIbJIbJIbUEbEybUFbEybUGbEybTvbJIbJIbUHbNEbEyaaaaadaaaaaabNFbIlbMsbEybEybMsbUIbPNbUJbUKbULbUMbUNbUObUPbUQbPNbURbUSbHbxYcbUTbUUbUVbPdbPdbUWbOPbUXbUYbUZbVabPdbPdbOWbVbbVcbVdbVcbVdbVebVdbVfaadbQkbQkbQkbQkbQkaadbEEbCxbPebQtbVgbVhbVibVjbVkbVlbVmbVnbQtbQtbQtbQtbVobPebCxbFavIdbGlbGlbVpbVqbOnbVrbOnbVsbVtbGlbGliiObLRbVubThbThbThbVvbVwbVxbVybVzbVAbSbbVBbUAbVCbUAbVDbScbVEbNrbSebNraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEybEybShbJIbJIbJIbVFbJIbTubVGbEybEybEybVHbEybEybEybNFbNFbNFbVIbVJbVKbVLbVMbGObVNbUIbPNbPNbPNbPNbPNbPNbPNbPNbPNbPNbVObVPbHbbWKgdUbVRbVSbTNbVTbTNbOPlvHbPdbPdbVabVUbQibQibVVbVWbVXbRrbVYbVZbWabRvbRwbRxbWbbWcbWcbQkaadbEEbCxbWdbWebWebWebWfbWgbQtbWhbVhbWibVhbVhbVhbVhbWjbPebCxbFabGlbGlbGlbWkbWlbUnbWmbOnbWnbWobUjbUjbWpbLRbWqbWrbThbThbWsbTkbWtbVzbVwbWubSbbWvbUAbWwbUAbUAbScbVEbNrbSebNraadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoBaoBaaeaadaadbWxaoBbEybEybEybEybEybEybEybEybEybEybJIbJIbJIbJIbJIbWybWzbWAbWAbWBbWCbWDbFnbFnbFnbFnbWEbWFbWFbWFbWFbWFbWGbWHbWHbWIbEybURbWJbHbbWKbWLbWMbWNbQibQibWObWPbQibQibWQbWRbWSbPdbWTbWUbWVbWWbPdbWXbWYbWZbSSaadbSTbXabXbbXcbQkaadbRBbXdbMPbMPbMPbXebPebXfbQtbXgbXhbXibXjbXkbXkbXkbXlbPebCxbFabLRbLRbLRbLRbXmbXnbVrbXobXmbLRbLRbLRbLRbLRbXpbXqbThbThbXrbXsbXsbXsbXsbXtbSbbXubXvbXwbXxbXybScbVEbNrbSebNraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXzbXAbXAbXAbXAbXBbXCbXCbXDbXEbXFbXGbXHbXIbXJbXKbEybXLbEybEybEybEybEybXMbEybEybMsbNGbXNbXNbXNbXNbXNbXNbXNbXNbXObXObXObXObXObNEbXPbEybURbWJbHbqyMbXQbXRbXSbXTbTSbXUbXVoQAbTSbXWbXXbXYbXZbYabYbbYccaqbPdbWXbYebYfbUabUbbRxbYgbWcbWcbQkaadbRBbYhbEEbEEbEEbCxbPebYibQtbQtbYjbYkbYlbQpbXkbQpbYmbPebCxbFabUibUjbUjbYnbUlbOnbYobUnbYpbYqbGlbGlbGlbLRbYrbYsbYtbThbYubThbThbThbYvbYwbYxbYybYzbYAbYBbYCbScbVEbNrbSebNraadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoBaadaaeaoBaadaoBaoBbNFbNFbNFbJIbYDbYEbYFbYGbYHbEybJIbEybYIbYJbYIbYKbYLbYIbYMbMsbNGbXNbYNbYObYPbYQbYRbYSbYNbYTbYUbYVbYWbXObXObXPbEybYXbWJbHbbYYbYZbZabZabZbbZcbZcbZcbZcbZcbZdbZebOPbOPbOPbZfbPdbWVbZgbZhbZibZjbZkbZlbQkbQkbQkbQkbQkaadbRBbYhbZmbCwbCwbCxbQlbZnbZobZpbZqbZrbZsbZtbXkbZtbZubPebCxbFavIdbZvbGlbZwbVqbOnbVrbOnbVsbZxbGlbZviiObLRbZybZzbZAbZBbZCbZDbZEbZEbZFbZGbZHbZIbYzbZJbZKbZLbScbVEbNrbSebNrbNrbNraaeaaeaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoBaadaaeaaeaaeaaeaaebZMbJIbZNbJIbZObZPbYEbZQbJIbZRbJIbEybYIbZSbYIbZTbZUbYIbZVbMsbNGbXNbYNbZWbZXbZYbZZcaabYNcabcaccadcaecafbXObXPbEybURbWJbHbbNScahbNScaicajbZccakcalcambZccanbVacaobOPcapcaqcarcascatcaubVZcavbRvcawbRxcaxcaycazbQkaadbEEbYhbEEcaAcaBbCxbPecaCcaDcaEcaFcaGcaDcaHbXkcaHrenbRJbCxbFabGlbGlbGlcaIcaJbUnbWmbOnbWncaKbUjbUjbWpbFacaLcaMcaNcaOcaLcaLcaPcaQcaRcaScaTcaUcaVcaWcaXcaYbScbVEbNrcaZbNrcbabNraadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoBcbbaoBaoBaoBaadaadbNFbNFbNFcbccbdcbecbfcbgbJIbEybEycbhbYIcbicbjbYIcbkcblbYIbMsbNGbXNcbmcbncbobZYcbpcbmcbmcabcbqcbrcbscbtbXObXPbEybURbWJaYncbudlKcbwcbwcbxcbycbzcbAcbBbZcbPdbVacbCcbDcapcbEcarcascbFcbGbVZcbHcbIcbJcbKcbLcbMcbNbQkaadbEEbYhbEEbJZbJZbCxbPebPfcbOcbPbPfcbQbPfbPfbPfbPfbPfbPebCxbFabLRbLRbLRbLRbXmcbRbVrcbSbXmbLRbLRbLRbLRbFabVwcbTbVwcbUbVwcaLcaPcaQcbVcbWcbXcbYcbZccabUAccbbScbVEbNrcccccdbQSbPIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaadaadaadbNFcceccfccfccgbYHbNEbEycchccibYIccjcckcclccjccjccmbImbNGbXNcbmcbmccnccoccpccqccrccscctccuccvccwbXObXPbEyccxccycczcbuccAccBccCccDccEccFccGccHbZcccIccJcaobOPcapccKcarcbEccLbWXccMccNbUaccOccPccQcaycaybQkaadbRBbYhccRbEEccSbCxccTbWebWeccUbPfccVccWccXbEEccYccZbEZbCxbFabUibUjbUjcdabUlbOnbYobUncdbcdcbGlbGlbGlbFacddbVwbVwbVwbVwcaLcdecdecdfcdgbYxcdhbUAcdibUAbVDbScbVEbNrcdjbQTcdkbPIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQaaQaaQaaQaaQaaQaaQaaQaaQaaYaaQaaQaaQaaQaaQaaaaaabEybEybEybEybEybEycdlbEybEybEybEycdmcdnbYIccjcbjcdoccjccjccmbImbNGbXNcdpcdqcdrcdsbYNbYNapccduaWYcdwcdxcdybXOcdzcdAcdBcdCcdDcbucdEcdFcdGcdHcdIcdJcdKcdLcdMbRpcdNbOPbOPbOPcdObPdcdPcdQbWXbWYbPdbSScdRcdSbQkbQkbQkbQkaadbRBcdTcdUbEEcdVcdWcdXbMPcdYcdZbEEceacebcecbEEcedbOibOkceebFavIdbGlbGlcefbVqbOnbVrbOnbVscegbGlbGliiObFacehbVwceicejcekcelcemcenceocdgbSbcepceqbUzbUAcerbSccesbNrcetceubSebPIaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQaaaaadaaaaadaaaaadaaaacfaaaaadaaaaadaaaaaQaadaadbEycevcewbJIcexbJIbJIbJIbJIbNEbEyceycezceAccjcbjbYIceBceCbYIbImbNGbXNceDceEbYNbYNbYNcbmceFceGceHceIceJceKbXObEybEyceLceMceNcbucbuceOcePceQceRceRceRceRbZcbPdceSceTceUceVceWceXceYceZcaubVZcfabRvcawccPcfbcfccfcbQkaadbRBbCwbYhbEEbEEcfdbBrbEEcfecffbEEbEEcfgbEEbEEcffcfhbJccfibFabGlbGlbJecfjcfkbUncflbOnbWncfmbUjbUjbWpbFabVwbVwcfnbVwbVwcaLcdecdecfocfpbSbcfqcfrcfsbUAcftbScbVEbNrbNrbNrbSebNraadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQaaacfucfvcfwaaacfucfvcfwaaacfucfvcfwaaaaaQaaaaaabEycfxbJIcfybEybEycfzbEybEybEybEybZScfAbZSbZSbYIcbkcbkbYIbYIbImbNGbXNcbmcfBcfCbYNcfDcbmcbmcabcfEcaecfFcfGcfHcfIcfJcfKcfLcfMcfNcfOcfPcfQcfRcfScfTcfUcfVcfWcfXcfYcfZbTScgacgbbVUcgcbVYbTVbWYcgdbSScdRcgecgfcggcghbQkaadbEEbEEbYhcgicgjcfdcgkbEEcfecglbOicgmcgncgobOicgpcgqbNtcgrbFabFabFabFabFabFacgscgtcgubFabFabFabFabFabFacaLcaLcaLcaLcaLcaLcgvcgvcgwcgxbScbScbScbScbScbScbScbVEbNrcgycgzbSebNraadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQaadcfucgAcfwaaacfucgAcfwaaacfucgAcfwaadaadaaaaaabEycgBbJIcgCbEybUGbJIcgDbSnbVGbEycgEcgFcgGbZScgHccjccjccmbYIbMsbNGbXNbYNcgIcgJbYNcgKcgLbYNcabcgMcgNcgOcgPcgQcgRcgScgTcgUcgVcgWcgXcgYcgZchachbchccePchdcfWchebPdceSbVUchfchgchhchichjbPcchkchlbUaccOccPchmcfccfcbQkaadbEEbCwchnchochpchqchrbEEchschtchucgqbEZcgqcfhchvchwbNtchxbFachychzchzchAchBchCcgtchDbFaaadaadaadaadbNrchEbPGchFchGchGcaLchHchHcgwcdgcaLchIbQObQObQOchJbNrbVEbNrchKbQObSebNrbNrbNraaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQaaacfucgAcfwaadcfucgAcfwaadcfucgAcfwaaaaadaadaadbEychLcgCchMbEychNbWAchOchPbUHbEychQcgFchRbZScgHccjbJaccmchTbMsbNGbXNbYNchUchVchWchXchYbYNchZciacibciccidbXOciecifcigcihciicijcikcilcimceQcinciocipciqcircisbPdceScitciubPdbPdcitcitcitbWYcivciwcdRcdSbQkbQkbQkbQkaadbEEcdVcixciycizciAciBbEEbEEciCciDciEbEZciFciGbEEbEEbNtchxbFaciHciIciIciJciKciLciMciNbFaaadaaaaaaaadbNrbQOciOciPciQciRcaLciSciScgwcdgcaLbNrbNrciTciUciVciWciXccdccdccdciYciZcjacjbaaeaaeaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcfucgAcfwaaacfucgAcfwaaacfucgAcfwaadaadaaaaaabEycjccjdcjebEycjfcjgbEycjhbEybEycjicjjcjkbZSbYIceCceCbYIcjlbMsbNGbXNbXNbXNbXNbXNbXNbXNbXNbXObXObXObXObXObXObEycjmbEybEycjncjncjncjocjpcjqcjncjrcjscjtcfWbPdbSOcjucitceWbTQbPdbQhbWScitbWYcitbNScjvcjwbZlaadaadaadaadcjxcjycjzcjAcjBcjCcjCcjCcjDcjEcjFciEcjGciEciEbEEcjHbNtchxbFabFacjIcjIbFabFacjIcjJcjIbFaaaaaaaaaaaaabNrbNrcjKcjLbNrbNrcaLcaLcaLcjMcjNcaLchJbNrcjObSecjPbNrcesbNrbNrcjQbNrbNrbNrbNraaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQaaQaaQaadaaacfucgAcfwaaacfucgAcfwaaacfucgAcfwaaaaadaaaaaacjRcjScjScjScjSbEybEycjTcjUbEybEybEybEybEybEybNFbNFbNFbNFbEycjVcjWbVJcjXcjYcjZcjZcjZcjZcjZcjZcjZcjZcjZcjZcjZcjZckabJIcjfcjnckbckcckdckeckfcjnckgckhckicfWckjckkbTXcklckmcknckocklckocklckpcitbNSckqckrckscktckuckvcjyckwckxckyckzckAckBckCcjCckDbCwckEckFckGckHckIbNbbNbckJckKbNraaaaaaaaaaaaaaaaadckLaadaaaaaaaaaaaaaaabNrckMckNckOckOckPciWckQckRckSckTbNrbNrbNrbNrckUbNrbNrbVEbNrckVckWbQObNraaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQaaaaadaaaaaaaaackXaaaaaaaaackXaaaaaaaaackXaaaaaaaadcjRcjRcjRckYckZclaclbclcbJIcldcleclfbWAbWAbWAbWAbWAbWAbWAbWAbWAbWAbWAclgbWHclhclicfWcfWcfWcfWcfWcfWcfWcfWcfWcfWcfWcfWcfWcfWcfWcjncjncljclkcllclmclncloclpclqcfWckjclrclscltcluclvclwclxbPdclyclzclAclBclCclDclEclFclGclHclIclJclKclLclMclNclOclPcjCbCwbCwciEciEbBrciEcgqbCwbCwbNtclQbNrbNrbPIbPIbNrbNrbPIclRbPIbNrbNrbPIbPIbPIbNrclSclTclUclVclWclXclXclXclYclZcmacmbcmccmdcmecmfcmgcmhbNrcgzbQOcmibNraaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaoBaoBaoBaadaaFaadaoBaadaaFaadbNFbJIbNFbNFbNFbIlbImaaaaaaaaaaadbPNbPObPObPPbPQbPRbPRbPSbPSbPNbHabNPbONbPTbNSbPUbPVbPVbPWbPXbOPbPYbPZbPdbQabQbbQcbQdbQebQfbPdbQgbPdbQhbQibQjaadbQkbQkbQkbQkbQkaadbEEbCxbQlbQmbQnbQobQpbPfbQqbQrbQsbPfbQtbQubQvbQubQtbQlbQwbQxbXnbQzcflbQAbQBbQybQCbQybQDbQybQEbQybQybQFbQGbQHbQIbOyaadbOzbPvbQJbOCbQKbOCbQLbQMbQNbGDbQObQPbQQbQRbQSbQTbQUbPIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbIebIdbQVbIdbPMaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbEybEybEybEybEybEybEybEybEybEybEybEybNFbNFbNFbEybEybEybJIbJIbJIbQWbIlbImaaaaaaaaaaadbPNbQXbPPbPPbPPbQYbPRbPRbQZbPNbRabNPbRbbRcbRdbRebRfbRgbRhbRibRjbRfbRfbRfbRkbRlbRmbRnbRobRpbRqbRrbRsbRtbRubRvbRwbRxbRybRzbRAbQkaadbRBbCxbPebRCbQtbQtbRDbPfbREbRFbRGbPfbQubQtbQubRHbRIbRJbCxbFabRKbRLbRMbRLbRNbRObRPbOnbRQbRRbRSbRTbRUbLRbRVbRWbRVbRXbRXbGDbGDbGDbGDbRYbRZbSbbSbbSbbGDbGDbGDbSdbNrbSebSfbSgbPIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbIdbIebIdaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEybShbJIbJIbJIbJIbSibSjbSkbJIbSlbSmbSnbSobJIbJIbQWbJIbJIbNFbNFbNFbNGbImaaaaadbSpbSqbSrbSsbSsbStbSsbSubSvbSwbSwbSxbSybNPbHbbSzbSAbSBbSCbSDbSEbSFbSGbSDbSHbSDbSIbSJbSKbOWbSLbSMbSNbSObSPbSQbSRbSSaadbSTbSUbRAbSVbQkaadbRBbCxbPebSWbSXbQtbSYbPfbSZbTabTbbPfbQtbQtbTcbQtbQtbPebCxbFabLRbLRbLRbLRbLRbTdbTebTfbNkbLRbLRbLRbLRbLRbTgbThbThbTibTjcgtlVacgumVNwLYbGIbWvbTrbTqbTrbTsbGDbTtbNrbSebNrbNrbNraadaadaadaaeaaeaaeaaeaaeaaeaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEybEybShbJIbSkbJIbEybJIbEybJIbTubTvbJIbJIbJIbTwbEybNFbNFbEyaaabNFbIlbImaaaaadbTxbTybTzbTAbTBbTCbTCbTDbTCbTCbTEbTFbTGbTHbHbbOObTIbTJbTKbPdbTLbTMbTNbTObTPbTQbTRbTSbTSbTTbTUbRqbTVbTWbTXbTYbTZbUabUbbRxbUcbRAbRAbQkaadbRBbCxbPebUdbUeaYmbPgbPfbPfbUfbPfbPfbUgbUgbUhbUgbUgbPebCxbFachychzchybUkchBbOnbUmbUnbUobUpbGlbGlbGlbLRbUqbThbThbUrbUschCclRclRpdgbVAbGIbUxbUybUzbUAbUBbGDbUCbNrbSebNraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaebNFbUDbJIbJIbJIbUEbEybUFbEybUGbEybTvbJIbJIbUHbNEbEyaaaaadaaaaaabNFbIlbMsbEybEybMsbUIbPNbUJbUKbULbUMbUNbUObUPbUQbPNbURbUSbHbxYcbUTbUUbUVbPdbPdbUWbOPbUXbUYbUZbVabPdbPdbOWbVbbVcbVdbVcbVdbVebVdbVfaadbQkbQkbQkbQkbQkaadbEEbCxbPebQtbVgbVhbVibVjbVkbVlbVmbVnbQtbQtbQtbQtbVobPebCxbFaciKciLciMbVpciNbOnbVrbOnbVsbVtbGlbGliiObLRbVubThbThbThbVvcjIclRclRpdgbVAbGIbVBbWtbVCbWubVDbGDbVEbNrbSebNraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEybEybShbJIbJIbJIbVFbJIbTubVGbEybEybEybVHbEybEybEybNFbNFbNFbVIbVJbVKbVLbVMbGObVNbUIbPNbPNbPNbPNbPNbPNbPNbPNbPNbPNbVObVPbHbbWKgdUbVRbVSbTNbVTbTNbOPlvHbPdbPdbVabVUbQibQibVVbVWbVXbRrbVYbVZbWabRvbRwbRxbWbbWcbWcbQkaadbEEbCxbWdbWebWebWebWfbWgbQtbWhbVhbWibVhbVhbVhbVhbWjbPebCxbFachyopzchybWkbWlbOnbVrbOnbWnbWobUjbUjbWpbLRbWqbWrbThbThbWspdgpdgpdgpdgbVAbGIbWvcbWbWwbVBsWKbGDbVEbNrbSebNraadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoBaoBaaeaadaadbWxaoBbEybEybEybEybEybEybEybEybEybEybJIbJIbJIbJIbJIbWybWzbWAbWAbWBbWCbWDbFnbFnbFnbFnbWEbWFbWFbWFbWFbWFbWGbWHbWHbWIbEybURbWJbHbbWKbWLbWMbWNbQibQibWObWPbQibQibWQbWRbWSbPdbWTbWUbWVbWWbPdbWXbWYbWZbSSaadbSTbXabXbbXcbQkaadbRBbXdbMPbMPbMPbXebPebXfbQtbXgbXhbXibXjbXkbXkbXkbXlbPebCxbFabLRbLRbLRbLRbNkbOnbVrbXobXmbLRbLRbLRbLRbLRbXpbXqbThbThbXrbXsbXsbXsbXsbXthOjbScbScbScbScbScbScbVEbNrbSebNraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXzbXAbXAbXAbXAbXBbXCbXCbXDbXEbXFbXGbXHbXIbXJbXKbEybXLbEybEybEybEybEybXMbEybEybMsbNGbXNbXNbXNbXNbXNbXNbXNbXNbXObXObXObXObXObNEbXPbEybURbWJbHbqyMbXQbXRbXSbXTbTSbXUbXVoQAbTSbXWbXXbXYbXZbYabYbbYccaqbPdbWXbYebYfbUabUbbRxbYgbWcbWcbQkaadbRBbYhbEEbEEbEEbCxbPebYibQtbQtbYjbYkbYlbQpbXkbQpbYmbPebCxbFabUibUjbUjbYnbUlbOnbYobUnbYpbYqbGlbGlbGlbLRbYrbYsbYtbThbYubThbThbThbYvbYwbYxbYybYzbYAbYBbYCdhWbVEbNrbSebNraadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoBaadaaeaoBaadaoBaoBbNFbNFbNFbJIbYDbYEbYFbYGbYHbEybJIbEybYIbYJbYIbYKbYLbYIbYMbMsbNGbXNbYNbYObYPbYQbYRbYSbYNbYTbYUbYVbYWbXObXObXPbEybYXbWJbHbbYYbYZbZabZabZbbZcbZcbZcbZcbZcbZdbZebOPbOPbOPbZfbPdbWVbZgbZhbZibZjbZkbZlbQkbQkbQkbQkbQkaadbRBbYhbZmbCwbCwbCxbQlbZnbZobZpbZqbZrbZsbZtbXkbZtbZubPebCxbFavIdbGlbGlbZwbVqbOnbVrbOnbVsbZxbGlbZviiObLRbZybZzbZAbZBbZCbZDbZEbZEbZFbZGbZHbZIhbpbZJbZKbZLdhWbVEbNrbSebNrbNrbNraaeaaeaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoBaadaaeaaeaaeaaeaaebZMbJIbZNbJIbZObZPbYEbZQbJIbZRbJIbEybYIbZSbYIbZTbZUbYIbZVbMsbNGbXNbYNbZWbZXbZYbZZcaabYNcabcaccadcaecafbXObXPbEybURbWJbHbbNScahbNScaicajbZccakcalcambZccanbVacaobOPcapcaqcarcascatcaubVZcavbRvcawbRxcaxcaycazbQkaadbEEbYhbEEcaAcaBbCxbPecaCcaDcaEcaFcaGcaDcaHbXkcaHrenbRJbCxbFabGlbGlbGlcaIcaJbUnbWmbOnbWncaKbUjbUjbWpbFacaLcaMcaNcaOcaLcaLcaPcaQcaRcaScaTcaUcaVcaWdhWcaYdhWbVEbNrcaZbNrcbabNraadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoBcbbaoBaoBaoBaadaadbNFbNFbNFcbccbdcbecbfcbgbJIbEybEycbhbYIcbicbjbYIcbkcblbYIbMsbNGbXNcbmcbncbobZYcbpcbmcbmcabcbqcbrcbscbtbXObXPbEybURbWJaYncbudlKcbwcbwcbxcbycbzcbAcbBbZcbPdbVacbCcbDcapcbEcarcascbFcbGbVZcbHcbIcbJcbKcbLcbMcbNbQkaadbEEbYhbEEbJZbJZbCxbPebPfcbOcbPbPfcbQbPfbPfbPfbPfbPfbPebCxbFabLRbLRbLRbLRbXmcbRbVrcbSbXmbLRbLRbLRbLRbFabVwcbTbVwcbUbVwcaLcaPcaQcbVcdgdhWccacbZccadhWccbdhWbVEbNrcccccdbQSbPIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaadaadaadbNFcceccfccfccgbYHbNEbEycchccibYIccjcckcclccjccjccmbImbNGbXNcbmcbmccnccoccpccqccrccscctccuccvccwbXObXPbEyccxccycczcbuccAccBccCccDccEccFccGccHbZcccIccJcaobOPcapccKcarcbEccLbWXccMccNbUaccOccPccQcaycaybQkaadbRBbYhccRbEEccSbCxccTbWebWeccUbPfccVccWccXbEEccYccZbEZbCxbFabUibUjbUjcdabUlbOnbYobUncdbcdcbGlbGlbGlbFacddbVwbVwbVwbVwcaLcdecdecdfcdgdhWcftcftcftcftcftdhWbVEbNrcdjbQTcdkbPIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQaaQaaQaaQaaQaaQaaQaaQaaQaaYaaQaaQaaQaaQaaQaaaaaabEybEybEybEybEybEycdlbEybEybEybEycdmcdnbYIccjcbjcdoccjccjccmbImbNGbXNcdpcdqcdrcdsbYNbYNapccduaWYcdwcdxcdybXOcdzcdAcdBcdCcdDcbucdEcdFcdGcdHcdIcdJcdKcdLcdMbRpcdNbOPbOPbOPcdObPdcdPcdQbWXbWYbPdbSScdRcdSbQkbQkbQkbQkaadbRBcdTcdUbEEcdVcdWcdXbMPcdYcdZbEEceacebcecbEEcedbOibOkceebFavIdbZvbGlcefbVqbOnbVrbOnbVscegbGlbGliiObFacehbVwceicejcekcelcemcenceocdgdhWcftceqwHAcftcftdhWcesbNrcetceubSebPIaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQaaaaadaaaaadaaaaadaaaacfaaaaadaaaaadaaaaaQaadaadbEycevcewbJIcexbJIbJIbJIbJIbNEbEyceycezceAccjcbjbYIceBceCbYIbImbNGbXNceDceEbYNbYNbYNcbmceFceGceHceIceJceKbXObEybEyceLceMceNcbucbuceOcePceQceRceRceRceRbZcbPdceSceTceUceVceWceXceYceZcaubVZcfabRvcawccPcfbcfccfcbQkaadbRBbCwbYhbEEbEEcfdbBrbEEcfecffbEEbEEcfgbEEbEEcffcfhbJccfibFabGlbGlbGlcfjcfkbUnbWmbOnbWncfmbUjbUjbWpbFabVwbVwcfnbVwbVwcaLcdecdecfocfpdhWcftcftcfscftcftdhWbVEbNrbNrbNrbSebNraadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQaaacfucfvcfwaaacfucfvcfwaaacfucfvcfwaaaaaQaaaaaabEycfxbJIcfybEybEycfzbEybEybEybEybZScfAbZSbZSbYIcbkcbkbYIbYIbImbNGbXNcbmcfBcfCbYNcfDcbmcbmcabcfEcaecfFcfGcfHcfIcfJcfKcfLcfMcfNcfOcfPcfQcfRcfScfTcfUcfVcfWcfXcfYcfZbTScgacgbbVUcgcbVYbTVbWYcgdbSScdRcgecgfcggcghbQkaadbEEbEEbYhcgicgjcfdcgkbEEcfecglbOicgmcgncgobOicgpcgqbNtcgrbFabLRbLRbLRbLRbXmcgsbVrbOnbXmbLRbLRbLRbLRbFacaLcaLcaLcaLcaLcaLcgvcgvcgwcgxdhWdhWdhWdhWdhWdhWdhWbVEbNrcgycgzbSebNraadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQaadcfucgAcfwaaacfucgAcfwaaacfucgAcfwaadaadaaaaaabEycgBbJIcgCbEybUGbJIcgDbSnbVGbEycgEcgFcgGbZScgHccjccjccmbYIbMsbNGbXNbYNcgIcgJbYNcgKcgLbYNcabcgMcgNcgOcgPcgQcgRcgScgTcgUcgVcgWcgXcgYcgZchachbchccePchdcfWchebPdceSbVUchfchgchhchichjbPcchkchlbUaccOccPchmcfccfcbQkaadbEEbCwchnchochpchqchrbEEchschtchucgqbEZcgqcfhchvchwbNtchxbFabUibUjbUjchAbUlbOnuZGbUnhBRnMmpNDpNDpNDizlchEbPGchFchGchGcaLchHchHcgwcdgcaLchIbQObQObQOchJbNrbVEbNrchKbQObSebNrbNrbNraaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQaaacfucgAcfwaadcfucgAcfwaadcfucgAcfwaaaaadaadaadbEychLcgCchMbEychNbWAchOchPbUHbEychQcgFchRbZScgHccjbJaccmchTbMsbNGbXNbYNchUchVchWchXchYbYNchZciacibciccidbXOciecifcigcihciicijcikcilcimceQcinciocipciqcircisbPdceScitciubPdbPdcitcitcitbWYcivciwcdRcdSbQkbQkbQkbQkaadbEEcdVcixciycizciAciBbEEbEEciCciDciEbEZciFciGbEEbEEbNtchxbFavIdbGlbGlciJbVqbOnbVrbOnbVsvgRpNDpNDxSoizlbQOciOciPciQciRcaLciSciScgwcdgcaLbNrbNrciTciUciVciWciXccdccdccdciYciZcjacjbaaeaaeaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcfucgAcfwaaacfucgAcfwaaacfucgAcfwaadaadaaaaaabEycjccjdcjebEycjfcjgbEycjhbEybEycjicjjcjkbZSbYIceCceCbYIcjlbMsbNGbXNbXNbXNbXNbXNbXNbXNbXNbXObXObXObXObXObXObEycjmbEybEycjncjncjncjocjpcjqcjncjrcjscjtcfWbPdbSOcjucitceWbTQbPdbQhbWScitbWYcitbNScjvcjwbZlaadaadaadaadcjxcjycjzcjAcjBcjCcjCcjCcjDcjEcjFciEcjGciEciEbEEcjHbNtchxbFabGlbGlbJesXbnwVbUncjJbOnbWnsiWdxAdxAdjLizlbNrcjKcjLbNrbNrcaLcaLcaLcjMcjNcaLchJbNrcjObSecjPbNrcesbNrbNrcjQbNrbNrbNrbNraaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQaaQaaQaadaaacfucgAcfwaaacfucgAcfwaaacfucgAcfwaaaaadaaaaaacjRcjScjScjScjSbEybEycjTcjUbEybEybEybEybEybEybNFbNFbNFbNFbEycjVcjWbVJcjXcjYcjZcjZcjZcjZcjZcjZcjZcjZcjZcjZcjZcjZckabJIcjfcjnckbckcckdckeckfcjnckgckhckicfWckjckkbTXcklckmcknckocklckocklckpcitbNSckqckrckscktckuckvcjyckwckxckyckzckAckBckCcjCckDbCwckEckFckGckHckIbNbbNbckJckKbFabFabFabFabFabFaoHrckLbFabFaizlizlizlizlizlckMckNckOckOckPciWckQckRckSckTbNrbNrbNrbNrckUbNrbNrbVEbNrckVckWbQObNraaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQaaaaadaaaaaaaaackXaaaaaaaaackXaaaaaaaaackXaaaaaaaadcjRcjRcjRckYckZclaclbclcbJIcldcleclfbWAbWAbWAbWAbWAbWAbWAbWAbWAbWAbWAclgbWHclhclicfWcfWcfWcfWcfWcfWcfWcfWcfWcfWcfWcfWcfWcfWcfWcjncjncljclkcllclmclncloclpclqcfWckjclrclscltcluclvclwclxbPdclyclzclAclBclCclDclEclFclGclHclIclJclKclLclMclNclOclPcjCbCwbCwciEciEbBrciEcgqbCwbCwbNtclQbQObQOchFbQObQObQObQOcrZbQObQOchFbQObQObQObNrclSclTclUclVclWclXclXclXclYclZcmacmbcmccmdcmecmfcmgcmhbNrcgzbQOcmibNraaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQaadcmjcmkcmkcmlcmmcmmcmmcmmcmmcmmcmmcmmcmmcmmcmmcmncmocmpcmqcmrcmscmtcmubWAbWAcmvbSnbEybNFbNFbNFbNFbNFbNFbNFbNFbNFbEybEycmwcmxcmycmzcfWcmAcmAcmBcfWcmCcmDcmEcmFcmGcmHcmCcmIcmJcmKcjncmLcmMcmNbKxcmPcmQcmRcmScmTcfWbNScmUbOWcmVcmWcmXbOWcmVbOWbSSbOWcmYbNScmZcmZcnacnbcnccndcjCcnecnfcngcnhcnicnjcnkcjCcnlbCwcgqcgqcnmciEcgqbCwcnnbNtcnocnpcnpcnpcnpcnpcnqcnpcnrckOckOckOckOckOckOcnscntbPEbNrcnucdkbNrbNrbPIbPIbNrbNrcnvbSecnwclUcnxcnycnzbNrbNrbNrbNrbNraaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQaaaaadaaaaaaaaacnAaaaaaaaaacnAaaaaaaaaacnAaaaaaaaadcjRcjRcjRcnBcnCcnDcjSbJIbJIbJIbJIbEyaaaaaaaadaaaaaaaadaaaaaaaadaaabEycnEbEycnFcnGcfWcnHcnIcnIcnJcnKcnLcnMcnNcnOcnPcnQcnRcnScnTcjncnUcmMcnVcnWcnXcjncnYcnZcoacfWaadcobaadcoccodcobaadcocaadcoeaadcoeaadaadaoBcdRaoBaadcoccjCcofcogclLcohcoicojcokcolcomconcoocgqbEZcgqcopcfhchvcoqcorcorcorcorcorcorcorcoscotcorcorcorcorcorcorcoucovcowbNrcoxbSebNraaaaaaaaaaaabNrbQObSecoycozcozcoAcoBcozaaaaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQaaQaaQaadaaacfucoCcfwaaacfucoCcfwaaacfucoCcfwaaaaadaaaaaacjRcjScjScjScjScoDbNEbJIbJIbEybEybNFcoEcoEcoEcoEcoEcoEcoEaadbEybEybEycoFbUIcfWcoGcoHcnIcnJcnKcoIcoJcoKcoLcoMcoNcoOcoPcoQcjncoRcoScoTcoUcoVcjncoWcoXcfWcfWbQkcoYbSTcoYbQkcoYbSTcoYbQkcoZbSTcpabQkaoBaoBcdRaoBaoBcoccpbcpccpdcpecpfcpgcphcpicjAcpjciEciEciEcpkciEciEciEbEEbEEbNrbNrbPIbPIbPIbNrbNrbPIbPIbPIbNrbNrbPIbPIbPIbNrcplbNrbNrcpmbSebNrbNrbPIbPIbNrbNrbQObSecpncozcpocppcpqcozaaaaaaaadaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcfucoCcfwaaacfucoCcfwaaacfucoCcfwaadaadaadaaaaaaaaaaaaaaebEybEybEycprbJIbEycprbLicoEcpscptcpucptcpvcoEaaabEybUHbJIcpwbUIcfWcpxcpxcpycfWcmCcpzcpAcpBcpCcpDcmCcpEcpFcpEcjncjncjncpGcpHcpIcjncpJcpKcpLcfWbQkcpMcpNcpObQkcpPcpQcpRbQkcpScpTcpUbQkaoBaoBcdRaoBaoBcoccjCcpVcpWcpXcpYcpZcqacqbcjAcqccqdcqecqfcqgcqhcgqcgqbCwcqibCwbRBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabNrcqjchJbNrcqkcccccdciWccdccdccdccdcqlcqmcqncozcqocqpcqqcozaadaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoBaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQaaacfucoCcfwaadcfucoCcfwaadcfucoCcfwaaaaadaadaadaaaaaaaaaaaecqrcqscqtbJIbJIbVFbJIcqucoEcqvcqwcqxcqycqzcoEaaabEycjgbJIcpwbUIcfWcpxcpxcpycfWcmCcqAcqBcqCcqDcqEcmCcqBcqBcqBcfWcqFcqGcqHcqIcqJcqKcqLcqMaZHcfWbQkcqNcqOcqNbQkcqPcqQcqPbQkcqRcqScqTbQkaadaadcdRaadaadcoccjCcjCcjCcqUcqVcqWcqXcqYcqZcqccracgqcrbcrccrdchwcgqcrebEEbCwbRBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabNrcrfckWbNrcrgcrhcrhcricrhclUclUclUcrjcrjcrkcozcrlcrmcrncozaadaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQaadcfucoCcfwaaacfucoCcfwaaacfucoCcfwaadaadaaaaadaadaaaaaaaaebEybEybEybEybJIbEybEybEycoEcrocrpcrqcrrcrocoEaadbEycfWcrscrtcrucfWcpxcpycpycfWcrvcrwcqHcqIcrxcrycrzcrAcrAcrAcrBcrCcrDcrDcrDcrEcrFcrGclpcrHcfWbQkcqNcrIcqNbQkcqPcrJcqPbQkcqTcrKcqTbQkaadaadcdRaoBaoBcrLcrMaoBaoBcrNcrOcrPcrQcrRcrSbCwcrTcrUbJccrVcrWcfhcrXcrYbEEcqibRBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabNrcrZbQObNrbNrbNrbNrbNrbQObNraadaaaaaaaaaaadcsacsacsbcsacsaaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYaaacfucsccfwaaacfucsccfwaaacfucsccfwaaaaaQaaaaaaaadaadaaaaaaaaaaaaaaabNFbJIbNFaaaaaacoEcsdcqwcsecqycsfcoEcoEcoEcfWcsgcrtcshcfWcfWcfWcfWcfWcsicsjcrFcrFcrxcqMcrFcskcrFcslcrFcrFcrFcrFcrFcsmcrFcrxcqMcsncfWbQkbQkbQkbQkbQkbQkbQkbQkbQkbQkbQkbQkbQkaadaoBcdRaoBaoBaoBcocaoBaoBcsocspcqYcsrcqYcspbEEcsschvcstcsuchvcsvbEEbEEbEEaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbNrcswbQObQObQObQObQObQObQObNraadaaaaaaaaaaadaaacsacsxcsaaaaaadaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcfucoCcfwaaacfucoCcfwaaacfucoCcfwaadaadaadaaaaaaaaaaaaaaebEybEybEycprbJIbEycprbLicoEcpscptcpucptcpvcoEaaabEybUHbJIcpwbUIcfWcpxcpxcpycfWcmCcpzcpAcpBcpCcpDcmCcpEcpFcpEcjncjncjncpGcpHcpIcjncpJcpKcpLcfWbQkcpMcpNcpObQkcpPcpQcpRbQkcpScpTcpUbQkaoBaoBcdRaoBaoBcoccjCcpVcpWcpXcpYcpZcqacqbcjAcqccqdcqecqfcqgcqhcgqcgqbCwcqibCwgkfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabNrcqjchJbNrcqkcccccdciWccdccdccdccdcqlcqmcqncozcqocqpcqqcozaadaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoBaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQaaacfucoCcfwaadcfucoCcfwaadcfucoCcfwaaaaadaadaadaaaaaaaaaaaecqrcqscqtbJIbJIbVFbJIcqucoEcqvcqwcqxcqycqzcoEaaabEycjgbJIcpwbUIcfWcpxcpxcpycfWcmCcqAcqBcqCcqDcqEcmCcqBcqBcqBcfWcqFcqGcqHcqIcqJcqKcqLcqMaZHcfWbQkcqNcqOcqNbQkcqPcqQcqPbQkcqRcqScqTbQkaadaadcdRaadaadcoccjCcjCcjCcqUcqVcqWcqXcqYcqZcqccracgqcrbcrccrdchwcgqcrebEEbEEbEEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabNrcrfckWbNrcrgcrhcrhcricrhclUclUclUcrjcrjcrkcozcrlcrmcrncozaadaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQaadcfucoCcfwaaacfucoCcfwaaacfucoCcfwaadaadaaaaadaadaaaaaaaaebEybEybEybEybJIbEybEybEycoEcrocrpcrqcrrcrocoEaadbEycfWcrscrtcrucfWcpxcpycpycfWcrvcrwcqHcqIcrxcrycrzcrAcrAcrAcrBcrCcrDcrDcrDcrEcrFcrGclpcrHcfWbQkcqNcrIcqNbQkcqPcrJcqPbQkcqTcrKcqTbQkaadaadcdRaoBaoBcrLcrMaoBaoBcrNcrOcrPcrQcrRcrSbCwcrTcrUbJccrVcrWcfhcrXcrYbEEjXDjXDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabNrcrZbQObNrbNrbNrbNrbNrbQObNraadaaaaaaaaaaadcsacsacsbcsacsaaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYaaacfucsccfwaaacfucsccfwaaacfucsccfwaaaaaQaaaaaaaadaadaaaaaaaaaaaaaaabNFbJIbNFaaaaaacoEcsdcqwcsecqycsfcoEcoEcoEcfWcsgcrtcshcfWcfWcfWcfWcfWcsicsjcrFcrFcrxcqMcrFcskcrFcslcrFcrFcrFcrFcrFcsmcrFcrxcqMcsncfWbQkbQkbQkbQkbQkbQkbQkbQkbQkbQkbQkbQkbQkaadaoBcdRaoBaoBaoBcocaoBaoBcsocspcqYcsrcqYcspbEEcsschvcstcsuchvcsvbEEbEEbEEjXDjXDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbNrcswbQObQObQObQObQObQObQObNraadaaaaaaaaaaadaaacsacsxcsaaaaaadaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQaaaaadaaaaadaaaaadaaaaadaaaaadaaaaadaaaaaQaaaaaaaaaaadaadaaaaaaaaaaaabNFbJIbNFaaaaaacoEcsycszcsAcsBcsCcsDcsEcsFcsDcsGcsHcsIcsJcsKcsLcsMcsNcsOcsPcsQcsRcsScsTcfWcfWcsUcsVcsUcfWcfWcsVcsVcfWcsVcsWcqMcsXcfWcfWcfWcfWcfWcmCcmCcmCcmCcfWaaaaaaaaaaaaaoBaoBcdRaoBaoBaoBcocaoBaoBcsocspcsYcsZctactbaadbEEciCctcbRBbRBbEEbEEaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbNrctdctectfchIctgbOHbPDbNrbNraadaaaaaaaaaaadaaacsacthcsaaaaaadaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQaaQaaQaaQaaQaaYaaQaaQaaQaaQaaQaaQaaQaaQaaQaaaaaaaaaaaaaadaadaaaaaaaadbNFbJIbNFaadaadcoEctictjctkctlctmctnctoctpctqctrctscttctuctuctuctvctuctwctxctyctzctActBctCctDctEctEctEctFctGctEctHctIctJctKctLctMctMctOctPctQcfWctRcmCaaaaaaaaaaaaaaaaaaaaaaoBaoBcdRaoBaoBaoBcocaoBaoBcsocspcspctScspcspaaaaadaaactTaoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNrbNrbNrctUbNrcplbNrbPIbPIbNrbNraaaaadaaaaaaaaaaadaaaaaactVaaaaaaaadaaaaadaaaaaaaadaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaabNFbJIbNFaaaaaacoEctWctXctYctZcuacoEcubcuccoEcudcuecufcskcrFcugcqBcuhcuicujcukculcumcuncuocuncuncuncuncuncupcuqcurcuscutcuucuvcuvcuvcuwcqMcuxcuycnIcuzafoaaaaaaaaacuAaaaaaaaoBaoBcdRaoBaoBaoBcocaoBaoBcsoaaecspcuBcspcuCaadaadaaacuDaoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNrcuEcuFcuFbNrcuGaadaaaaaaaadaaaaaaaadaaaaaaaaaaadaaaaaactVaaaaaaaadaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbEybEycuHbEybEyaaacoEcuIcuJcuKcoEcoEcoEcoEcoEcfWcuLcrFcufcrFcrFcuMcqBcuNcrFcsVcuOcuPcuQcuRcuScuTcuUcuVcuWcuXcuYcuYcuZcvacvbcvccvdcvecvfcrxcqMcvgcfWcvhcmCaaaaaaaaaaaaaaaaaaaaaaoBaoBcdRaoBaacaoBcocaoBaoBcviaaecvjcvkcvjaaeaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPIbPIbPIcuFcuFcvlbNraaaaadaaaaaaaadaaaaaQaaQaaQaaYaadaadaadaadctVaadaadaadaadaadaaYaaQaaQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbEycnEbJIcvmbEyaadcoEcoEcoEcoEcoEaadaaaaaaaadcfWcvncrFcvocvpcvqcvrcmCcmCcvscfWcuOcuPcvtcvucvvcvwcvxcvycvzcvAcvBcvCcvDcuPaZIcmCcvEcrFcvFcvGcvHcvIcvIcvJcvJcvJcvJcvIcvKcvKcvKcvKcvKcvKcvLaadaadaadcocaoBaoBaadaaeaaaaaaaaaaaeaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPIbQOcvMcuFcuFcvNbNraaaaadaaaaaaaadaaaaaQaaaaaaaadaaaaadaaaaaacvOaaaaaaaadaaaaadaaaaaaaaQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNFcvPcvQcvRbEyaadaaaaaaaadaaaaaaaadaaaaaaaadcfWcvScvTcvUcvVcvWcvXcmCcvYcvZcfWcuOcuPcvtcwacwacvAcwbcwccwdcwecwfcwfcvDcuPcwgcfWcsVcwhcfWcrxcwicwjcwkcwlcwmcwnaaaaadaadaadaadaadaoBaoBaadaoBaoBaoBcocaoBaoBaoBaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPIcvMbPIbPIbPIbPIbNraaaaadaaaaaaaadaaaaaQaadcwocwocwocwocwoaaacwpaaacwocwocwocwocwoaadaaQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNFcwqcwrbLhbEycmCcwscwscwscwscwscwscwscwscmCcfWcwtcwucwvcwwcwtcfWcfWcfWcwxcfWcwycuPcwzcwAcvAcwBcwCcwDcwEcwFcvAcwGcwHcuPcwIcfWcwJaZJcfWcwKcwLcwMcwNcrFcwOcwnaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaacocaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaQaaacwPcwQcwQcwQcwQcwRcwpcwScwTcwTcwTcwTcwUaaaaaQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNFbNFbNFbNFbEyaadaaaaaaaaaaaaaaaaaaaadaadaadaaaaaacwVcwWcwXcwWcwYcwWcwYcwWcwZcxacxbcxccxdcxecxfcxgcxhcxicxjcxkcxlcxmcxncxocxpcxqcxrcfWcxscfWcfWcxtcxucxvcwnaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaacocaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaQacfcxwcxwcxwcxwcxwaaacwpaaacxwcxwcxwcxwcxwaadaaQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabiabiaadaadcxxcxycxycxycxycxycxycxzcxAcxBcuPcxCcxDcxkcxfcxEcxFcxGcxjcxkcxHcxIcuPcwgcwJcxJcxKcfWcxLcxMcfWcmCcmCcxNcmCaadaadaadaadaadaadaadaadaadaadaadaadcocaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaQaaaaaaaaaaadaaaaaaaaacwpaaaaaaaaaaadaaaaaaaaaaaQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQaaQaaQaaQaaQaaYaaQaaQaaQaaQaaQaaQaaQaaQaaQaaaaaaaaaaaaaadaadaaaaaaaadbNFbJIbNFaadaadcoEctictjctkctlctmctnctoctpctqctrctscttctuctuctuctvctuctwctxctyctzctActBctCctDctEctEctEctFctGctEctHctIctJctKctLctMctMctOctPctQcfWctRcmCaaaaaaaaaaaaaaaaaaaaaaoBaoBcdRaoBaoBaoBcocaoBaoBcsocspcspctScspcspaaaaadaaactTaoBaaaaaaaaaaaaatJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNrbNrbNrctUbNrcplbNrbPIbPIbNrbNraaaaadaaaaaaaaaaadaaaaaactVaaaaaaaadaaaaadaaaaaaaadaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaabNFbJIbNFaaaaaacoEctWctXctYctZcuacoEcubcuccoEcudcuecufcskcrFcugcqBcuhcuicujcukculcumcuncuocuncuncuncuncuncupcuqcurcuscutcuucuvcuvcuvcuwcqMcuxcuycnIcuzafoaaaaaaaaacuAaaaaaaaoBaoBcdRaoBaoBaoBcocaoBaoBcsoaaecspcuBcspcuCaadaadaaacuDaoBaaaaaaaaaaaaatJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNrcuEcuFcuFbNrcuGaadaaaaaaaadaaaaaaaadaaaaaaaaaaadaaaaaactVaaaaaaaadaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbEybEycuHbEybEyaaacoEcuIcuJcuKcoEcoEcoEcoEcoEcfWcuLcrFcufcrFcrFcuMcqBcuNcrFcsVcuOcuPcuQcuRcuScuTcuUcuVcuWcuXcuYcuYcuZcvacvbcvccvdcvecvfcrxcqMcvgcfWcvhcmCaaaaaaaaaaaaaaaaaaaaaaoBaoBcdRaoBaacaoBcocaoBaoBcviaaecvjcvkcvjaaeaadaaaaaaaaaaaaaaaaaaaaaaaaatJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajXDbPIbPIbPIcuFcuFcvlbNraaaaadaaaaaaaadaaaaaQaaQaaQaaYaadaadaadaadctVaadaadaadaadaadaaYaaQaaQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbEycnEbJIcvmbEyaadcoEcoEcoEcoEcoEaadaaaaaaaadcfWcvncrFcvocvpcvqcvrcmCcmCcvscfWcuOcuPcvtcvucvvcvwcvxcvycvzcvAcvBcvCcvDcuPaZIcmCcvEcrFcvFcvGcvHcvIcvIcvJcvJcvJcvJcvIcvKcvKcvKcvKcvKcvKcvLaadaadaadcocaoBaoBaadaaeaaaaaaaaaaaeaadaaaaaaaaaaaaaaaaaaaaaaaaatJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajXDphzbQOcvMcuFcuFcvNbNraaaaadaaaaaaaadaaaaaQaaaaaaaadaaaaadaaaaaacvOaaaaaaaadaaaaadaaaaaaaaQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNFcvPcvQcvRbEyaadaaaaaaaadaaaaaaaadaaaaaaaadcfWcvScvTcvUcvVcvWcvXcmCcvYcvZcfWcuOcuPcvtcwacwacvAcwbcwccwdcwecwfcwfcvDcuPcwgcfWcsVcwhcfWcrxcwicwjcwkcwlcwmcwnaaaaadaadaadaadaadaoBaoBaadaoBaoBaoBcocaoBaoBaoBaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajXDbPIbPIbPIbPIbPIbPIbNraaaaadaaaaaaaadaaaaaQaadcwocwocwocwocwoaaacwpaaacwocwocwocwocwoaadaaQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNFcwqcwrbLhbEycmCcwscwscwscwscwscwscwscwscmCcfWcwtcwucwvcwwcwtcfWcfWcfWcwxcfWcwycuPcwzcwAcvAcwBcwCcwDcwEcwFcvAcwGcwHcuPcwIcfWcwJaZJcfWcwKcwLcwMcwNcrFcwOcwnaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaacocaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatJaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaQaaacwPcwQcwQcwQcwQcwRcwpcwScwTcwTcwTcwTcwUaaaaaQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNFbNFbNFbNFbEyaadaaaaaaaaaaaaaaaaaaaadaadaadaaaaaacwVcwWcwXcwWcwYcwWcwYcwWcwZcxacxbcxccxdcxecxfcxgcxhcxicxjcxkcxlcxmcxncxocxpcxqcxrcfWcxscfWcfWcxtcxucxvcwnaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaacocaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatJaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaQacfcxwcxwcxwcxwcxwaaacwpaaacxwcxwcxwcxwcxwaadaaQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabiabiaadaadcxxcxycxycxycxycxycxycxzcxAcxBcuPcxCcxDcxkcxfcxEcxFcxGcxjcxkcxHcxIcuPcwgcwJcxJcxKcfWcxLcxMcfWcmCcmCcxNcmCaadaadaadaadaadaadaadaadaadaadaadaadcocaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatJaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaQaaaaaaaaaaadaaaaaaaaacwpaaaaaaaaaaadaaaaaaaaaaaQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabicxOabiaaaaaacwVcwWcwXcwWcwXcwWcwXcxPcxQcxRcuPcxScxTcxkcxUcxVcxWcxXcxYcxkcxZcyacuPcwgcwJcxJcybcfWcwxcyccmCaadaaacydaaaaadaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaacocaaaaaaaaacyecyecyecyecyeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQaadcwocwocwocwocwoaaacwpaaacwocwocwocwocwoaadaaQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabicxOabiaaaaaacyfcygcyhcygcyhcygcyhcygcyicyjcykcylcwGcvAcvAcymcyncwecvAcvAcwAcyocypcyqcyrcyscybcsVaaeaaeaaeaadaaaaaacytcyucyvcyvcyvcyucyvcyvcyvcyucyvcyvcyvcywcyvcyvcyvcyxcyycyzcyAcyeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQaaacwPcwQcwQcwQcwQcwRcwpcwScwTcwTcwTcwTcwUaaaaaQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabicxOabiaadaadcyBcyCcyCcyCcyCcyCcyCcyCcxQcyDcuPcyEcyFcyGcyHcyIcyJcyKcyHcyLcyMcyNcuPcyOcyPcwJcyQcsVaaaaaaaaeaadaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaaaadaaaaaaaaacocaaecyecyecyecyRcyScyRcyeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQaadcxwcxwcxwcxwcxwaaacwpaaacxwcxwcxwcxwcxwaadaaQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/code/_globalvars/lists/vending.dm b/code/_globalvars/lists/vending.dm
new file mode 100644
index 00000000..35204a15
--- /dev/null
+++ b/code/_globalvars/lists/vending.dm
@@ -0,0 +1,78 @@
+// This GLOBAL list is for radials.
+GLOBAL_VAR_INIT(vending_m_choices, list(
+ "Booze-O-Mat" = image(icon = 'icons/obj/vending.dmi', icon_state = "boozeomat"),
+ "Solar's Best Hot Drinks" = image(icon = 'icons/obj/vending.dmi', icon_state = "coffee"),
+ "Getmore Chocolate Corp" = image(icon = 'icons/obj/vending.dmi', icon_state = "snack"),
+ "Robust Softdrinks" = image(icon = 'icons/obj/vending.dmi', icon_state = "Cola_Machine"),
+ "ShadyCigs Deluxe" = image(icon = 'icons/obj/vending.dmi', icon_state = "cigs"),
+ "Good Clean Fun" = image(icon = 'icons/obj/vending.dmi', icon_state = "games"),
+ "AutoDrobe" = image(icon = 'icons/obj/vending.dmi', icon_state = "theater"),
+ "Vendomat" = image(icon = 'icons/obj/vending.dmi', icon_state = "generic"),
+ "Engi-Vend" = image(icon = 'icons/obj/vending.dmi', icon_state = "engivend"),
+ "YouTool" = image(icon = 'icons/obj/vending.dmi', icon_state = "tool"),
+ "Sustenance Vendor" = image(icon = 'icons/obj/vending.dmi', icon_state = "sustenance"),
+ "Plasteel Chef's Dinnerware Vendor" = image(icon = 'icons/obj/vending.dmi', icon_state = "dinnerware"),
+ "PTech" = image(icon = 'icons/obj/vending.dmi', icon_state = "cart"),
+ "NutriMax" = image(icon = 'icons/obj/vending.dmi', icon_state = "nutri"),
+ "MegaSeed Servitor" = image(icon = 'icons/obj/vending.dmi', icon_state = "seeds"),
+ "SecDrobe" = image(icon = 'icons/obj/vending.dmi', icon_state = "secdrobe"),
+ "MediDrobe" = image(icon = 'icons/obj/vending.dmi', icon_state = "medidrobe"),
+ "EngiDrobe" = image(icon = 'icons/obj/vending.dmi', icon_state = "engidrobe"),
+ "AtmosDrobe" = image(icon = 'icons/obj/vending.dmi', icon_state = "atmosdrobe"),
+ "CargoDrobe" = image(icon = 'icons/obj/vending.dmi', icon_state = "cargodrobe"),
+ "RoboDrobe" = image(icon = 'icons/obj/vending.dmi', icon_state = "robodrobe"),
+ "SciDrobe" = image(icon = 'icons/obj/vending.dmi', icon_state = "scidrobe"),
+ "HyDrobe" = image(icon = 'icons/obj/vending.dmi', icon_state = "hydrobe"),
+ "CuraDrobe" = image(icon = 'icons/obj/vending.dmi', icon_state = "curadrobe"),
+ "BarDrobe" = image(icon = 'icons/obj/vending.dmi', icon_state = "bardrobe"),
+ "ChefDrobe" = image(icon = 'icons/obj/vending.dmi', icon_state = "chefdrobe"),
+ "JaniDrobe" = image(icon = 'icons/obj/vending.dmi', icon_state = "janidrobe"),
+ "LawDrobe" = image(icon = 'icons/obj/vending.dmi', icon_state = "lawdrobe"),
+ "ChapDrobe" = image(icon = 'icons/obj/vending.dmi', icon_state = "chapdrobe"),
+ "ChemDrobe" = image(icon = 'icons/obj/vending.dmi', icon_state = "chemdrobe"),
+ "GeneDrobe" = image(icon = 'icons/obj/vending.dmi', icon_state = "genedrobe"),
+ "ViroDrobe" = image(icon = 'icons/obj/vending.dmi', icon_state = "virodrobe"),
+ "ClothesMate" = image(icon = 'icons/obj/vending.dmi', icon_state = "clothes"),
+ "NanoMed Plus" = image(icon = 'icons/obj/vending.dmi', icon_state = "med"),
+ "NanoMed" = image(icon = 'icons/obj/vending.dmi', icon_state = "wallmed"),
+ "KinkMate" = image(icon = 'icons/obj/citvending.dmi', icon_state = "kink"),
+))
+// This GLOBAL list is just here to be here.
+GLOBAL_VAR_INIT(vending_machines, list(
+ /obj/machinery/vending/boozeomat,
+ /obj/machinery/vending/coffee,
+ /obj/machinery/vending/snack,
+ /obj/machinery/vending/cola,
+ /obj/machinery/vending/cigarette,
+ /obj/machinery/vending/games,
+ /obj/machinery/vending/autodrobe,
+ /obj/machinery/vending/assist,
+ /obj/machinery/vending/engivend,
+ /obj/machinery/vending/tool,
+ /obj/machinery/vending/sustenance,
+ /obj/machinery/vending/dinnerware,
+ /obj/machinery/vending/cart,
+ /obj/machinery/vending/hydronutrients,
+ /obj/machinery/vending/hydroseeds,
+ /obj/machinery/vending/wardrobe/sec_wardrobe,
+ /obj/machinery/vending/wardrobe/medi_wardrobe,
+ /obj/machinery/vending/wardrobe/engi_wardrobe,
+ /obj/machinery/vending/wardrobe/atmos_wardrobe,
+ /obj/machinery/vending/wardrobe/cargo_wardrobe,
+ /obj/machinery/vending/wardrobe/robo_wardrobe,
+ /obj/machinery/vending/wardrobe/science_wardrobe,
+ /obj/machinery/vending/wardrobe/hydro_wardrobe,
+ /obj/machinery/vending/wardrobe/curator_wardrobe,
+ /obj/machinery/vending/wardrobe/bar_wardrobe,
+ /obj/machinery/vending/wardrobe/chef_wardrobe,
+ /obj/machinery/vending/wardrobe/jani_wardrobe,
+ /obj/machinery/vending/wardrobe/law_wardrobe,
+ /obj/machinery/vending/wardrobe/chap_wardrobe,
+ /obj/machinery/vending/wardrobe/chem_wardrobe,
+ /obj/machinery/vending/wardrobe/gene_wardrobe,
+ /obj/machinery/vending/wardrobe/viro_wardrobe,
+ /obj/machinery/vending/clothing,
+ /obj/machinery/vending/medical,
+ /obj/machinery/vending/wallmed,
+ /obj/machinery/vending/kink
+))
diff --git a/code/_onclick/hud/radial.dm b/code/_onclick/hud/radial.dm
index df91223e..bcdd5c85 100644
--- a/code/_onclick/hud/radial.dm
+++ b/code/_onclick/hud/radial.dm
@@ -255,6 +255,7 @@ GLOBAL_LIST_EMPTY(radial_menus)
current_user = M.client
//Blank
menu_holder = image(icon='icons/effects/effects.dmi',loc=anchor,icon_state="nothing",layer = ABOVE_HUD_LAYER)
+ menu_holder.plane = ABOVE_HUD_PLANE
menu_holder.appearance_flags |= KEEP_APART
menu_holder.vis_contents += elements + close_button
current_user.images += menu_holder
@@ -285,13 +286,16 @@ GLOBAL_LIST_EMPTY(radial_menus)
Choices should be a list where list keys are movables or text used for element names and return value
and list values are movables/icons/images used for element icons
*/
-/proc/show_radial_menu(mob/user, atom/anchor, list/choices, uniqueid, radius, datum/callback/custom_check, require_near = FALSE, tooltips = FALSE)
+/proc/show_radial_menu(mob/user, atom/anchor, list/choices, uniqueid, radius, datum/callback/custom_check, require_near = FALSE, tooltips = FALSE, no_repeat_close = FALSE)
if(!user || !anchor || !length(choices))
return
if(!uniqueid)
uniqueid = "defmenu_[REF(user)]_[REF(anchor)]"
if(GLOB.radial_menus[uniqueid])
+ if(!no_repeat_close)
+ var/datum/radial_menu/menu = GLOB.radial_menus[uniqueid]
+ menu.finished = TRUE
return
var/datum/radial_menu/menu = new
@@ -308,4 +312,9 @@ GLOBAL_LIST_EMPTY(radial_menus)
var/answer = menu.selected_choice
qdel(menu)
GLOB.radial_menus -= uniqueid
- return answer
\ No newline at end of file
+ if(require_near && !in_range(anchor, user))
+ return
+ if(istype(custom_check))
+ if(!custom_check.Invoke())
+ return
+ return answer
diff --git a/code/game/objects/items/cardboard_cutouts.dm b/code/game/objects/items/cardboard_cutouts.dm
index 113b1d63..bc86881c 100644
--- a/code/game/objects/items/cardboard_cutouts.dm
+++ b/code/game/objects/items/cardboard_cutouts.dm
@@ -6,17 +6,43 @@
icon_state = "cutout_basic"
w_class = WEIGHT_CLASS_BULKY
resistance_flags = FLAMMABLE
- // Possible restyles for the cutout;
- // add an entry in change_appearance() if you add to here
- var/list/possible_appearances = list("Assistant", "Clown", "Mime",
- "Traitor", "Nuke Op", "Cultist", "Clockwork Cultist",
- "Revolutionary", "Wizard", "Shadowling", "Xenomorph", "Xenomorph Maid", "Swarmer",
- "Ash Walker", "Deathsquad Officer", "Ian", "Slaughter Demon",
- "Laughter Demon", "Private Security Officer", "ceo")
- var/pushed_over = FALSE //If the cutout is pushed over and has to be righted
- var/deceptive = FALSE //If the cutout actually appears as what it portray and not a discolored version
+ /// Possible restyles for the cutout, add an entry in change_appearance() if you add to here
+ var/static/list/possible_appearances
+ /// If the cutout is pushed over and has to be righted
+ var/pushed_over = FALSE
+ /// If the cutout actually appears as what it portray and not a discolored version
+ var/deceptive = FALSE
- var/lastattacker = null
+/obj/item/cardboard_cutout/Initialize()
+ . = ..()
+ if(possible_appearances)
+ return
+ possible_appearances = sortList(list(
+ "Assistant" = image(icon = src.icon, icon_state = "cutout_greytide"),
+ "Clown" = image(icon = src.icon, icon_state = "cutout_clown"),
+ "Mime" = image(icon = src.icon, icon_state = "cutout_mime"),
+ "Traitor" = image(icon = src.icon, icon_state = "cutout_traitor"),
+ "Nuke Op" = image(icon = src.icon, icon_state = "cutout_fluke"),
+ "Cultist" = image(icon = src.icon, icon_state = "cutout_cultist"),
+ "Brass Cultist" = image(icon = src.icon, icon_state = "cutout_servant"),
+ "Clockwork Cultist" = image(icon = src.icon, icon_state = "cutout_new_servant"),
+ "Revolutionary" = image(icon = src.icon, icon_state = "cutout_viva"),
+ "Wizard" = image(icon = src.icon, icon_state = "cutout_wizard"),
+ "Shadowling" = image(icon = src.icon, icon_state = "cutout_shadowling"),
+ "Xenomorph" = image(icon = src.icon, icon_state = "cutout_fukken_xeno"),
+ "Xenomorph Maid" = image(icon = src.icon, icon_state = "cutout_lusty"),
+ "Swarmer" = image(icon = src.icon, icon_state = "cutout_swarmer"),
+ "Ash Walker" = image(icon = src.icon, icon_state = "cutout_free_antag"),
+ "Deathsquad Officer" = image(icon = src.icon, icon_state = "cutout_deathsquad"),
+ "Ian" = image(icon = src.icon, icon_state = "cutout_ian"),
+ "Slaughter Demon" = image(icon = 'icons/mob/mob.dmi', icon_state = "daemon"),
+ "Laughter Demon" = image(icon = 'icons/mob/mob.dmi', icon_state = "bowmon"),
+ "Private Security Officer" = image(icon = src.icon, icon_state = "cutout_ntsec"),
+ "Securitron" = image(icon = src.icon, icon_state = "cutout_law"),
+ "Gondola" = image(icon = src.icon, icon_state = "cutout_gondola"),
+ "Monkey" = image(icon = src.icon, icon_state = "cutout_monky"),
+ "CEO" = image(icon = src.icon, icon_state = "cutout_val"),
+ ))
//ATTACK HAND IGNORING PARENT RETURN VALUE
/obj/item/cardboard_cutout/attack_hand(mob/living/user)
@@ -74,23 +100,23 @@
playsound(src, 'sound/weapons/slice.ogg', 50, 1)
if(prob(P.damage))
push_over()
+ return BULLET_ACT_HIT
+/**
+ * change_appearance: Changes a skin of the cardboard cutout based on a user's choice
+ *
+ * Arguments:
+ * * crayon The crayon used to change and recolor the cardboard cutout
+ * * user The mob choosing a skin of the cardboard cutout
+ */
/obj/item/cardboard_cutout/proc/change_appearance(obj/item/toy/crayon/crayon, mob/living/user)
- if(!crayon || !user)
- return
- if(pushed_over)
- to_chat(user, "Right [src] first!")
- return
- if(crayon.check_empty(user))
- return
- if(crayon.is_capped)
- to_chat(user, "Take the cap off first!")
- return
- var/new_appearance = input(user, "Choose a new appearance for [src].", "26th Century Deception") as null|anything in possible_appearances
- if(!new_appearance || !crayon || !user.canUseTopic(src))
+ var/new_appearance = show_radial_menu(user, src, possible_appearances, custom_check = CALLBACK(src, .proc/check_menu, user, crayon), radius = 36, require_near = TRUE)
+ if(!new_appearance)
return
if(!do_after(user, 10, FALSE, src, TRUE))
- return
+ return FALSE
+ if(!check_menu(user, crayon))
+ return FALSE
user.visible_message("[user] gives [src] a new look.", "Voila! You give [src] a new look.")
crayon.use_charges(1)
crayon.check_empty(user)
@@ -123,10 +149,14 @@
name = "Unknown"
desc = "A cardboard cutout of a cultist."
icon_state = "cutout_cultist"
+ if("Brass Cultist")
+ name = "[pick(GLOB.first_names_male)] [pick(GLOB.last_names)]"
+ desc = "A cardboard cutout of a \"servant\" of Ratvar."
+ icon_state = "cutout_servant"
if("Clockwork Cultist")
name = "[pick(GLOB.first_names_male)] [pick(GLOB.last_names)]"
desc = "A cardboard cutout of a servant of Ratvar."
- icon_state = "cutout_servant"
+ icon_state = "cutout_new_servant"
if("Revolutionary")
name = "Unknown"
desc = "A cardboard cutout of a revolutionary."
@@ -179,11 +209,49 @@
name = "Private Security Officer"
desc = "A cardboard cutout of a private security officer."
icon_state = "cutout_ntsec"
- if("ceo")
+ if("Securitron")
+ name = "[pick("Officer", "Oftiser", "Sergeant", "General")][pick(" Genesky", " Pingsky", " Beepsky", " Pipsqueak", "-at-Armsky")]"
+ desc = "A cardboard cutout of a securitron."
+ icon_state = "cutout_law"
+ if("Gondola")
+ name = "gondola"
+ desc = "A cardboard cutout of a gondola."
+ icon_state = "cutout_gondola"
+ if("Monkey")
+ name = "monkey ([rand(1, 999)])"
+ desc = "A cardboard cutout of a monkey."
+ icon_state = "cutout_monky"
+ if("CEO")
name = "Valarie"
desc = "The very owner of your soul"
icon_state = "cutout_val"
- return 1
+ else
+ return FALSE
+ return TRUE
+
+/**
+ * check_menu: Checks if we are allowed to interact with a radial menu
+ *
+ * Arguments:
+ * * user The mob interacting with a menu
+ * * crayon The crayon used to interact with a menu
+ */
+/obj/item/cardboard_cutout/proc/check_menu(mob/living/user, obj/item/toy/crayon/crayon)
+ if(!istype(user))
+ return FALSE
+ if(user.incapacitated())
+ return FALSE
+ if(pushed_over)
+ to_chat(user, "Right [src] first!")
+ return FALSE
+ if(!crayon || !user.is_holding(crayon))
+ return FALSE
+ if(crayon.check_empty(user))
+ return FALSE
+ if(crayon.is_capped)
+ to_chat(user, "Take the cap off first!")
+ return FALSE
+ return TRUE
/obj/item/cardboard_cutout/setDir(newdir)
dir = SOUTH
diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm
index dcf3cd12..64ec1883 100644
--- a/code/game/objects/items/circuitboards/machine_circuitboards.dm
+++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm
@@ -252,16 +252,22 @@
/obj/machinery/vending/wardrobe/viro_wardrobe = "ViroDrobe",
/obj/machinery/vending/clothing = "ClothesMate",
/obj/machinery/vending/medical = "NanoMed Plus",
- /obj/machinery/vending/wallmed = "NanoMed")
+ /obj/machinery/vending/wallmed = "NanoMed",
+ /obj/machinery/vending/kink = "\improper KinkMate")
/obj/item/circuitboard/machine/vendor/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/screwdriver))
- var/position = vending_names_paths.Find(build_path)
- position = (position == vending_names_paths.len) ? 1 : (position + 1)
- var/typepath = vending_names_paths[position]
-
- to_chat(user, "You set the board to \"[vending_names_paths[typepath]]\".")
+ var/choice = show_radial_menu(user, src, GLOB.vending_m_choices, radius = 46, require_near = TRUE, tooltips = TRUE)
+ if(!choice)
+ return
+ var/static/list/vendinglist = GLOB.vending_m_choices
+ var/choiceposition = vendinglist.Find(choice)
+ if(!choiceposition)
+ return
+ var/typepath = GLOB.vending_machines[choiceposition]
+ var/namepath = vending_names_paths[choiceposition]
set_type(typepath)
+ to_chat(user, "You set the board to \"[vending_names_paths[namepath]]\".")
else
return ..()
diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm
index 65478a84..040cd53c 100644
--- a/code/game/objects/items/holy_weapons.dm
+++ b/code/game/objects/items/holy_weapons.dm
@@ -244,21 +244,23 @@
if(user.mind && (user.mind.isholy) && !reskinned)
reskin_holy_weapon(user)
-/obj/item/nullrod/proc/reskin_holy_weapon(mob/M)
+/obj/item/nullrod/proc/reskin_holy_weapon(mob/living/L)
if(GLOB.holy_weapon_type)
return
- var/obj/item/nullrod/holy_weapon
- var/list/holy_weapons_list = typesof(/obj/item/nullrod) + list(
- /obj/item/twohanded/dualsaber/hypereutactic/chaplain
- )
+ var/obj/item/holy_weapon
+ var/list/holy_weapons_list = subtypesof(/obj/item/nullrod)
var/list/display_names = list()
+ var/list/nullrod_icons = list()
for(var/V in holy_weapons_list)
var/obj/item/nullrod/rodtype = V
if (initial(rodtype.chaplain_spawnable))
display_names[initial(rodtype.name)] = rodtype
+ nullrod_icons += list(initial(rodtype.name) = image(icon = initial(rodtype.icon), icon_state = initial(rodtype.icon_state)))
- var/choice = input(M,"What theme would you like for your holy weapon?","Holy Weapon Theme") as null|anything in display_names
- if(QDELETED(src) || !choice || M.stat || !in_range(M, src) || M.restrained() || !M.canmove || reskinned)
+ nullrod_icons = sortList(nullrod_icons)
+
+ var/choice = show_radial_menu(L, src , nullrod_icons, custom_check = CALLBACK(src, .proc/check_menu, L), radius = 42, require_near = TRUE)
+ if(!choice || !check_menu(L))
return
var/A = display_names[choice] // This needs to be on a separate var as list member access is not allowed for new
@@ -269,9 +271,23 @@
SSblackbox.record_feedback("tally", "chaplain_weapon", 1, "[choice]")
if(holy_weapon)
- holy_weapon.reskinned = TRUE
qdel(src)
- M.put_in_active_hand(holy_weapon)
+ L.put_in_active_hand(holy_weapon)
+
+/**
+ * check_menu: Checks if we are allowed to interact with a radial menu
+ *
+ * Arguments:
+ * * user The mob interacting with a menu
+ */
+/obj/item/nullrod/proc/check_menu(mob/user)
+ if(!istype(user))
+ return FALSE
+ if(QDELETED(src) || reskinned)
+ return FALSE
+ if(user.incapacitated() || !user.is_holding(src))
+ return FALSE
+ return TRUE
/obj/item/nullrod/godhand
icon_state = "disintegrate"
@@ -738,4 +754,4 @@
sharpness = IS_SHARP_ACCURATE
w_class = WEIGHT_CLASS_BULKY
attack_verb = list("stabbed", "poked", "slashed", "clocked")
- hitsound = 'sound/weapons/bladeslice.ogg'
\ No newline at end of file
+ hitsound = 'sound/weapons/bladeslice.ogg'
diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm
index f03d455b..353d8d67 100644
--- a/code/game/objects/items/storage/boxes.dm
+++ b/code/game/objects/items/storage/boxes.dm
@@ -33,6 +33,7 @@
resistance_flags = FLAMMABLE
var/foldable = /obj/item/stack/sheet/cardboard
var/illustration = "writing"
+ rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE //exploits ahoy
/obj/item/storage/box/Initialize(mapload)
. = ..()
@@ -104,25 +105,37 @@
// Ordinary survival box
/obj/item/storage/box/survival/PopulateContents()
new /obj/item/clothing/mask/breath(src)
- new /obj/item/tank/internals/emergency_oxygen(src)
new /obj/item/reagent_containers/hypospray/medipen(src)
+ if(!isplasmaman(loc))
+ new /obj/item/tank/internals/emergency_oxygen(src)
+ else
+ new /obj/item/tank/internals/plasmaman/belt(src)
+
/obj/item/storage/box/survival/radio/PopulateContents()
..() // we want the survival stuff too.
new /obj/item/radio/off(src)
/obj/item/storage/box/survival_mining/PopulateContents()
new /obj/item/clothing/mask/gas/explorer(src)
- new /obj/item/tank/internals/emergency_oxygen/engi(src)
new /obj/item/crowbar/red(src)
new /obj/item/reagent_containers/hypospray/medipen(src)
+ if(!isplasmaman(loc))
+ new /obj/item/tank/internals/emergency_oxygen(src)
+ else
+ new /obj/item/tank/internals/plasmaman/belt(src)
+
// Engineer survival box
/obj/item/storage/box/engineer/PopulateContents()
new /obj/item/clothing/mask/breath(src)
- new /obj/item/tank/internals/emergency_oxygen/engi(src)
new /obj/item/reagent_containers/hypospray/medipen(src)
+ if(!isplasmaman(loc))
+ new /obj/item/tank/internals/emergency_oxygen/engi(src)
+ else
+ new /obj/item/tank/internals/plasmaman/belt(src)
+
/obj/item/storage/box/engineer/radio/PopulateContents()
..() // we want the regular items too.
new /obj/item/radio/off(src)
@@ -130,14 +143,22 @@
// Syndie survival box
/obj/item/storage/box/syndie/PopulateContents()
new /obj/item/clothing/mask/gas/syndicate(src)
- new /obj/item/tank/internals/emergency_oxygen/engi(src)
+
+ if(!isplasmaman(loc))
+ new /obj/item/tank/internals/emergency_oxygen/engi(src)
+ else
+ new /obj/item/tank/internals/plasmaman/belt(src)
// Security survival box
/obj/item/storage/box/security/PopulateContents()
new /obj/item/clothing/mask/gas/sechailer(src)
- new /obj/item/tank/internals/emergency_oxygen(src)
new /obj/item/reagent_containers/hypospray/medipen(src)
+ if(!isplasmaman(loc))
+ new /obj/item/tank/internals/emergency_oxygen(src)
+ else
+ new /obj/item/tank/internals/plasmaman/belt(src)
+
/obj/item/storage/box/security/radio/PopulateContents()
..() // we want the regular stuff too
new /obj/item/radio/off(src)
@@ -397,7 +418,7 @@
/obj/item/storage/box/donkpockets/ComponentInitialize()
. = ..()
- GET_COMPONENT(STR, /datum/component/storage)
+ var/datum/component/storage/STR = GetComponent(/datum/component/storage)
STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/donkpocket))
/obj/item/storage/box/donkpockets/PopulateContents()
@@ -412,7 +433,7 @@
/obj/item/storage/box/monkeycubes/ComponentInitialize()
. = ..()
- GET_COMPONENT(STR, /datum/component/storage)
+ var/datum/component/storage/STR = GetComponent(/datum/component/storage)
STR.max_items = 7
STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/monkeycube))
@@ -567,7 +588,7 @@
/obj/item/storage/box/snappops/ComponentInitialize()
. = ..()
- GET_COMPONENT(STR, /datum/component/storage)
+ var/datum/component/storage/STR = GetComponent(/datum/component/storage)
STR.can_hold = typecacheof(list(/obj/item/toy/snappop))
STR.max_items = 8
@@ -585,7 +606,7 @@
/obj/item/storage/box/matches/ComponentInitialize()
. = ..()
- GET_COMPONENT(STR, /datum/component/storage)
+ var/datum/component/storage/STR = GetComponent(/datum/component/storage)
STR.max_items = 10
STR.can_hold = typecacheof(list(/obj/item/match))
@@ -608,7 +629,7 @@
/obj/item/storage/box/lights/ComponentInitialize()
. = ..()
- GET_COMPONENT(STR, /datum/component/storage)
+ var/datum/component/storage/STR = GetComponent(/datum/component/storage)
STR.max_items = 21
STR.can_hold = typecacheof(list(/obj/item/light/tube, /obj/item/light/bulb))
STR.max_combined_w_class = 21
@@ -706,11 +727,16 @@
new /obj/item/stack/medical/ointment(src)
new /obj/item/reagent_containers/hypospray/medipen(src)
+// Clown survival box
/obj/item/storage/box/hug/survival/PopulateContents()
new /obj/item/clothing/mask/breath(src)
- new /obj/item/tank/internals/emergency_oxygen(src)
new /obj/item/reagent_containers/hypospray/medipen(src)
+ if(!isplasmaman(loc))
+ new /obj/item/tank/internals/emergency_oxygen(src)
+ else
+ new /obj/item/tank/internals/plasmaman/belt(src)
+
/obj/item/storage/box/rubbershot
name = "box of rubber shots"
desc = "A box full of rubber shots, designed for riot shotguns."
@@ -804,12 +830,6 @@
-#define NODESIGN "None"
-#define NANOTRASEN "NanotrasenStandard"
-#define SYNDI "SyndiSnacks"
-#define HEART "Heart"
-#define SMILEY "SmileyFace"
-
/obj/item/storage/box/papersack
name = "paper sack"
desc = "A sack neatly crafted out of paper."
@@ -817,64 +837,84 @@
item_state = "paperbag_None"
resistance_flags = FLAMMABLE
foldable = null
- var/design = NODESIGN
+ /// A list of all available papersack reskins
+ var/list/papersack_designs = list()
-/obj/item/storage/box/papersack/update_icon()
+/obj/item/storage/box/papersack/Initialize(mapload)
+ . = ..()
+ papersack_designs = sortList(list(
+ "None" = image(icon = src.icon, icon_state = "paperbag_None"),
+ "NanotrasenStandard" = image(icon = src.icon, icon_state = "paperbag_NanotrasenStandard"),
+ "SyndiSnacks" = image(icon = src.icon, icon_state = "paperbag_SyndiSnacks"),
+ "Heart" = image(icon = src.icon, icon_state = "paperbag_Heart"),
+ "SmileyFace" = image(icon = src.icon, icon_state = "paperbag_SmileyFace")
+ ))
+
+/obj/item/storage/box/papersack/update_icon_state()
if(contents.len == 0)
icon_state = "[item_state]"
- else icon_state = "[item_state]_closed"
+ else
+ icon_state = "[item_state]_closed"
/obj/item/storage/box/papersack/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/pen))
- //if a pen is used on the sack, dialogue to change its design appears
- if(contents.len)
- to_chat(user, "You can't modify [src] with items still inside!")
- return
- var/list/designs = list(NODESIGN, NANOTRASEN, SYNDI, HEART, SMILEY, "Cancel")
- var/switchDesign = input("Select a Design:", "Paper Sack Design", designs[1]) in designs
- if(get_dist(usr, src) > 1)
- to_chat(usr, "You have moved too far away!")
- return
- var/choice = designs.Find(switchDesign)
- if(design == designs[choice] || designs[choice] == "Cancel")
- return 0
- to_chat(usr, "You make some modifications to [src] using your pen.")
- design = designs[choice]
- icon_state = "paperbag_[design]"
- item_state = "paperbag_[design]"
- switch(designs[choice])
- if(NODESIGN)
+ var/choice = show_radial_menu(user, src , papersack_designs, custom_check = CALLBACK(src, .proc/check_menu, user, W), radius = 36, require_near = TRUE)
+ if(!choice)
+ return FALSE
+ if(icon_state == "paperbag_[choice]")
+ return FALSE
+ switch(choice)
+ if("None")
desc = "A sack neatly crafted out of paper."
- if(NANOTRASEN)
+ if("NanotrasenStandard")
desc = "A standard Nanotrasen paper lunch sack for loyal employees on the go."
- if(SYNDI)
+ if("SyndiSnacks")
desc = "The design on this paper sack is a remnant of the notorious 'SyndieSnacks' program."
- if(HEART)
+ if("Heart")
desc = "A paper sack with a heart etched onto the side."
- if(SMILEY)
+ if("SmileyFace")
desc = "A paper sack with a crude smile etched onto the side."
- return 0
+ else
+ return FALSE
+ to_chat(user, "You make some modifications to [src] using your pen.")
+ icon_state = "paperbag_[choice]"
+ item_state = "paperbag_[choice]"
+ return FALSE
else if(W.is_sharp())
if(!contents.len)
if(item_state == "paperbag_None")
user.show_message("You cut eyeholes into [src].", 1)
new /obj/item/clothing/head/papersack(user.loc)
qdel(src)
- return 0
+ return FALSE
else if(item_state == "paperbag_SmileyFace")
user.show_message("You cut eyeholes into [src] and modify the design.", 1)
new /obj/item/clothing/head/papersack/smiley(user.loc)
qdel(src)
- return 0
+ return FALSE
return ..()
-#undef NODESIGN
-#undef NANOTRASEN
-#undef SYNDI
-#undef HEART
-#undef SMILEY
+/**
+ * check_menu: Checks if we are allowed to interact with a radial menu
+ *
+ * Arguments:
+ * * user The mob interacting with a menu
+ * * P The pen used to interact with a menu
+ */
+/obj/item/storage/box/papersack/proc/check_menu(mob/user, obj/item/pen/P)
+ if(!istype(user))
+ return FALSE
+ if(user.incapacitated())
+ return FALSE
+ if(contents.len)
+ to_chat(user, "You can't modify [src] with items still inside!")
+ return FALSE
+ if(!P || !user.is_holding(P))
+ to_chat(user, "You need a pen to modify [src]!")
+ return FALSE
+ return TRUE
-/obj/item/storage/box/ingredients //This box is for the randomely chosen version the chef spawns with, it shouldn't actually exist.
+/obj/item/storage/box/ingredients //This box is for the randomly chosen version the chef spawns with, it shouldn't actually exist.
name = "ingredients box"
illustration = "fruit"
var/theme_name
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 46fabea8..59e937ce 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -763,79 +763,55 @@
name = "hand of cards"
desc = "A number of cards not in a deck, customarily held in ones hand."
icon = 'icons/obj/toy.dmi'
- icon_state = "nanotrasen_hand2"
+ icon_state = "none"
w_class = WEIGHT_CLASS_TINY
var/list/currenthand = list()
var/choice = null
-
/obj/item/toy/cards/cardhand/attack_self(mob/user)
- user.set_machine(src)
+ var/list/handradial = list()
interact(user)
-/obj/item/toy/cards/cardhand/ui_interact(mob/user)
- . = ..()
- var/dat = "You have:
"
for(var/t in currenthand)
- dat += "A [t].
"
- dat += "Which card will you remove next?"
- var/datum/browser/popup = new(user, "cardhand", "Hand of Cards", 400, 240)
- popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
- popup.set_content(dat)
- popup.open()
+ handradial[t] = image(icon = src.icon, icon_state = "sc_[t]_[deckstyle]")
-
-/obj/item/toy/cards/cardhand/Topic(href, href_list)
- if(..())
- return
if(usr.stat || !ishuman(usr))
return
var/mob/living/carbon/human/cardUser = usr
var/O = src
- if(href_list["pick"])
- if (cardUser.is_holding(src))
- var/choice = href_list["pick"]
- var/obj/item/toy/cards/singlecard/C = new/obj/item/toy/cards/singlecard(cardUser.loc)
- src.currenthand -= choice
- C.parentdeck = src.parentdeck
- C.cardname = choice
- C.apply_card_vars(C,O)
- C.pickup(cardUser)
- cardUser.put_in_hands(C)
- cardUser.visible_message("[cardUser] draws a card from [cardUser.p_their()] hand.", "You take the [C.cardname] from your hand.")
+ var/choice = show_radial_menu(usr,src, handradial, custom_check = CALLBACK(src, .proc/check_menu, user), radius = 36, require_near = TRUE)
+ if(!choice)
+ return FALSE
+ var/obj/item/toy/cards/singlecard/C = new/obj/item/toy/cards/singlecard(cardUser.loc)
+ currenthand -= choice
+ handradial -= choice
+ C.parentdeck = parentdeck
+ C.cardname = choice
+ C.apply_card_vars(C,O)
+ C.pickup(cardUser)
+ cardUser.put_in_hands(C)
+ cardUser.visible_message("[cardUser] draws a card from [cardUser.p_their()] hand.", "You take the [C.cardname] from your hand.")
- interact(cardUser)
- if(src.currenthand.len < 3)
- src.icon_state = "[deckstyle]_hand2"
- else if(src.currenthand.len < 4)
- src.icon_state = "[deckstyle]_hand3"
- else if(src.currenthand.len < 5)
- src.icon_state = "[deckstyle]_hand4"
- if(src.currenthand.len == 1)
- var/obj/item/toy/cards/singlecard/N = new/obj/item/toy/cards/singlecard(src.loc)
- N.parentdeck = src.parentdeck
- N.cardname = src.currenthand[1]
- N.apply_card_vars(N,O)
- qdel(src)
- N.pickup(cardUser)
- cardUser.put_in_hands(N)
- to_chat(cardUser, "You also take [currenthand[1]] and hold it.")
- cardUser << browse(null, "window=cardhand")
- return
+ interact(cardUser)
+ update_sprite()
+ if(length(currenthand) == 1)
+ var/obj/item/toy/cards/singlecard/N = new/obj/item/toy/cards/singlecard(loc)
+ N.parentdeck = parentdeck
+ N.cardname = currenthand[1]
+ N.apply_card_vars(N,O)
+ qdel(src)
+ N.pickup(cardUser)
+ cardUser.put_in_hands(N)
+ to_chat(cardUser, "You also take [currenthand[1]] and hold it.")
/obj/item/toy/cards/cardhand/attackby(obj/item/toy/cards/singlecard/C, mob/living/user, params)
if(istype(C))
if(C.parentdeck == src.parentdeck)
src.currenthand += C.cardname
- user.visible_message("[user] adds a card to [user.p_their()] hand.", "You add the [C.cardname] to your hand.")
+ user.visible_message("[user] adds a card to [user.p_their()] hand.", "You add the [C.cardname] to your hand.")
qdel(C)
interact(user)
- if(currenthand.len > 4)
- src.icon_state = "[deckstyle]_hand5"
- else if(currenthand.len > 3)
- src.icon_state = "[deckstyle]_hand4"
- else if(currenthand.len > 2)
- src.icon_state = "[deckstyle]_hand3"
+ update_sprite(src)
else
to_chat(user, "You can't mix cards from other decks!")
else
@@ -844,7 +820,7 @@
/obj/item/toy/cards/cardhand/apply_card_vars(obj/item/toy/cards/newobj,obj/item/toy/cards/sourceobj)
..()
newobj.deckstyle = sourceobj.deckstyle
- newobj.icon_state = "[deckstyle]_hand2" // Another dumb hack, without this the hand is invisible (or has the default deckstyle) until another card is added.
+ update_sprite()
newobj.card_hitsound = sourceobj.card_hitsound
newobj.card_force = sourceobj.card_force
newobj.card_throwforce = sourceobj.card_throwforce
@@ -853,6 +829,31 @@
newobj.card_attack_verb = sourceobj.card_attack_verb
newobj.resistance_flags = sourceobj.resistance_flags
+/**
+ * check_menu: Checks if we are allowed to interact with a radial menu
+ *
+ * Arguments:
+ * * user The mob interacting with a menu
+ */
+/obj/item/toy/cards/cardhand/proc/check_menu(mob/living/user)
+ if(!istype(user))
+ return FALSE
+ if(user.incapacitated())
+ return FALSE
+ return TRUE
+
+/**
+ * This proc updates the sprite for when you create a hand of cards
+ */
+/obj/item/toy/cards/cardhand/proc/update_sprite()
+ cut_overlays()
+ var/overlay_cards = currenthand.len
+
+ var/k = overlay_cards == 2 ? 1 : overlay_cards - 2
+ for(var/i = k; i <= overlay_cards; i++)
+ var/card_overlay = image(icon=src.icon,icon_state="sc_[currenthand[i]]_[deckstyle]",pixel_x=(1-i+k)*3,pixel_y=(1-i+k)*3)
+ add_overlay(card_overlay)
+
/obj/item/toy/cards/singlecard
name = "card"
desc = "a card"
@@ -865,13 +866,13 @@
/obj/item/toy/cards/singlecard/examine(mob/user)
+ . = ..()
if(ishuman(user))
var/mob/living/carbon/human/cardUser = user
if(cardUser.is_holding(src))
cardUser.visible_message("[cardUser] checks [cardUser.p_their()] card.", "The card reads: [cardname].")
else
- to_chat(cardUser, "You need to have the card in your hand to check it!")
-
+ . += "You need to have the card in your hand to check it!"
/obj/item/toy/cards/singlecard/verb/Flip()
set name = "Flip Card"
diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm
index 54b9d650..fa0b7d13 100644
--- a/code/game/objects/structures/janicart.dm
+++ b/code/game/objects/structures/janicart.dm
@@ -6,11 +6,10 @@
anchored = FALSE
density = TRUE
//copypaste sorry
- var/amount_per_transfer_from_this = 5 //shit I dunno, adding this so syringes stop runtime erroring. --NeoFite
- var/obj/item/storage/bag/trash/mybag = null
- var/obj/item/mop/mymop = null
- var/obj/item/reagent_containers/spray/cleaner/myspray = null
- var/obj/item/lightreplacer/myreplacer = null
+ var/obj/item/storage/bag/trash/mybag
+ var/obj/item/mop/mymop
+ var/obj/item/reagent_containers/spray/cleaner/myspray
+ var/obj/item/lightreplacer/myreplacer
var/signs = 0
var/const/max_signs = 4
@@ -32,7 +31,6 @@
/obj/structure/janitorialcart/proc/put_in_cart(obj/item/I, mob/user)
if(!user.transferItemToLoc(I, src))
return
- updateUsrDialog()
to_chat(user, "You put [I] into [src].")
return
@@ -49,7 +47,6 @@
m.janicart_insert(user, src)
else
to_chat(user, fail_msg)
-
else if(istype(I, /obj/item/storage/bag/trash))
if(!mybag)
var/obj/item/storage/bag/trash/t=I
@@ -91,63 +88,74 @@
. = ..()
if(.)
return
- user.set_machine(src)
- var/dat
+
+ var/list/items = list()
if(mybag)
- dat += "[mybag.name]
"
+ items += list("Trash bag" = image(icon = mybag.icon, icon_state = mybag.icon_state))
if(mymop)
- dat += "[mymop.name]
"
+ items += list("Mop" = image(icon = mymop.icon, icon_state = mymop.icon_state))
if(myspray)
- dat += "[myspray.name]
"
+ items += list("Spray bottle" = image(icon = myspray.icon, icon_state = myspray.icon_state))
if(myreplacer)
- dat += "[myreplacer.name]
"
- if(signs)
- dat += "[signs] sign\s
"
- var/datum/browser/popup = new(user, "janicart", name, 240, 160)
- popup.set_content(dat)
- popup.open()
+ items += list("Light replacer" = image(icon = myreplacer.icon, icon_state = myreplacer.icon_state))
+ var/obj/item/caution/sign = locate() in src
+ if(sign)
+ items += list("Sign" = image(icon = sign.icon, icon_state = sign.icon_state))
-
-/obj/structure/janitorialcart/Topic(href, href_list)
- if(!in_range(src, usr))
+ if(!length(items))
return
- if(!isliving(usr))
+ items = sortList(items)
+ var/pick = show_radial_menu(user, src, items, custom_check = CALLBACK(src, .proc/check_menu, user), radius = 38, require_near = TRUE)
+ if(!pick)
return
- var/mob/living/user = usr
- if(href_list["garbage"])
- if(mybag)
+ switch(pick)
+ if("Trash bag")
+ if(!mybag)
+ return
user.put_in_hands(mybag)
to_chat(user, "You take [mybag] from [src].")
mybag = null
- if(href_list["mop"])
- if(mymop)
+ if("Mop")
+ if(!mymop)
+ return
user.put_in_hands(mymop)
to_chat(user, "You take [mymop] from [src].")
mymop = null
- if(href_list["spray"])
- if(myspray)
+ if("Spray bottle")
+ if(!myspray)
+ return
user.put_in_hands(myspray)
to_chat(user, "You take [myspray] from [src].")
myspray = null
- if(href_list["replacer"])
- if(myreplacer)
+ if("Light replacer")
+ if(!myreplacer)
+ return
user.put_in_hands(myreplacer)
to_chat(user, "You take [myreplacer] from [src].")
myreplacer = null
- if(href_list["sign"])
- if(signs)
- var/obj/item/caution/Sign = locate() in src
- if(Sign)
- user.put_in_hands(Sign)
- to_chat(user, "You take \a [Sign] from [src].")
- signs--
- else
- WARNING("Signs ([signs]) didn't match contents")
- signs = 0
+ if("Sign")
+ if(signs <= 0)
+ return
+ user.put_in_hands(sign)
+ to_chat(user, "You take \a [sign] from [src].")
+ signs--
+ else
+ return
update_icon()
- updateUsrDialog()
+/**
+ * check_menu: Checks if we are allowed to interact with a radial menu
+ *
+ * Arguments:
+ * * user The mob interacting with a menu
+ */
+/obj/structure/janitorialcart/proc/check_menu(mob/living/user)
+ if(!istype(user))
+ return FALSE
+ if(user.incapacitated())
+ return FALSE
+ return TRUE
/obj/structure/janitorialcart/update_icon()
cut_overlays()
diff --git a/code/game/objects/structures/ladders.dm b/code/game/objects/structures/ladders.dm
index b3f415ba..f321498b 100644
--- a/code/game/objects/structures/ladders.dm
+++ b/code/game/objects/structures/ladders.dm
@@ -55,7 +55,7 @@
down.update_icon()
up = down = null
-/obj/structure/ladder/update_icon()
+/obj/structure/ladder/update_icon_state()
if(up && down)
icon_state = "ladder11"
@@ -91,8 +91,13 @@
if (!is_ghost && !in_range(src, user))
return
+ var/list/tool_list = list(
+ "Up" = image(icon = 'icons/testing/turf_analysis.dmi', icon_state = "red_arrow", dir = NORTH),
+ "Down" = image(icon = 'icons/testing/turf_analysis.dmi', icon_state = "red_arrow", dir = SOUTH)
+ )
+
if (up && down)
- var/result = alert("Go up or down [src]?", "Ladder", "Up", "Down", "Cancel")
+ var/result = show_radial_menu(user, src, tool_list, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE)
if (!is_ghost && !in_range(src, user))
return // nice try
switch(result)
@@ -112,6 +117,11 @@
if(!is_ghost)
add_fingerprint(user)
+/obj/structure/ladder/proc/check_menu(mob/user)
+ if(user.incapacitated() || !user.Adjacent(src))
+ return FALSE
+ return TRUE
+
/obj/structure/ladder/attack_hand(mob/user)
. = ..()
if(.)
diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm
index 861c122a..f10a1288 100644
--- a/code/modules/cargo/packs.dm
+++ b/code/modules/cargo/packs.dm
@@ -2921,14 +2921,13 @@
crate_name = "security department supply crate"
/datum/supply_pack/costumes_toys/kinkmate
- name = "Kinkmate construction kit"
+ name = "Kinkmate kit"
cost = 2000
contraband = TRUE
contains = list(/obj/item/vending_refill/kink,
/obj/item/vending_refill/kink,
- /obj/item/vending_refill/kink,
- /obj/item/circuitboard/machine/kinkmate)
- crate_name = "Kinkmate construction kit"
+ /obj/item/vending_refill/kink)
+ crate_name = "Kinkmate kit"
//////////////////////////////////////////////////////////////////////////////
//////////////////////////// Miscellaneous ///////////////////////////////////
@@ -3193,7 +3192,6 @@
contraband = TRUE
contains = list(/obj/item/dildo/custom,
/obj/item/dildo/custom,
- /obj/item/circuitboard/machine/kinkmate,
/obj/item/vending_refill/kink,
/obj/item/vending_refill/kink,
/obj/item/vending_refill/kink,
diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm
index c9ff474a..62bcbc3d 100644
--- a/code/modules/clothing/masks/gasmask.dm
+++ b/code/modules/clothing/masks/gasmask.dm
@@ -66,18 +66,25 @@
resistance_flags = FLAMMABLE
actions_types = list(/datum/action/item_action/adjust)
dog_fashion = /datum/dog_fashion/head/clown
+ var/list/clownmask_designs = list()
+
+/obj/item/clothing/mask/gas/clown_hat/Initialize(mapload)
+ .=..()
+ clownmask_designs = list(
+ "True Form" = image(icon = src.icon, icon_state = "clown"),
+ "The Feminist" = image(icon = src.icon, icon_state = "sexyclown"),
+ "The Madman" = image(icon = src.icon, icon_state = "joker"),
+ "The Rainbow Color" = image(icon = src.icon, icon_state = "rainbow")
+ )
/obj/item/clothing/mask/gas/clown_hat/ui_action_click(mob/user)
if(!istype(user) || user.incapacitated())
return
- var/list/options = list()
- options["True Form"] = "clown"
- options["The Feminist"] = "sexyclown"
- options["The Madman"] = "joker"
- options["The Rainbow Color"] ="rainbow"
+ var/static/list/options = list("True Form" = "clown", "The Feminist" = "sexyclown",
+ "The Rainbow Color" = "rainbow", "The Madman" = "joker")
- var/choice = input(user,"To what form do you wish to Morph this mask?","Morph Mask") in options
+ var/choice = show_radial_menu(user,src, clownmask_designs, custom_check = FALSE, radius = 36, require_near = TRUE)
if(src && choice && !user.incapacitated() && in_range(user,src))
icon_state = options[choice]
@@ -86,7 +93,7 @@
var/datum/action/A = X
A.UpdateButtonIcon()
to_chat(user, "Your Clown Mask has now morphed into [choice], all praise the Honkmother!")
- return 1
+ return TRUE
/obj/item/clothing/mask/gas/sexyclown
name = "sexy-clown wig and mask"
@@ -106,19 +113,26 @@
flags_cover = MASKCOVERSEYES
resistance_flags = FLAMMABLE
actions_types = list(/datum/action/item_action/adjust)
+ var/list/mimemask_designs = list()
+
+
+/obj/item/clothing/mask/gas/mime/Initialize(mapload)
+ .=..()
+ mimemask_designs = list(
+ "Blanc" = image(icon = src.icon, icon_state = "mime"),
+ "Excité" = image(icon = src.icon, icon_state = "sexymime"),
+ "Triste" = image(icon = src.icon, icon_state = "sadmime"),
+ "Effrayé" = image(icon = src.icon, icon_state = "scaredmime")
+ )
/obj/item/clothing/mask/gas/mime/ui_action_click(mob/user)
if(!istype(user) || user.incapacitated())
return
- var/list/options = list()
- options["Blanc"] = "mime"
- options["Triste"] = "sadmime"
- options["Effrayé"] = "scaredmime"
- options["Excité"] ="sexymime"
+ var/static/list/options = list("Blanc" = "mime", "Triste" = "sadmime", "Effrayé" = "scaredmime", "Excité" ="sexymime")
- var/choice = input(user,"To what form do you wish to Morph this mask?","Morph Mask") in options
+ var/choice = show_radial_menu(user,src, mimemask_designs, custom_check = FALSE, radius = 36, require_near = TRUE)
if(src && choice && !user.incapacitated() && in_range(user,src))
icon_state = options[choice]
@@ -127,7 +141,7 @@
var/datum/action/A = X
A.UpdateButtonIcon()
to_chat(user, "Your Mime Mask has now morphed into [choice]!")
- return 1
+ return TRUE
/obj/item/clothing/mask/gas/monkeymask
name = "monkey mask"
diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm
index 56504018..3a0d6e87 100644
--- a/code/modules/mining/machine_vending.dm
+++ b/code/modules/mining/machine_vending.dm
@@ -178,9 +178,14 @@
return ..()
/obj/machinery/mineral/equipment_vendor/proc/RedeemVoucher(obj/item/mining_voucher/voucher, mob/redeemer)
- var/items = list("Survival Capsule and Explorer's Webbing", "Resonator Kit", "Minebot Kit", "Extraction and Rescue Kit", "Crusher Kit", "Mining Conscription Kit")
+ var/items = list( "Survival Capsule and Explorer's Webbing" = image(icon = 'icons/obj/storage.dmi', icon_state = "explorerpack"),
+ "Resonator Kit" = image(icon = 'icons/obj/mining.dmi', icon_state = "resonator"),
+ "Minebot Kit" = image(icon = 'icons/mob/aibots.dmi', icon_state = "mining_drone"),
+ "Extraction and Rescue Kit" = image(icon = 'icons/obj/fulton.dmi', icon_state = "extraction_pack"),
+ "Crusher Kit" = image(icon = 'icons/obj/mining.dmi', icon_state = "mining_hammer"),
+ "Mining Conscription Kit" = image(icon = 'icons/obj/storage.dmi', icon_state = "duffel"))
- var/selection = input(redeemer, "Pick your equipment", "Mining Voucher Redemption") as null|anything in items
+ var/selection = show_radial_menu(redeemer, src, items, require_near = TRUE, tooltips = TRUE)
if(!selection || !Adjacent(redeemer) || QDELETED(voucher) || voucher.loc != redeemer)
return
var/drop_location = drop_location()
@@ -349,9 +354,10 @@
new /obj/item/clothing/glasses/meson/prescription(src)
/obj/machinery/mineral/equipment_vendor/proc/RedeemSVoucher(obj/item/suit_voucher/voucher, mob/redeemer)
- var/items = list("Exo-suit", "SEVA suit")
+ var/items = list( "Exo-suit" = image(icon = 'icons/obj/clothing/suits.dmi', icon_state = "exo"),
+ "SEVA suit" = image(icon = 'icons/obj/clothing/suits.dmi', icon_state = "seva"))
- var/selection = input(redeemer, "Pick your suit.", "Suit Voucher Redemption") as null|anything in items
+ var/selection = show_radial_menu(redeemer, src, items, require_near = TRUE, tooltips = TRUE)
if(!selection || !Adjacent(redeemer) || QDELETED(voucher) || voucher.loc != redeemer)
return
var/drop_location = drop_location()
diff --git a/icons/obj/cardboard_cutout.dmi b/icons/obj/cardboard_cutout.dmi
index d9f49dc3..0f479a3b 100644
Binary files a/icons/obj/cardboard_cutout.dmi and b/icons/obj/cardboard_cutout.dmi differ
diff --git a/modular_citadel/code/game/machinery/vending.dm b/modular_citadel/code/game/machinery/vending.dm
index 1ea03dfe..caa7c319 100644
--- a/modular_citadel/code/game/machinery/vending.dm
+++ b/modular_citadel/code/game/machinery/vending.dm
@@ -39,7 +39,6 @@
desc = "A vending machine for all your unmentionable desires."
icon = 'icons/obj/citvending.dmi'
icon_state = "kink"
- circuit = /obj/item/circuitboard/machine/kinkmate
product_slogans = "Kinky!;Sexy!;Check me out, big boy!"
vend_reply = "Have fun, you shameless pervert!"
products = list(
diff --git a/modular_citadel/code/game/objects/items/circuitboards/machine_circuitboards.dm b/modular_citadel/code/game/objects/items/circuitboards/machine_circuitboards.dm
index e70028f5..e98b31fb 100644
--- a/modular_citadel/code/game/objects/items/circuitboards/machine_circuitboards.dm
+++ b/modular_citadel/code/game/objects/items/circuitboards/machine_circuitboards.dm
@@ -1,8 +1,3 @@
-/obj/item/circuitboard/machine/kinkmate
- name = "Kinkmate Vendor (Machine Board)"
- build_path = /obj/machinery/vending/kink
- req_components = list(/obj/item/vending_refill/kink = 3)
-
/obj/item/circuitboard/machine/autoylathe
name = "Autoylathe (Machine Board)"
build_path = /obj/machinery/autoylathe
diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/robot_modules.dm b/modular_citadel/code/modules/mob/living/silicon/robot/robot_modules.dm
index a038476e..468e458f 100644
--- a/modular_citadel/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/modular_citadel/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -27,6 +27,19 @@
var/moduleselect_alternate_icon
var/dogborg = FALSE
+/**
+ * check_menu: Checks if we are allowed to interact with a radial menu
+ *
+ * Arguments:
+ * * user The mob interacting with a menu
+ */
+/obj/item/robot_module/proc/check_menu(mob/user)
+ if(!istype(user))
+ return FALSE
+ if(user.incapacitated() || !user.Adjacent(src))
+ return FALSE
+ return TRUE
+
/obj/item/robot_module/k9
name = "Security K-9 Unit"
basic_modules = list(
@@ -62,13 +75,23 @@
/obj/item/robot_module/k9/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
- var/list/sechoundmodels = list("Default")
- if(R.client && R.client.ckey in list("nezuli"))
- sechoundmodels += "Alina"
- var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in sechoundmodels
- if(!borg_icon)
- return FALSE
- switch(borg_icon)
+ var/static/list/k9_models
+ if(!k9_models)
+ k9_models = list()
+ var/list/L = list("Default" = "k9")
+ for(var/a in L)
+ var/image/wide = image(icon = 'modular_citadel/icons/mob/widerobot.dmi', icon_state = L[a])
+ wide.pixel_x = -16
+ k9_models[a] = wide
+ if(R.client?.ckey == "nezuli")
+ var/image/bad_snowflake = image(icon = 'modular_citadel/icons/mob/widerobot.dmi', icon_state = "alina-sec")
+ bad_snowflake.pixel_x = -16
+ k9_models["Alina"] = bad_snowflake
+ k9_models = sortList(k9_models)
+ var/k9_borg_icon = show_radial_menu(R, R , k9_models, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE, tooltips = TRUE)
+ if(!k9_borg_icon)
+ return
+ switch(k9_borg_icon)
if("Default")
cyborg_base_icon = "k9"
moduleselect_icon = "k9"
@@ -113,13 +136,23 @@
/obj/item/robot_module/medihound/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
- var/list/medhoundmodels = list("Default", "Dark")
- if(R.client && R.client.ckey in list("nezuli"))
- medhoundmodels += "Alina"
- var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in medhoundmodels
- if(!borg_icon)
- return FALSE
- switch(borg_icon)
+ var/static/list/medihound_models
+ if(!medihound_models)
+ medihound_models = list()
+ var/list/L = list("Default" = "medihound", "Dark" = "medihounddark")
+ for(var/a in L)
+ var/image/wide = image(icon = 'modular_citadel/icons/mob/widerobot.dmi', icon_state = L[a])
+ wide.pixel_x = -16
+ medihound_models[a] = wide
+ if(R.client?.ckey == "nezuli")
+ var/image/bad_snowflake = image(icon = 'modular_citadel/icons/mob/widerobot.dmi', icon_state = "alina-med")
+ bad_snowflake.pixel_x = -16
+ medihound_models["Alina"] = bad_snowflake
+ medihound_models = sortList(medihound_models)
+ var/medihound_borg_icon = show_radial_menu(R, R , medihound_models, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE, tooltips = TRUE)
+ if(!medihound_borg_icon)
+ return
+ switch(medihound_borg_icon)
if("Default")
cyborg_base_icon = "medihound"
if("Dark")
@@ -234,10 +267,25 @@
/obj/item/robot_module/medical/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
- var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Default", "Heavy", "Sleek", "Marina", "Droid", "Eyebot", "BootyF", "BootyM", "BootyS", "Haydee")
- if(!borg_icon)
- return FALSE
- switch(borg_icon)
+ var/static/list/med_models
+ if(!med_models)
+ med_models = list(
+ "Default" = image(icon = 'icons/mob/robots.dmi', icon_state = "medical"),
+ "Droid" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "medical"),
+ "Sleek" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "sleekmed"),
+ "Marina" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "marinamed"),
+ "Eyebot" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "eyebotmed"),
+ "Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavymed"),
+ "BootyF" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "bootymedical"),
+ "BootyM" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "bootymedicalM"),
+ "BootyS" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "bootymedicalS"),
+ "Haydee" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "haydeemedical")
+ )
+ med_models = sortList(med_models)
+ var/medi_borg_icon = show_radial_menu(R, R , med_models, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE, tooltips = TRUE)
+ if(!medi_borg_icon)
+ return
+ switch(medi_borg_icon)
if("Default")
cyborg_base_icon = "medical"
if("Droid")
@@ -276,11 +324,23 @@
/obj/item/robot_module/janitor/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
- var/list/janimodels = list("Default", "Sleek", "Marina", "Can", "Heavy", "BootyF", "BootyM", "BootyS")
- var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in janimodels
- if(!borg_icon)
- return FALSE
- switch(borg_icon)
+ var/static/list/jani_models
+ if(!jani_models)
+ jani_models = list(
+ "Default" = image(icon = 'icons/mob/robots.dmi', icon_state = "janitor"),
+ "Sleek" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "sleekjan"),
+ "Marina" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "marinajan"),
+ "Can" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "canjan"),
+ "Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavyres"),
+ "BootyF" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "bootyjanitor"),
+ "BootyM" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "bootyjanitorM"),
+ "BootyS" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "bootyjanitorS")
+ )
+ jani_models = sortList(jani_models)
+ var/jani_borg_icon = show_radial_menu(R, R , jani_models, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE, tooltips = TRUE)
+ if(!jani_borg_icon)
+ return
+ switch(jani_borg_icon)
if("Default")
cyborg_base_icon = "janitor"
if("Marina")
@@ -311,10 +371,20 @@
/obj/item/robot_module/peacekeeper/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
- var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Default", "Spider", "BootyF", "BootyM", "BootyS")
- if(!borg_icon)
- return FALSE
- switch(borg_icon)
+ var/static/list/peace_models
+ if(!peace_models)
+ peace_models = list(
+ "Default" = image(icon = 'icons/mob/robots.dmi', icon_state = "peace"),
+ "Spider" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "whitespider"),
+ "BootyF" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "bootypeace"),
+ "BootyM" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "bootypeaceM"),
+ "BootyS" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "bootypeaceS")
+ )
+ peace_models = sortList(peace_models)
+ var/peace_borg_icon = show_radial_menu(R, R , peace_models, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE, tooltips = TRUE)
+ if(!peace_borg_icon)
+ return
+ switch(peace_borg_icon)
if("Default")
cyborg_base_icon = "peace"
if("Spider")
@@ -336,10 +406,25 @@
/obj/item/robot_module/security/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
- var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Default", "Default - Treads", "Heavy", "Sleek", "Can", "Marina", "Spider", "BootyF", "BootyM", "BootyS")
- if(!borg_icon)
- return FALSE
- switch(borg_icon)
+ var/static/list/sec_models
+ if(!sec_models)
+ sec_models = list(
+ "Default" = image(icon = 'icons/mob/robots.dmi', icon_state = "sec"),
+ "Default - Treads" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "sec-tread"),
+ "Sleek" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "sleeksec"),
+ "Marina" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "marinasec"),
+ "Can" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "cansec"),
+ "Spider" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "spidersec"),
+ "Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavysec"),
+ "BootyF" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "bootysecurity"),
+ "BootyM" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "bootysecurityM"),
+ "BootyS" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "bootysecurityS")
+ )
+ sec_models = sortList(sec_models)
+ var/sec_borg_icon = show_radial_menu(R, R , sec_models, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE, tooltips = TRUE)
+ if(!sec_borg_icon)
+ return
+ switch(sec_borg_icon)
if("Default")
cyborg_base_icon = "sec"
if("Default - Treads")
@@ -377,10 +462,25 @@
/obj/item/robot_module/butler/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
- var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Waitress", "Heavy", "Sleek", "Butler", "Tophat", "Kent", "Bro", "BootyF", "BootyM", "BootyS")
- if(!borg_icon)
- return FALSE
- switch(borg_icon)
+ var/static/list/butler_models
+ if(!butler_models)
+ butler_models = list(
+ "Waitress" = image(icon = 'icons/mob/robots.dmi', icon_state = "service_f"),
+ "Butler" = image(icon = 'icons/mob/robots.dmi', icon_state = "service_m"),
+ "Bro" = image(icon = 'icons/mob/robots.dmi', icon_state = "brobot"),
+ "Kent" = image(icon = 'icons/mob/robots.dmi', icon_state = "kent"),
+ "Tophat" = image(icon = 'icons/mob/robots.dmi', icon_state = "tophat"),
+ "Sleek" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "sleekserv"),
+ "Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavyserv"),
+ "BootyF" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "bootyservice"),
+ "BootyM" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "bootyserviceM"),
+ "BootyS" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "bootyserviceS")
+ )
+ butler_models = sortList(butler_models)
+ var/butler_borg_icon = show_radial_menu(R, R , butler_models, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE, tooltips = TRUE)
+ if(!butler_borg_icon)
+ return
+ switch(butler_borg_icon)
if("Waitress")
cyborg_base_icon = "service_f"
if("Butler")
@@ -419,13 +519,36 @@
/obj/item/robot_module/engineering/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
- var/list/engymodels = list("Default", "Default - Treads", "Heavy", "Sleek", "Marina", "Can", "Spider", "Loader","Handy", "Pup Dozer", "BootyF", "BootyM", "BootyS")
- if(R.client && R.client.ckey in list("nezuli"))
- engymodels += "Alina"
- var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in engymodels
- if(!borg_icon)
- return FALSE
- switch(borg_icon)
+ var/static/list/eng_models
+ if(!eng_models)
+ eng_models = list(
+ "Default" = image(icon = 'icons/mob/robots.dmi', icon_state = "engineer"),
+ "Default - Treads" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "engi-tread"),
+ "Loader" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "loaderborg"),
+ "Handy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "handyeng"),
+ "Sleek" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "sleekeng"),
+ "Can" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "caneng"),
+ "Marina" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "marinaeng"),
+ "Spider" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "spidereng"),
+ "Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavyeng"),
+ "BootyF" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "bootyengineer"),
+ "BootyM" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "bootyengineerM"),
+ "BootyS" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "bootyengineerS")
+ )
+ var/list/L = list("Pupdozer" = "pupdozer")
+ for(var/a in L)
+ var/image/wide = image(icon = 'modular_citadel/icons/mob/widerobot.dmi', icon_state = L[a])
+ wide.pixel_x = -16
+ eng_models[a] = wide
+ if(R.client?.ckey == "nezuli")
+ var/image/bad_snowflake = image(icon = 'modular_citadel/icons/mob/widerobot.dmi', icon_state = "alina-sec")
+ bad_snowflake.pixel_x = -16
+ eng_models["Alina"] = bad_snowflake
+ eng_models = sortList(eng_models)
+ var/eng_borg_icon = show_radial_menu(R, R , eng_models, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE, tooltips = TRUE)
+ if(!eng_borg_icon)
+ return
+ switch(eng_borg_icon)
if("Default")
cyborg_base_icon = "engineer"
if("Default - Treads")
@@ -487,10 +610,26 @@
/obj/item/robot_module/miner/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
- var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Lavaland", "Heavy", "Sleek", "Marina", "Can", "Spider", "Asteroid", "Droid", "BootyF", "BootyM", "BootyS")
- if(!borg_icon)
- return FALSE
- switch(borg_icon)
+ var/static/list/miner_models
+ if(!miner_models)
+ miner_models = list(
+ "Lavaland" = image(icon = 'icons/mob/robots.dmi', icon_state = "miner"),
+ "Asteroid" = image(icon = 'icons/mob/robots.dmi', icon_state = "minerOLD"),
+ "Droid" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "miner"),
+ "Sleek" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "sleekmin"),
+ "Can" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "canmin"),
+ "Marina" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "marinamin"),
+ "Spider" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "spidermin"),
+ "Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavymin"),
+ "BootyF" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "bootyminer"),
+ "BootyM" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "bootyminerM"),
+ "BootyS" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "bootyminerS")
+ )
+ miner_models = sortList(miner_models)
+ var/miner_borg_icon = show_radial_menu(R, R , miner_models, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE, tooltips = TRUE)
+ if(!miner_borg_icon)
+ return
+ switch(miner_borg_icon)
if("Lavaland")
cyborg_base_icon = "miner"
if("Asteroid")
@@ -531,12 +670,21 @@
/obj/item/robot_module/standard/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
- var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Standard", "BootyF", "BootyM", "BootyS")
- if(!borg_icon)
- return FALSE
- switch(borg_icon)
+ var/static/list/stand_models
+ if(!stand_models)
+ stand_models = list(
+ "Standard" = image(icon = 'icons/mob/robots.dmi', icon_state = "robot"),
+ "BootyF" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "bootystandard"),
+ "BootyM" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "bootystandardM"),
+ "BootyS" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "bootystandardS")
+ )
+ stand_models = sortList(stand_models)
+ var/stand_borg_icon = show_radial_menu(R, R , stand_models, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE, tooltips = TRUE)
+ if(!stand_borg_icon)
+ return
+ switch(stand_borg_icon)
if("Standard")
- cyborg_base_icon = "standard"
+ cyborg_base_icon = "robot"
if("BootyF")
cyborg_base_icon = "bootystandard"
cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi'
@@ -553,10 +701,19 @@
/obj/item/robot_module/clown/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
- var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Standard", "BootyF", "BootyM", "BootyS")
- if(!borg_icon)
- return FALSE
- switch(borg_icon)
+ var/static/list/clown_models
+ if(!clown_models)
+ clown_models = list(
+ "Standard" = image(icon = 'icons/mob/robots.dmi', icon_state = "clown"),
+ "BootyF" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "bootystandard"),
+ "BootyM" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "bootystandardM"),
+ "BootyS" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "bootystandardS")
+ )
+ clown_models = sortList(clown_models)
+ var/clown_borg_icon = show_radial_menu(R, R , clown_models, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE, tooltips = TRUE)
+ if(!clown_borg_icon)
+ return
+ switch(clown_borg_icon)
if("Standard")
cyborg_base_icon = "clown"
if("BootyF")
diff --git a/tgstation.dme b/tgstation.dme
index 77824c4a..61d52602 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -168,6 +168,7 @@
#include "code\_globalvars\lists\objects.dm"
#include "code\_globalvars\lists\poll_ignore.dm"
#include "code\_globalvars\lists\typecache.dm"
+#include "code\_globalvars\lists\vending.dm"
#include "code\_js\byjax.dm"
#include "code\_js\menus.dm"
#include "code\_onclick\adjacent.dm"